xfs: factor out a xfs_btree_owner helper
authorDarrick J. Wong <djwong@kernel.org>
Thu, 22 Feb 2024 20:35:22 +0000 (12:35 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 22 Feb 2024 20:35:22 +0000 (12:35 -0800)
Split out a helper to calculate the owner for a given btree instead of
duplicating the logic in two places.  While we're at it, make the
bc_ag/bc_ino switch logic depend on the correct geometry flag.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
[djwong: break this up into two patches for the owner check]
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/libxfs/xfs_btree.c

index e1e96f4..b869d6e 100644 (file)
@@ -1222,6 +1222,15 @@ xfs_btree_init_buf(
        bp->b_ops = ops->buf_ops;
 }
 
+static inline __u64
+xfs_btree_owner(
+       struct xfs_btree_cur    *cur)
+{
+       if (cur->bc_ops->geom_flags & XFS_BTGEO_ROOT_IN_INODE)
+               return cur->bc_ino.ip->i_ino;
+       return cur->bc_ag.pag->pag_agno;
+}
+
 void
 xfs_btree_init_block_cur(
        struct xfs_btree_cur    *cur,
@@ -1229,20 +1238,8 @@ xfs_btree_init_block_cur(
        int                     level,
        int                     numrecs)
 {
-       __u64                   owner;
-
-       /*
-        * we can pull the owner from the cursor right now as the different
-        * owners align directly with the pointer size of the btree. This may
-        * change in future, but is safe for current users of the generic btree
-        * code.
-        */
-       if (cur->bc_ops->geom_flags & XFS_BTGEO_LONG_PTRS)
-               owner = cur->bc_ino.ip->i_ino;
-       else
-               owner = cur->bc_ag.pag->pag_agno;
-
-       xfs_btree_init_buf(cur->bc_mp, bp, cur->bc_ops, level, numrecs, owner);
+       xfs_btree_init_buf(cur->bc_mp, bp, cur->bc_ops, level, numrecs,
+                       xfs_btree_owner(cur));
 }
 
 /*