diff options
author | Dave Chinner <david@fromorbit.com> | 2009-04-06 12:44:54 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@brick.lst.de> | 2009-04-06 12:44:54 -0400 |
commit | a8d770d987ee20b59fba6c37d7f0f2a351913c4b (patch) | |
tree | 3da37edba537ca5860eae97f47fb1204bc5a55b3 /fs/xfs/xfs_iomap.c | |
parent | 9d7fef74b23fe57803c5f71fab11630d9ec2cb4b (diff) |
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.c | 2 |
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( | |||
361 | return 0; | 361 | return 0; |
362 | case 2: | 362 | case 2: |
363 | xfs_iunlock(ip, XFS_ILOCK_EXCL); | 363 | xfs_iunlock(ip, XFS_ILOCK_EXCL); |
364 | xfs_flush_device(ip); | 364 | xfs_flush_inodes(ip); |
365 | xfs_ilock(ip, XFS_ILOCK_EXCL); | 365 | xfs_ilock(ip, XFS_ILOCK_EXCL); |
366 | *fsynced = 3; | 366 | *fsynced = 3; |
367 | return 0; | 367 | return 0; |