Re: [PATCH 4/4] xfs: clean up icreate quota reservation calls
From: Brian Foster <hidden>
Date: 2021-01-26 05:19:01
On Sat, Jan 23, 2021 at 10:51:57AM -0800, Darrick J. Wong wrote:
From: Darrick J. Wong <djwong@kernel.org> Create a proper helper so that inode creation calls can reserve quota with a dedicated function. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de> --- fs/xfs/xfs_inode.c | 8 ++++---- fs/xfs/xfs_quota.h | 15 +++++++++++---- fs/xfs/xfs_symlink.c | 4 ++-- fs/xfs/xfs_trans_dquot.c | 21 +++++++++++++++++++++ 4 files changed, 38 insertions(+), 10 deletions(-)
...
quoted hunk ↗ jump to hunk
diff --git a/fs/xfs/xfs_trans_dquot.c b/fs/xfs/xfs_trans_dquot.c index 28b8ac701919..3315498a6fa1 100644 --- a/fs/xfs/xfs_trans_dquot.c +++ b/fs/xfs/xfs_trans_dquot.c@@ -804,6 +804,27 @@ xfs_trans_reserve_quota_nblks( nblks, ninos, flags); } +/* Change the quota reservations for an inode creation activity. */ +int +xfs_trans_reserve_quota_icreate( + struct xfs_trans *tp, + struct xfs_inode *dp, + struct xfs_dquot *udqp, + struct xfs_dquot *gdqp, + struct xfs_dquot *pdqp, + int64_t nblks) +{ + struct xfs_mount *mp = dp->i_mount; + + if (!XFS_IS_QUOTA_RUNNING(mp) || !XFS_IS_QUOTA_ON(mp)) + return 0; + + ASSERT(!xfs_is_quota_inode(&mp->m_sb, dp->i_ino)); + + return xfs_trans_reserve_quota_bydquots(tp, dp->i_mount, udqp, gdqp, + pdqp, nblks, 1, XFS_QMOPT_RES_REGBLKS);
Considering we can get mp from tp (and it looks like we always pass tp), is it worth even passing in dp for an (unlikely) assert? That seems a little odd anyways since nothing down in this path actually uses or cares about the parent inode. Also, no need to pass dp->i_mount above if we've already defined mp, at least. Brian
+} + /* * This routine is called to allocate a quotaoff log item. */