diff options
| -rw-r--r-- | fs/xfs/linux-2.6/kmem.h | 2 | ||||
| -rw-r--r-- | fs/xfs/xfs_dfrag.c | 8 | ||||
| -rw-r--r-- | fs/xfs/xfs_fsops.c | 2 |
3 files changed, 7 insertions, 5 deletions
diff --git a/fs/xfs/linux-2.6/kmem.h b/fs/xfs/linux-2.6/kmem.h index af6843c7ee4b..179cbd630f69 100644 --- a/fs/xfs/linux-2.6/kmem.h +++ b/fs/xfs/linux-2.6/kmem.h | |||
| @@ -103,7 +103,7 @@ extern void *kmem_zone_zalloc(kmem_zone_t *, unsigned int __nocast); | |||
| 103 | static inline int | 103 | static inline int |
| 104 | kmem_shake_allow(gfp_t gfp_mask) | 104 | kmem_shake_allow(gfp_t gfp_mask) |
| 105 | { | 105 | { |
| 106 | return (gfp_mask & __GFP_WAIT) != 0; | 106 | return ((gfp_mask & __GFP_WAIT) && (gfp_mask & __GFP_FS)); |
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | #endif /* __XFS_SUPPORT_KMEM_H__ */ | 109 | #endif /* __XFS_SUPPORT_KMEM_H__ */ |
diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c index e6d839bddbf0..7465f9ee125f 100644 --- a/fs/xfs/xfs_dfrag.c +++ b/fs/xfs/xfs_dfrag.c | |||
| @@ -347,13 +347,15 @@ xfs_swap_extents( | |||
| 347 | 347 | ||
| 348 | error = xfs_trans_commit(tp, XFS_TRANS_SWAPEXT); | 348 | error = xfs_trans_commit(tp, XFS_TRANS_SWAPEXT); |
| 349 | 349 | ||
| 350 | out_unlock: | ||
| 351 | xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); | ||
| 352 | xfs_iunlock(tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); | ||
| 353 | out: | 350 | out: |
| 354 | kmem_free(tempifp); | 351 | kmem_free(tempifp); |
| 355 | return error; | 352 | return error; |
| 356 | 353 | ||
| 354 | out_unlock: | ||
| 355 | xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); | ||
| 356 | xfs_iunlock(tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); | ||
| 357 | goto out; | ||
| 358 | |||
| 357 | out_trans_cancel: | 359 | out_trans_cancel: |
| 358 | xfs_trans_cancel(tp, 0); | 360 | xfs_trans_cancel(tp, 0); |
| 359 | goto out_unlock; | 361 | goto out_unlock; |
diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 8379e3bca26c..cbd451bb4848 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c | |||
| @@ -160,7 +160,7 @@ xfs_growfs_data_private( | |||
| 160 | nagcount = new + (nb_mod != 0); | 160 | nagcount = new + (nb_mod != 0); |
| 161 | if (nb_mod && nb_mod < XFS_MIN_AG_BLOCKS) { | 161 | if (nb_mod && nb_mod < XFS_MIN_AG_BLOCKS) { |
| 162 | nagcount--; | 162 | nagcount--; |
| 163 | nb = nagcount * mp->m_sb.sb_agblocks; | 163 | nb = (xfs_rfsblock_t)nagcount * mp->m_sb.sb_agblocks; |
| 164 | if (nb < mp->m_sb.sb_dblocks) | 164 | if (nb < mp->m_sb.sb_dblocks) |
| 165 | return XFS_ERROR(EINVAL); | 165 | return XFS_ERROR(EINVAL); |
| 166 | } | 166 | } |
