diff options
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_sync.c')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_sync.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index debe2822c930..9ad956052b69 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include "xfs_log.h" | 22 | #include "xfs_log.h" |
23 | #include "xfs_inum.h" | 23 | #include "xfs_inum.h" |
24 | #include "xfs_trans.h" | 24 | #include "xfs_trans.h" |
25 | #include "xfs_trans_priv.h" | ||
25 | #include "xfs_sb.h" | 26 | #include "xfs_sb.h" |
26 | #include "xfs_ag.h" | 27 | #include "xfs_ag.h" |
27 | #include "xfs_mount.h" | 28 | #include "xfs_mount.h" |
@@ -462,6 +463,9 @@ xfs_sync_worker( | |||
462 | else | 463 | else |
463 | xfs_log_force(mp, 0); | 464 | xfs_log_force(mp, 0); |
464 | error = xfs_qm_sync(mp, SYNC_TRYLOCK); | 465 | error = xfs_qm_sync(mp, SYNC_TRYLOCK); |
466 | |||
467 | /* start pushing all the metadata that is currently dirty */ | ||
468 | xfs_ail_push_all(mp->m_ail); | ||
465 | } | 469 | } |
466 | 470 | ||
467 | /* queue us up again */ | 471 | /* queue us up again */ |
@@ -1027,8 +1031,9 @@ xfs_reclaim_inode_shrink( | |||
1027 | 1031 | ||
1028 | mp = container_of(shrink, struct xfs_mount, m_inode_shrink); | 1032 | mp = container_of(shrink, struct xfs_mount, m_inode_shrink); |
1029 | if (nr_to_scan) { | 1033 | if (nr_to_scan) { |
1030 | /* kick background reclaimer */ | 1034 | /* kick background reclaimer and push the AIL */ |
1031 | xfs_syncd_queue_reclaim(mp); | 1035 | xfs_syncd_queue_reclaim(mp); |
1036 | xfs_ail_push_all(mp->m_ail); | ||
1032 | 1037 | ||
1033 | if (!(gfp_mask & __GFP_FS)) | 1038 | if (!(gfp_mask & __GFP_FS)) |
1034 | return -1; | 1039 | return -1; |