Commit 2054cf05 authored by Darrick J. Wong's avatar Darrick J. Wong

xfs: factor out a xfs_btree_owner helper

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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
[djwong: break this up into two patches for the owner check]
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
parent 07b7f2e3
......@@ -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));
}
/*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment