Merge tag 'irq-core-2021-02-15' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / fs / xfs / xfs_bmap_util.c
index ef8f705..e7d6831 100644 (file)
@@ -730,7 +730,6 @@ xfs_alloc_file_space(
        int                     rt;
        xfs_trans_t             *tp;
        xfs_bmbt_irec_t         imaps[1], *imapp;
-       uint                    resblks, resrtextents;
        int                     error;
 
        trace_xfs_alloc_file_space(ip);
@@ -760,7 +759,7 @@ xfs_alloc_file_space(
         */
        while (allocatesize_fsb && !error) {
                xfs_fileoff_t   s, e;
-               unsigned int    dblocks, rblocks;
+               unsigned int    dblocks, rblocks, resblks;
 
                /*
                 * Determine space reservations for data/realtime.
@@ -790,8 +789,6 @@ xfs_alloc_file_space(
                 */
                resblks = min_t(xfs_fileoff_t, (e - s), (MAXEXTLEN * nimaps));
                if (unlikely(rt)) {
-                       resrtextents = resblks;
-                       resrtextents /= mp->m_sb.sb_rextsize;
                        dblocks = XFS_DIOSTRAT_SPACE_RES(mp, 0);
                        rblocks = resblks;
                } else {
@@ -802,32 +799,16 @@ xfs_alloc_file_space(
                /*
                 * Allocate and setup the transaction.
                 */
-               error = xfs_trans_alloc(mp, &M_RES(mp)->tr_write, dblocks,
-                               resrtextents, 0, &tp);
-
-               /*
-                * Check for running out of space
-                */
-               if (error) {
-                       /*
-                        * Free the transaction structure.
-                        */
-                       ASSERT(error == -ENOSPC || XFS_FORCED_SHUTDOWN(mp));
-                       break;
-               }
-               xfs_ilock(ip, XFS_ILOCK_EXCL);
-               error = xfs_trans_reserve_quota_nblks(tp, ip, dblocks, rblocks,
-                               false);
+               error = xfs_trans_alloc_inode(ip, &M_RES(mp)->tr_write,
+                               dblocks, rblocks, false, &tp);
                if (error)
-                       goto error;
+                       break;
 
                error = xfs_iext_count_may_overflow(ip, XFS_DATA_FORK,
                                XFS_IEXT_ADD_NOSPLIT_CNT);
                if (error)
                        goto error;
 
-               xfs_trans_ijoin(tp, ip, 0);
-
                error = xfs_bmapi_write(tp, ip, startoffset_fsb,
                                        allocatesize_fsb, alloc_type, 0, imapp,
                                        &nimaps);
@@ -873,18 +854,10 @@ xfs_unmap_extent(
        uint                    resblks = XFS_DIOSTRAT_SPACE_RES(mp, 0);
        int                     error;
 
-       error = xfs_trans_alloc(mp, &M_RES(mp)->tr_write, resblks, 0, 0, &tp);
-       if (error) {
-               ASSERT(error == -ENOSPC || XFS_FORCED_SHUTDOWN(mp));
-               return error;
-       }
-
-       xfs_ilock(ip, XFS_ILOCK_EXCL);
-       error = xfs_trans_reserve_quota_nblks(tp, ip, resblks, 0, false);
+       error = xfs_trans_alloc_inode(ip, &M_RES(mp)->tr_write, resblks, 0,
+                       false, &tp);
        if (error)
-               goto out_trans_cancel;
-
-       xfs_trans_ijoin(tp, ip, 0);
+               return error;
 
        error = xfs_iext_count_may_overflow(ip, XFS_DATA_FORK,
                        XFS_IEXT_PUNCH_HOLE_CNT);