]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
xfs: simplify usage of the rcur local variable in xfs_rmap_finish_one
authorChristoph Hellwig <hch@lst.de>
Tue, 2 Jul 2024 18:23:03 +0000 (11:23 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 2 Jul 2024 18:37:04 +0000 (11:37 -0700)
Only update rcur when we know the final *pcur value.

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

index 0ee97f1698e9dc8e9b76abc65540098f945955e4..a5a0fa6a5b5dc33c3957c78cabf0e0aadbdaa34e 100644 (file)
@@ -2570,7 +2570,7 @@ xfs_rmap_finish_one(
 {
        struct xfs_owner_info           oinfo;
        struct xfs_mount                *mp = tp->t_mountp;
-       struct xfs_btree_cur            *rcur;
+       struct xfs_btree_cur            *rcur = *pcur;
        struct xfs_buf                  *agbp = NULL;
        xfs_agblock_t                   bno;
        bool                            unwritten;
@@ -2585,7 +2585,6 @@ xfs_rmap_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) {
                xfs_btree_del_cursor(rcur, 0);
                rcur = NULL;
@@ -2607,9 +2606,8 @@ xfs_rmap_finish_one(
                        return -EFSCORRUPTED;
                }
 
-               rcur = xfs_rmapbt_init_cursor(mp, tp, agbp, ri->ri_pag);
+               *pcur = rcur = xfs_rmapbt_init_cursor(mp, tp, agbp, ri->ri_pag);
        }
-       *pcur = rcur;
 
        xfs_rmap_ino_owner(&oinfo, ri->ri_owner, ri->ri_whichfork,
                        ri->ri_bmap.br_startoff);