2018-06-05 19:42:14 -07:00
// SPDX-License-Identifier: GPL-2.0+
2017-10-17 21:37:34 -07:00
/*
* Copyright ( C ) 2017 Oracle . All Rights Reserved .
* Author : Darrick J . Wong < darrick . wong @ oracle . com >
*/
# include "xfs.h"
# include "xfs_fs.h"
# include "xfs_shared.h"
# include "xfs_format.h"
# include "xfs_log_format.h"
# include "xfs_trans_resv.h"
# include "xfs_mount.h"
# include "xfs_defer.h"
# include "xfs_da_format.h"
# include "xfs_inode.h"
# include "xfs_btree.h"
# include "xfs_trans.h"
2017-10-17 21:37:37 -07:00
# include "xfs_bit.h"
2017-10-17 21:37:34 -07:00
# include "scrub/xfs_scrub.h"
# include "scrub/scrub.h"
2017-10-17 21:37:36 -07:00
# include "scrub/common.h"
2017-10-17 21:37:34 -07:00
2017-10-17 21:37:37 -07:00
/* Figure out which block the btree cursor was pointing to. */
static inline xfs_fsblock_t
2018-07-19 12:29:11 -07:00
xchk_btree_cur_fsbno (
2018-07-19 12:29:12 -07:00
struct xfs_btree_cur * cur ,
int level )
2017-10-17 21:37:37 -07:00
{
if ( level < cur - > bc_nlevels & & cur - > bc_bufs [ level ] )
return XFS_DADDR_TO_FSB ( cur - > bc_mp , cur - > bc_bufs [ level ] - > b_bn ) ;
else if ( level = = cur - > bc_nlevels - 1 & &
cur - > bc_flags & XFS_BTREE_LONG_PTRS )
return XFS_INO_TO_FSB ( cur - > bc_mp , cur - > bc_private . b . ip - > i_ino ) ;
else if ( ! ( cur - > bc_flags & XFS_BTREE_LONG_PTRS ) )
return XFS_AGB_TO_FSB ( cur - > bc_mp , cur - > bc_private . a . agno , 0 ) ;
return NULLFSBLOCK ;
}
2017-10-17 21:37:34 -07:00
/*
* We include this last to have the helpers above available for the trace
* event implementations .
*/
# define CREATE_TRACE_POINTS
# include "scrub/trace.h"