diff options
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_sync.c')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_sync.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/fs/xfs/linux-2.6/xfs_sync.c b/fs/xfs/linux-2.6/xfs_sync.c index 3e898a48122d..8ecad5ff9f9b 100644 --- a/fs/xfs/linux-2.6/xfs_sync.c +++ b/fs/xfs/linux-2.6/xfs_sync.c | |||
@@ -267,6 +267,16 @@ xfs_sync_inode_attr( | |||
267 | 267 | ||
268 | error = xfs_iflush(ip, flags); | 268 | error = xfs_iflush(ip, flags); |
269 | 269 | ||
270 | /* | ||
271 | * We don't want to try again on non-blocking flushes that can't run | ||
272 | * again immediately. If an inode really must be written, then that's | ||
273 | * what the SYNC_WAIT flag is for. | ||
274 | */ | ||
275 | if (error == EAGAIN) { | ||
276 | ASSERT(!(flags & SYNC_WAIT)); | ||
277 | error = 0; | ||
278 | } | ||
279 | |||
270 | out_unlock: | 280 | out_unlock: |
271 | xfs_iunlock(ip, XFS_ILOCK_SHARED); | 281 | xfs_iunlock(ip, XFS_ILOCK_SHARED); |
272 | return error; | 282 | return error; |
@@ -1022,13 +1032,14 @@ xfs_reclaim_inodes( | |||
1022 | static int | 1032 | static int |
1023 | xfs_reclaim_inode_shrink( | 1033 | xfs_reclaim_inode_shrink( |
1024 | struct shrinker *shrink, | 1034 | struct shrinker *shrink, |
1025 | int nr_to_scan, | 1035 | struct shrink_control *sc) |
1026 | gfp_t gfp_mask) | ||
1027 | { | 1036 | { |
1028 | struct xfs_mount *mp; | 1037 | struct xfs_mount *mp; |
1029 | struct xfs_perag *pag; | 1038 | struct xfs_perag *pag; |
1030 | xfs_agnumber_t ag; | 1039 | xfs_agnumber_t ag; |
1031 | int reclaimable; | 1040 | int reclaimable; |
1041 | int nr_to_scan = sc->nr_to_scan; | ||
1042 | gfp_t gfp_mask = sc->gfp_mask; | ||
1032 | 1043 | ||
1033 | mp = container_of(shrink, struct xfs_mount, m_inode_shrink); | 1044 | mp = container_of(shrink, struct xfs_mount, m_inode_shrink); |
1034 | if (nr_to_scan) { | 1045 | if (nr_to_scan) { |