summaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_iomap.c
diff options
context:
space:
mode:
authorDave Chinner <david@fromorbit.com>2009-04-06 18:44:54 +0200
committerChristoph Hellwig <hch@brick.lst.de>2009-04-06 18:44:54 +0200
commita8d770d987ee20b59fba6c37d7f0f2a351913c4b (patch)
tree3da37edba537ca5860eae97f47fb1204bc5a55b3 /fs/xfs/xfs_iomap.c
parent9d7fef74b23fe57803c5f71fab11630d9ec2cb4b (diff)
downloadlinux-stable-a8d770d987ee20b59fba6c37d7f0f2a351913c4b.tar.gz
linux-stable-a8d770d987ee20b59fba6c37d7f0f2a351913c4b.tar.bz2
linux-stable-a8d770d987ee20b59fba6c37d7f0f2a351913c4b.zip
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>
Diffstat (limited to 'fs/xfs/xfs_iomap.c')
-rw-r--r--fs/xfs/xfs_iomap.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c
index 08ce72316bfe..8b97d82d7a88 100644
--- a/fs/xfs/xfs_iomap.c
+++ b/fs/xfs/xfs_iomap.c
@@ -361,7 +361,7 @@ xfs_flush_space(
return 0;
case 2:
xfs_iunlock(ip, XFS_ILOCK_EXCL);
- xfs_flush_device(ip);
+ xfs_flush_inodes(ip);
xfs_ilock(ip, XFS_ILOCK_EXCL);
*fsynced = 3;
return 0;