1
linux/fs/xfs/linux-2.6
Dave Chinner 57817c6822 xfs: reclaim all inodes by background tree walks
We cannot do direct inode reclaim without taking the flush lock to
ensure that we do not reclaim an inode under IO. We check the inode
is clean before doing direct reclaim, but this is not good enough
because the inode flush code marks the inode clean once it has
copied the in-core dirty state to the backing buffer.

It is the flush lock that determines whether the inode is still
under IO, even though it is marked clean, and the inode is still
required at IO completion so we can't reclaim it even though it is
clean in core. Hence the requirement that we need to take the flush
lock even on clean inodes because this guarantees that the inode
writeback IO has completed and it is safe to reclaim the inode.

With delayed write inode flushing, we coul dend up waiting a long
time on the flush lock even for a clean inode. The background
reclaim already handles this efficiently, so avoid all the problems
by killing the direct reclaim path altogether.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Alex Elder <aelder@sgi.com>
2010-01-15 13:44:44 -06:00
..
kmem.c Fix congestion_wait() sync/async vs read/write confusion 2009-07-10 20:31:53 +02:00
kmem.h
mrlock.h
sv.h
time.h
xfs_acl.c xfs: fix timestamp handling in xfs_setattr 2010-01-10 12:21:58 -06:00
xfs_aops.c cleanup blockdev_direct_IO locking 2009-12-16 12:16:49 -05:00
xfs_aops.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_buf.c XFS: Free buffer pages array unconditionally 2009-12-16 13:41:20 -06:00
xfs_buf.h xfs: improve metadata I/O merging in the elevator 2009-12-16 13:41:19 -06:00
xfs_cred.h
xfs_dmapi_priv.h
xfs_export.c
xfs_export.h
xfs_file.c xfs: remove IO_ISAIO 2009-12-11 15:11:21 -06:00
xfs_fs_subr.c xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_fs_subr.h
xfs_globals.c
xfs_globals.h
xfs_ioctl32.c xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_ioctl32.h
xfs_ioctl.c xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_ioctl.h
xfs_iops.c kill I_LOCK 2009-12-17 11:03:25 -05:00
xfs_iops.h
xfs_linux.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_lrw.c xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_lrw.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_quotaops.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/fs/xfs/xfs 2009-10-31 12:12:49 -07:00
xfs_stats.c xfs: switch to seq_file 2009-09-15 12:29:24 -05:00
xfs_stats.h
xfs_super.c xfs: reclaim all inodes by background tree walks 2010-01-15 13:44:44 -06:00
xfs_super.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_sync.c xfs: Avoid inodes in reclaim when flushing from inode cache 2010-01-15 13:44:21 -06:00
xfs_sync.h xfs: reclaim inodes under a write lock 2010-01-15 13:43:55 -06:00
xfs_sysctl.c sysctl: Drop & in front of every proc_handler. 2009-11-18 08:37:40 -08:00
xfs_sysctl.h
xfs_trace.c xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_trace.h xfs: Ensure we force all busy extents in range to disk 2010-01-10 12:22:02 -06:00
xfs_version.h
xfs_vnode.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_xattr.c sanitize xattr handler prototypes 2009-12-16 12:16:49 -05:00