xref: /linux/fs/xfs/scrub/trace.c (revision a23e1966932464e1c5226cb9ac4ce1d5fc10ba22)
1739a2fe0SDarrick J. Wong // SPDX-License-Identifier: GPL-2.0-or-later
236fd6e86SDarrick J. Wong /*
3ecc73f8aSDarrick J. Wong  * Copyright (C) 2017-2023 Oracle.  All Rights Reserved.
4739a2fe0SDarrick J. Wong  * Author: Darrick J. Wong <djwong@kernel.org>
536fd6e86SDarrick J. Wong  */
636fd6e86SDarrick J. Wong #include "xfs.h"
736fd6e86SDarrick J. Wong #include "xfs_fs.h"
836fd6e86SDarrick J. Wong #include "xfs_shared.h"
936fd6e86SDarrick J. Wong #include "xfs_format.h"
1036fd6e86SDarrick J. Wong #include "xfs_log_format.h"
1136fd6e86SDarrick J. Wong #include "xfs_trans_resv.h"
1236fd6e86SDarrick J. Wong #include "xfs_mount.h"
1336fd6e86SDarrick J. Wong #include "xfs_inode.h"
1436fd6e86SDarrick J. Wong #include "xfs_btree.h"
1550f02fe3SDave Chinner #include "xfs_ag.h"
16663b8db7SDarrick J. Wong #include "xfs_rtbitmap.h"
1721d75009SDarrick J. Wong #include "xfs_quota.h"
18a5b91555SDarrick J. Wong #include "xfs_quota_defs.h"
195385f1a6SDarrick J. Wong #include "xfs_da_format.h"
20f1184081SDarrick J. Wong #include "xfs_dir2.h"
21*7e1b84b2SDarrick J. Wong #include "xfs_rmap.h"
223934e8ebSDarrick J. Wong #include "scrub/scrub.h"
233934e8ebSDarrick J. Wong #include "scrub/xfile.h"
243934e8ebSDarrick J. Wong #include "scrub/xfarray.h"
2521d75009SDarrick J. Wong #include "scrub/quota.h"
268660c7b7SDarrick J. Wong #include "scrub/iscan.h"
27f1184081SDarrick J. Wong #include "scrub/nlinks.h"
284ed080cdSDarrick J. Wong #include "scrub/fscounters.h"
2936fd6e86SDarrick J. Wong 
30537964bcSDarrick J. Wong /* Figure out which block the btree cursor was pointing to. */
31537964bcSDarrick J. Wong static inline xfs_fsblock_t
32c517b3aaSDarrick J. Wong xchk_btree_cur_fsbno(
33537964bcSDarrick J. Wong 	struct xfs_btree_cur	*cur,
34537964bcSDarrick J. Wong 	int			level)
35537964bcSDarrick J. Wong {
366ca444cfSDarrick J. Wong 	if (level < cur->bc_nlevels && cur->bc_levels[level].bp)
379343ee76SDave Chinner 		return XFS_DADDR_TO_FSB(cur->bc_mp,
386ca444cfSDarrick J. Wong 				xfs_buf_daddr(cur->bc_levels[level].bp));
3994a14cfdSDarrick J. Wong 
4094a14cfdSDarrick J. Wong 	if (level == cur->bc_nlevels - 1 &&
414f0cd5a5SChristoph Hellwig 	    cur->bc_ops->type == XFS_BTREE_TYPE_INODE)
4292219c29SDave Chinner 		return XFS_INO_TO_FSB(cur->bc_mp, cur->bc_ino.ip->i_ino);
4394a14cfdSDarrick J. Wong 
44537964bcSDarrick J. Wong 	return NULLFSBLOCK;
45537964bcSDarrick J. Wong }
46537964bcSDarrick J. Wong 
4736fd6e86SDarrick J. Wong /*
4836fd6e86SDarrick J. Wong  * We include this last to have the helpers above available for the trace
4936fd6e86SDarrick J. Wong  * event implementations.
5036fd6e86SDarrick J. Wong  */
5136fd6e86SDarrick J. Wong #define CREATE_TRACE_POINTS
5236fd6e86SDarrick J. Wong #include "scrub/trace.h"
53