]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfs: move q_qlock locking into xqcheck_compare_dquot
authorChristoph Hellwig <hch@lst.de>
Mon, 10 Nov 2025 13:23:06 +0000 (14:23 +0100)
committerCarlos Maiolino <cem@kernel.org>
Tue, 11 Nov 2025 10:45:58 +0000 (11:45 +0100)
Instead of having both callers do it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
fs/xfs/scrub/quotacheck.c

index 20220afd90f17300529582f8f6d309eca32b515d..d412a8359784ee2038d7975ced315e7c4de93464 100644 (file)
@@ -563,6 +563,7 @@ xqcheck_compare_dquot(
                return -ECANCELED;
        }
 
+       mutex_lock(&dq->q_qlock);
        mutex_lock(&xqc->lock);
        error = xfarray_load_sparse(counts, dq->q_id, &xcdq);
        if (error)
@@ -589,7 +590,9 @@ xqcheck_compare_dquot(
                xchk_set_incomplete(xqc->sc);
                error = -ECANCELED;
        }
+out_unlock:
        mutex_unlock(&xqc->lock);
+       mutex_unlock(&dq->q_qlock);
        if (error)
                return error;
 
@@ -597,10 +600,6 @@ xqcheck_compare_dquot(
                return -ECANCELED;
 
        return 0;
-
-out_unlock:
-       mutex_unlock(&xqc->lock);
-       return error;
 }
 
 /*
@@ -635,9 +634,7 @@ xqcheck_walk_observations(
                if (error)
                        return error;
 
-               mutex_lock(&dq->q_qlock);
                error = xqcheck_compare_dquot(xqc, dqtype, dq);
-               mutex_unlock(&dq->q_qlock);
                xfs_qm_dqrele(dq);
                if (error)
                        return error;
@@ -675,9 +672,7 @@ xqcheck_compare_dqtype(
        /* Compare what we observed against the actual dquots. */
        xchk_dqiter_init(&cursor, sc, dqtype);
        while ((error = xchk_dquot_iter(&cursor, &dq)) == 1) {
-               mutex_lock(&dq->q_qlock);
                error = xqcheck_compare_dquot(xqc, dqtype, dq);
-               mutex_unlock(&dq->q_qlock);
                xfs_qm_dqrele(dq);
                if (error)
                        break;