xfs: use xfs_sync_inodes() for device flushing
authorDave Chinner <david@fromorbit.com>
Mon, 6 Apr 2009 16:44:54 +0000 (18:44 +0200)
committerChristoph Hellwig <hch@brick.lst.de>
Mon, 6 Apr 2009 16:44:54 +0000 (18:44 +0200)
commita8d770d987ee20b59fba6c37d7f0f2a351913c4b
tree3da37edba537ca5860eae97f47fb1204bc5a55b3
parent9d7fef74b23fe57803c5f71fab11630d9ec2cb4b
xfs: use xfs_sync_inodes() for device flushing

Currently xfs_device_flush calls sync_blockdev() which is
a no-op for XFS as all it's metadata is held in a different
address to the one sync_blockdev() works on.

Call xfs_sync_inodes() instead to flush all the delayed
allocation blocks out. To do this as efficiently as possible,
do it via two passes - one to do an async flush of all the
dirty blocks and a second to wait for all the IO to complete.
This requires some modification to the xfs-sync_inodes_ag()
flush code to do efficiently.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/linux-2.6/xfs_fs_subr.c
fs/xfs/linux-2.6/xfs_sync.c
fs/xfs/linux-2.6/xfs_sync.h
fs/xfs/xfs_iomap.c
fs/xfs/xfs_mount.h