xfsaild causing too many wakeups
Idle state is not being detected properly by the xfsaild push code.
The current idle state is detected by an empty list which may never
happen with mostly idle filesystem or one using lazy superblock
counters. A single dirty item in the list that exists beyond the
push target can result repeated looping attempting to push
up to the target because it fails to check if the push target
has been acheived or not.
Fix by considering a dirty list with everything past the target
as an idle state and set the timeout appropriately.
Date: Fri Feb 22 15:15:03 AEDT 2008
Workarea: chook.melbourne.sgi.com:/build/dgc/isms/2.6.x-xfs
Inspected by: hch@xxxxxxxxxxxxx
The following file(s) were checked into:
longdrop.melbourne.sgi.com:/isms/linux/2.6.x-xfs-melb
Modid: xfs-linux-melb:xfs-kern:30532a
fs/xfs/xfs_trans_ail.c - 1.85 - changed
http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_trans_ail.c.diff?r1=text&tr1=1.85&r2=text&tr2=1.84&f=h
- Move the aild to idle state if we have pushed past the target
we have been given.
|