diff options
Diffstat (limited to 'fs/xfs/xfs_mount.c')
-rw-r--r-- | fs/xfs/xfs_mount.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 5061149b2cc4..6afaaeb2950a 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c | |||
@@ -1468,7 +1468,18 @@ xfs_unmountfs( | |||
1468 | * need to force the log first. | 1468 | * need to force the log first. |
1469 | */ | 1469 | */ |
1470 | xfs_log_force(mp, XFS_LOG_SYNC); | 1470 | xfs_log_force(mp, XFS_LOG_SYNC); |
1471 | xfs_reclaim_inodes(mp, XFS_IFLUSH_ASYNC); | 1471 | |
1472 | /* | ||
1473 | * Do a delwri reclaim pass first so that as many dirty inodes are | ||
1474 | * queued up for IO as possible. Then flush the buffers before making | ||
1475 | * a synchronous path to catch all the remaining inodes are reclaimed. | ||
1476 | * This makes the reclaim process as quick as possible by avoiding | ||
1477 | * synchronous writeout and blocking on inodes already in the delwri | ||
1478 | * state as much as possible. | ||
1479 | */ | ||
1480 | xfs_reclaim_inodes(mp, 0); | ||
1481 | XFS_bflush(mp->m_ddev_targp); | ||
1482 | xfs_reclaim_inodes(mp, SYNC_WAIT); | ||
1472 | 1483 | ||
1473 | xfs_qm_unmount(mp); | 1484 | xfs_qm_unmount(mp); |
1474 | 1485 | ||