diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/xfs_vnodeops.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 79b522779aa4..401cb00a55d6 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c | |||
@@ -4434,9 +4434,12 @@ xfs_free_file_space( | |||
4434 | while (!error && !done) { | 4434 | while (!error && !done) { |
4435 | 4435 | ||
4436 | /* | 4436 | /* |
4437 | * allocate and setup the transaction | 4437 | * allocate and setup the transaction. Allow this |
4438 | * transaction to dip into the reserve blocks to ensure | ||
4439 | * the freeing of the space succeeds at ENOSPC. | ||
4438 | */ | 4440 | */ |
4439 | tp = xfs_trans_alloc(mp, XFS_TRANS_DIOSTRAT); | 4441 | tp = xfs_trans_alloc(mp, XFS_TRANS_DIOSTRAT); |
4442 | tp->t_flags |= XFS_TRANS_RESERVE; | ||
4440 | error = xfs_trans_reserve(tp, | 4443 | error = xfs_trans_reserve(tp, |
4441 | resblks, | 4444 | resblks, |
4442 | XFS_WRITE_LOG_RES(mp), | 4445 | XFS_WRITE_LOG_RES(mp), |