Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 49db55ec authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

xfs: add scrub cross-referencing helpers for the refcount btrees



Add a couple of functions to the refcount btrees that will be used
to cross-reference metadata against the refcountbt.

Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
parent ed7c52d4
Loading
Loading
Loading
Loading
+19 −0
Original line number Original line Diff line number Diff line
@@ -1696,3 +1696,22 @@ xfs_refcount_recover_cow_leftovers(
	xfs_trans_brelse(tp, agbp);
	xfs_trans_brelse(tp, agbp);
	goto out_trans;
	goto out_trans;
}
}

/* Is there a record covering a given extent? */
int
xfs_refcount_has_record(
	struct xfs_btree_cur	*cur,
	xfs_agblock_t		bno,
	xfs_extlen_t		len,
	bool			*exists)
{
	union xfs_btree_irec	low;
	union xfs_btree_irec	high;

	memset(&low, 0, sizeof(low));
	low.rc.rc_startblock = bno;
	memset(&high, 0xFF, sizeof(high));
	high.rc.rc_startblock = bno + len - 1;

	return xfs_btree_has_record(cur, &low, &high, exists);
}
+3 −0
Original line number Original line Diff line number Diff line
@@ -83,4 +83,7 @@ static inline xfs_fileoff_t xfs_refcount_max_unmap(int log_res)
	return (log_res * 3 / 4) / XFS_REFCOUNT_ITEM_OVERHEAD;
	return (log_res * 3 / 4) / XFS_REFCOUNT_ITEM_OVERHEAD;
}
}


extern int xfs_refcount_has_record(struct xfs_btree_cur *cur,
		xfs_agblock_t bno, xfs_extlen_t len, bool *exists);

#endif	/* __XFS_REFCOUNT_H__ */
#endif	/* __XFS_REFCOUNT_H__ */