xfs: reserve quota inode transaction space only when needed
authorKaixu Xia <kaixuxia@tencent.com>
Thu, 23 Apr 2020 04:54:28 +0000 (21:54 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Mon, 4 May 2020 16:03:14 +0000 (09:03 -0700)
We share an inode between gquota and pquota with the older
superblock that doesn't have separate pquotino, and for the
need_alloc == false case we don't need to call xfs_dir_ialloc()
function, so add the check if reserved free disk blocks is
needed.

Signed-off-by: Kaixu Xia <kaixuxia@tencent.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/xfs_qm.c

index 6678baab37de66c0e34f069a30a66c4206837a11..b684b0410a52730c55a2f168586efc9e6aa934a6 100644 (file)
@@ -780,7 +780,8 @@ xfs_qm_qino_alloc(
        }
 
        error = xfs_trans_alloc(mp, &M_RES(mp)->tr_create,
-                       XFS_QM_QINOCREATE_SPACE_RES(mp), 0, 0, &tp);
+                       need_alloc ? XFS_QM_QINOCREATE_SPACE_RES(mp) : 0,
+                       0, 0, &tp);
        if (error)
                return error;