xfs: always use xfs_dquot_type when extracting type from a dquot
authorDarrick J. Wong <darrick.wong@oracle.com>
Thu, 16 Jul 2020 00:51:47 +0000 (17:51 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Wed, 29 Jul 2020 03:24:14 +0000 (20:24 -0700)
Always use the xfs_dquot_type helper to extract the quota type from an
incore dquot.  This moves responsibility for filtering internal state
information and whatnot to anybody passing around a struct xfs_dquot.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/xfs_dquot.c
fs/xfs/xfs_dquot.h

index ce946d53bb613c654569eb507d3cad78a14f8eec..5a60238fcdbafe5e957641c059f2385e45296532 100644 (file)
@@ -273,14 +273,15 @@ xfs_dquot_disk_alloc(
        struct xfs_trans        *tp = *tpp;
        struct xfs_mount        *mp = tp->t_mountp;
        struct xfs_buf          *bp;
-       struct xfs_inode        *quotip = xfs_quota_inode(mp, dqp->dq_flags);
+       uint                    qtype = xfs_dquot_type(dqp);
+       struct xfs_inode        *quotip = xfs_quota_inode(mp, qtype);
        int                     nmaps = 1;
        int                     error;
 
        trace_xfs_dqalloc(dqp);
 
        xfs_ilock(quotip, XFS_ILOCK_EXCL);
-       if (!xfs_this_quota_on(dqp->q_mount, dqp->dq_flags)) {
+       if (!xfs_this_quota_on(dqp->q_mount, qtype)) {
                /*
                 * Return if this type of quotas is turned off while we didn't
                 * have an inode lock
@@ -317,8 +318,7 @@ xfs_dquot_disk_alloc(
         * Make a chunk of dquots out of this buffer and log
         * the entire thing.
         */
-       xfs_qm_init_dquot_blk(tp, mp, dqp->q_id,
-                             dqp->dq_flags & XFS_DQTYPE_REC_MASK, bp);
+       xfs_qm_init_dquot_blk(tp, mp, dqp->q_id, qtype, bp);
        xfs_buf_set_ref(bp, XFS_DQUOT_REF);
 
        /*
@@ -365,13 +365,14 @@ xfs_dquot_disk_read(
 {
        struct xfs_bmbt_irec    map;
        struct xfs_buf          *bp;
-       struct xfs_inode        *quotip = xfs_quota_inode(mp, dqp->dq_flags);
+       uint                    qtype = xfs_dquot_type(dqp);
+       struct xfs_inode        *quotip = xfs_quota_inode(mp, qtype);
        uint                    lock_mode;
        int                     nmaps = 1;
        int                     error;
 
        lock_mode = xfs_ilock_data_map_shared(quotip);
-       if (!xfs_this_quota_on(mp, dqp->dq_flags)) {
+       if (!xfs_this_quota_on(mp, qtype)) {
                /*
                 * Return if this type of quotas is turned off while we
                 * didn't have the quota inode lock.
@@ -487,7 +488,7 @@ xfs_dquot_from_disk(
         * Ensure that we got the type and ID we were looking for.
         * Everything else was checked by the dquot buffer verifier.
         */
-       if ((ddqp->d_flags & XFS_DQTYPE_REC_MASK) != dqp->dq_flags ||
+       if ((ddqp->d_flags & XFS_DQTYPE_REC_MASK) != xfs_dquot_type(dqp) ||
            be32_to_cpu(ddqp->d_id) != dqp->q_id) {
                xfs_alert_tag(bp->b_mount, XFS_PTAG_VERIFIER_ERROR,
                          "Metadata corruption detected at %pS, quota %u",
index 60bccb5f74356d0a78b0b6b31910a6b1947d384c..07e18ce33560d2cc26641a82c43cd7270776b83e 100644 (file)
@@ -167,7 +167,7 @@ static inline bool
 xfs_dquot_is_enforced(
        const struct xfs_dquot  *dqp)
 {
-       switch (dqp->dq_flags & XFS_DQTYPE_REC_MASK) {
+       switch (xfs_dquot_type(dqp)) {
        case XFS_DQTYPE_USER:
                return XFS_IS_UQUOTA_ENFORCED(dqp->q_mount);
        case XFS_DQTYPE_GROUP: