[XFS] Allow punching holes to free space when at ENOSPC
[linux-2.6-block.git] / fs / xfs / xfs_vnodeops.c
index 79b522779aa485dca1bccbf101d5585f6c2a1d92..401cb00a55d605580f184cb62ff1d43e6ff54d7e 100644 (file)
@@ -4434,9 +4434,12 @@ xfs_free_file_space(
        while (!error && !done) {
 
                /*
-                * allocate and setup the transaction
+                * allocate and setup the transaction. Allow this
+                * transaction to dip into the reserve blocks to ensure
+                * the freeing of the space succeeds at ENOSPC.
                 */
                tp = xfs_trans_alloc(mp, XFS_TRANS_DIOSTRAT);
+               tp->t_flags |= XFS_TRANS_RESERVE;
                error = xfs_trans_reserve(tp,
                                          resblks,
                                          XFS_WRITE_LOG_RES(mp),