xfs: turn the allocbt cursor active field into a btree flag
authorChristoph Hellwig <hch@lst.de>
Thu, 22 Feb 2024 20:35:15 +0000 (12:35 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 22 Feb 2024 20:35:15 +0000 (12:35 -0800)
Add a new XFS_BTREE_ALLOCBT_ACTIVE flag to replace the active field.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/libxfs/xfs_alloc.c
fs/xfs/libxfs/xfs_alloc_btree.c
fs/xfs/libxfs/xfs_btree.h

index a40a5e43e94c8e4ed451a28d6336db0a758fd88a..91553a54dc30aa1b6de5d85e4cff06a7b46bce2f 100644 (file)
@@ -165,7 +165,10 @@ xfs_alloc_lookup(
        cur->bc_rec.a.ar_startblock = bno;
        cur->bc_rec.a.ar_blockcount = len;
        error = xfs_btree_lookup(cur, dir, stat);
-       cur->bc_ag.abt.active = (*stat == 1);
+       if (*stat == 1)
+               cur->bc_flags |= XFS_BTREE_ALLOCBT_ACTIVE;
+       else
+               cur->bc_flags &= ~XFS_BTREE_ALLOCBT_ACTIVE;
        return error;
 }
 
@@ -214,7 +217,7 @@ static inline bool
 xfs_alloc_cur_active(
        struct xfs_btree_cur    *cur)
 {
-       return cur && cur->bc_ag.abt.active;
+       return cur && (cur->bc_flags & XFS_BTREE_ALLOCBT_ACTIVE);
 }
 
 /*
@@ -992,7 +995,7 @@ xfs_alloc_cur_check(
                deactivate = true;
 out:
        if (deactivate)
-               cur->bc_ag.abt.active = false;
+               cur->bc_flags &= ~XFS_BTREE_ALLOCBT_ACTIVE;
        trace_xfs_alloc_cur_check(args->mp, cur->bc_btnum, bno, len, diff,
                                  *new);
        return 0;
@@ -1367,7 +1370,7 @@ xfs_alloc_walk_iter(
                if (error)
                        return error;
                if (i == 0)
-                       cur->bc_ag.abt.active = false;
+                       cur->bc_flags &= ~XFS_BTREE_ALLOCBT_ACTIVE;
 
                if (count > 0)
                        count--;
@@ -1481,7 +1484,7 @@ xfs_alloc_ag_vextent_locality(
                if (error)
                        return error;
                if (i) {
-                       acur->cnt->bc_ag.abt.active = true;
+                       acur->cnt->bc_flags |= XFS_BTREE_ALLOCBT_ACTIVE;
                        fbcur = acur->cnt;
                        fbinc = false;
                }
index 0ed1477187bca35190a392345bc3c86d9e35c036..91485b642471d400e8583733e07ebe3192311f72 100644 (file)
@@ -523,7 +523,6 @@ xfs_allocbt_init_common(
                                mp->m_alloc_maxlevels, xfs_allocbt_cur_cache);
                cur->bc_statoff = XFS_STATS_CALC_INDEX(xs_abtb_2);
        }
-       cur->bc_ag.abt.active = false;
 
        cur->bc_ag.pag = xfs_perag_hold(pag);
 
index 17a0324a304ed1b04c6422a40911b0de1761868e..b36530e56df93e52d297402052612c484b4442dd 100644 (file)
@@ -236,9 +236,6 @@ struct xfs_btree_cur_ag {
                        unsigned int    nr_ops; /* # record updates */
                        unsigned int    shape_changes;  /* # of extent splits */
                } refc;
-               struct {
-                       bool            active; /* allocation cursor state */
-               } abt;
        };
 };
 
@@ -321,6 +318,9 @@ xfs_btree_cur_sizeof(unsigned int nlevels)
 /* For extent swap, ignore owner check in verifier (only for bmbt btrees) */
 #define        XFS_BTREE_BMBT_INVALID_OWNER    (1U << 2)
 
+/* Cursor is active (only for allocbt btrees) */
+#define        XFS_BTREE_ALLOCBT_ACTIVE        (1U << 3)
+
 #define        XFS_BTREE_NOERROR       0
 #define        XFS_BTREE_ERROR         1