]> www.infradead.org Git - users/hch/xfsprogs.git/commitdiff
xfs: simplify usage of the rcur local variable in xfs_refcount_finish_one
authorDarrick J. Wong <djwong@kernel.org>
Wed, 3 Jul 2024 21:21:42 +0000 (14:21 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 30 Jul 2024 00:13:15 +0000 (17:13 -0700)
Only update rcur when we know the final *pcur value.

Inspired-by: Christoph Hellwig <hch@lst.de>
[djwong: don't leave the caller with a dangling ref]
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
libxfs/xfs_refcount.c

index 4b9a8be36301911baf4157f1c660599ee8f862c1..d0a057f5cba6737e8ef67cd57ae5e3960c9a76c7 100644 (file)
@@ -1340,7 +1340,7 @@ xfs_refcount_finish_one(
        struct xfs_btree_cur            **pcur)
 {
        struct xfs_mount                *mp = tp->t_mountp;
-       struct xfs_btree_cur            *rcur;
+       struct xfs_btree_cur            *rcur = *pcur;
        struct xfs_buf                  *agbp = NULL;
        int                             error = 0;
        xfs_agblock_t                   bno;
@@ -1358,7 +1358,6 @@ xfs_refcount_finish_one(
         * If we haven't gotten a cursor or the cursor AG doesn't match
         * the startblock, get one now.
         */
-       rcur = *pcur;
        if (rcur != NULL && rcur->bc_ag.pag != ri->ri_pag) {
                nr_ops = rcur->bc_refc.nr_ops;
                shape_changes = rcur->bc_refc.shape_changes;
@@ -1372,11 +1371,11 @@ xfs_refcount_finish_one(
                if (error)
                        return error;
 
-               rcur = xfs_refcountbt_init_cursor(mp, tp, agbp, ri->ri_pag);
+               *pcur = rcur = xfs_refcountbt_init_cursor(mp, tp, agbp,
+                                                         ri->ri_pag);
                rcur->bc_refc.nr_ops = nr_ops;
                rcur->bc_refc.shape_changes = shape_changes;
        }
-       *pcur = rcur;
 
        switch (ri->ri_type) {
        case XFS_REFCOUNT_INCREASE: