Commit ec793e69 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Darrick J. Wong
Browse files

xfs: remove xfs_btnum_t



The last checks for bc_btnum can be replaced with helpers that check
the btree ops.  This allows adding new btrees to XFS without having
to update a global enum.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
[djwong: complete the ops predicates]
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
parent fbeef4e0
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -918,7 +918,7 @@ xfs_alloc_cur_check(
	bool			busy;
	unsigned		busy_gen = 0;
	bool			deactivate = false;
	bool			isbnobt = cur->bc_btnum == XFS_BTNUM_BNO;
	bool			isbnobt = xfs_btree_is_bno(cur->bc_ops);

	*new = 0;

@@ -4026,7 +4026,7 @@ xfs_alloc_query_range(
	union xfs_btree_irec			high_brec = { .a = *high_rec };
	struct xfs_alloc_query_range_info	query = { .priv = priv, .fn = fn };

	ASSERT(cur->bc_btnum == XFS_BTNUM_BNO);
	ASSERT(xfs_btree_is_bno(cur->bc_ops));
	return xfs_btree_query_range(cur, &low_brec, &high_brec,
			xfs_alloc_query_range_helper, &query);
}
@@ -4040,7 +4040,7 @@ xfs_alloc_query_all(
{
	struct xfs_alloc_query_range_info	query;

	ASSERT(cur->bc_btnum == XFS_BTNUM_BNO);
	ASSERT(xfs_btree_is_bno(cur->bc_ops));
	query.priv = priv;
	query.fn = fn;
	return xfs_btree_query_all(cur, xfs_alloc_query_range_helper, &query);
+6 −6
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ xfs_allocbt_set_root(

	ASSERT(ptr->s != 0);

	if (cur->bc_btnum == XFS_BTNUM_BNO) {
	if (xfs_btree_is_bno(cur->bc_ops)) {
		agf->agf_bno_root = ptr->s;
		be32_add_cpu(&agf->agf_bno_level, inc);
		cur->bc_ag.pag->pagf_bno_level += inc;
@@ -131,7 +131,7 @@ xfs_allocbt_update_lastrec(
	__be32			len;
	int			numrecs;

	ASSERT(cur->bc_btnum == XFS_BTNUM_CNT);
	ASSERT(!xfs_btree_is_bno(cur->bc_ops));

	switch (reason) {
	case LASTREC_UPDATE:
@@ -241,7 +241,7 @@ xfs_allocbt_init_ptr_from_cur(

	ASSERT(cur->bc_ag.pag->pag_agno == be32_to_cpu(agf->agf_seqno));

	if (cur->bc_btnum == XFS_BTNUM_BNO)
	if (xfs_btree_is_bno(cur->bc_ops))
		ptr->s = agf->agf_bno_root;
	else
		ptr->s = agf->agf_cnt_root;
@@ -554,7 +554,7 @@ xfs_bnobt_init_cursor(
{
	struct xfs_btree_cur	*cur;

	cur = xfs_btree_alloc_cursor(mp, tp, XFS_BTNUM_BNO, &xfs_bnobt_ops,
	cur = xfs_btree_alloc_cursor(mp, tp, &xfs_bnobt_ops,
			mp->m_alloc_maxlevels, xfs_allocbt_cur_cache);
	cur->bc_ag.pag = xfs_perag_hold(pag);
	cur->bc_ag.agbp = agbp;
@@ -580,7 +580,7 @@ xfs_cntbt_init_cursor(
{
	struct xfs_btree_cur	*cur;

	cur = xfs_btree_alloc_cursor(mp, tp, XFS_BTNUM_CNT, &xfs_cntbt_ops,
	cur = xfs_btree_alloc_cursor(mp, tp, &xfs_cntbt_ops,
			mp->m_alloc_maxlevels, xfs_allocbt_cur_cache);
	cur->bc_ag.pag = xfs_perag_hold(pag);
	cur->bc_ag.agbp = agbp;
@@ -607,7 +607,7 @@ xfs_allocbt_commit_staged_btree(

	ASSERT(cur->bc_flags & XFS_BTREE_STAGING);

	if (cur->bc_btnum == XFS_BTNUM_BNO) {
	if (xfs_btree_is_bno(cur->bc_ops)) {
		agf->agf_bno_root = cpu_to_be32(afake->af_root);
		agf->agf_bno_level = cpu_to_be32(afake->af_levels);
	} else {
+2 −2
Original line number Diff line number Diff line
@@ -574,8 +574,8 @@ xfs_bmbt_init_cursor(
		maxlevels = mp->m_bm_maxlevels[whichfork];
		break;
	}
	cur = xfs_btree_alloc_cursor(mp, tp, XFS_BTNUM_BMAP, &xfs_bmbt_ops,
			maxlevels, xfs_bmbt_cur_cache);
	cur = xfs_btree_alloc_cursor(mp, tp, &xfs_bmbt_ops, maxlevels,
			xfs_bmbt_cur_cache);
	cur->bc_ino.ip = ip;
	cur->bc_ino.whichfork = whichfork;
	cur->bc_bmap.allocated = 0;
+2 −2
Original line number Diff line number Diff line
@@ -454,7 +454,7 @@ xfs_btree_del_cursor(
	 * zero, then we should be shut down or on our way to shutdown due to
	 * cancelling a dirty transaction on error.
	 */
	ASSERT(cur->bc_btnum != XFS_BTNUM_BMAP || cur->bc_bmap.allocated == 0 ||
	ASSERT(!xfs_btree_is_bmap(cur->bc_ops) || cur->bc_bmap.allocated == 0 ||
	       xfs_is_shutdown(cur->bc_mp) || error != 0);

	switch (cur->bc_ops->type) {
@@ -3016,7 +3016,7 @@ xfs_btree_split(
	struct xfs_btree_split_args	args;
	DECLARE_COMPLETION_ONSTACK(done);

	if (cur->bc_btnum != XFS_BTNUM_BMAP ||
	if (!xfs_btree_is_bmap(cur->bc_ops) ||
	    cur->bc_tp->t_highest_agno == NULLAGNUMBER)
		return __xfs_btree_split(cur, level, ptrp, key, curp, stat);

+0 −11
Original line number Diff line number Diff line
@@ -55,14 +55,6 @@ union xfs_btree_rec {
#define	XFS_LOOKUP_LE	((xfs_lookup_t)XFS_LOOKUP_LEi)
#define	XFS_LOOKUP_GE	((xfs_lookup_t)XFS_LOOKUP_GEi)

#define	XFS_BTNUM_BNO	((xfs_btnum_t)XFS_BTNUM_BNOi)
#define	XFS_BTNUM_CNT	((xfs_btnum_t)XFS_BTNUM_CNTi)
#define	XFS_BTNUM_BMAP	((xfs_btnum_t)XFS_BTNUM_BMAPi)
#define	XFS_BTNUM_INO	((xfs_btnum_t)XFS_BTNUM_INOi)
#define	XFS_BTNUM_FINO	((xfs_btnum_t)XFS_BTNUM_FINOi)
#define	XFS_BTNUM_RMAP	((xfs_btnum_t)XFS_BTNUM_RMAPi)
#define	XFS_BTNUM_REFC	((xfs_btnum_t)XFS_BTNUM_REFCi)

struct xfs_btree_ops;
uint32_t xfs_btree_magic(struct xfs_mount *mp, const struct xfs_btree_ops *ops);

@@ -272,7 +264,6 @@ struct xfs_btree_cur
	const struct xfs_btree_ops *bc_ops;
	struct kmem_cache	*bc_cache; /* cursor cache */
	unsigned int		bc_flags; /* btree features - below */
	xfs_btnum_t		bc_btnum; /* identifies which btree type */
	union xfs_btree_irec	bc_rec;	/* current insert/search record value */
	uint8_t			bc_nlevels; /* number of levels in the tree */
	uint8_t			bc_maxlevels; /* maximum levels for this btree type */
@@ -726,7 +717,6 @@ static inline struct xfs_btree_cur *
xfs_btree_alloc_cursor(
	struct xfs_mount	*mp,
	struct xfs_trans	*tp,
	xfs_btnum_t		btnum,
	const struct xfs_btree_ops *ops,
	uint8_t			maxlevels,
	struct kmem_cache	*cache)
@@ -742,7 +732,6 @@ xfs_btree_alloc_cursor(
	cur->bc_ops = ops;
	cur->bc_tp = tp;
	cur->bc_mp = mp;
	cur->bc_btnum = btnum;
	cur->bc_maxlevels = maxlevels;
	cur->bc_cache = cache;

Loading