linux/fs/xfs/scrub/trace.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * Copyright (C) 2017 Oracle.  All Rights Reserved.
   4 * Author: Darrick J. Wong <darrick.wong@oracle.com>
   5 */
   6#include "xfs.h"
   7#include "xfs_fs.h"
   8#include "xfs_shared.h"
   9#include "xfs_format.h"
  10#include "xfs_log_format.h"
  11#include "xfs_trans_resv.h"
  12#include "xfs_mount.h"
  13#include "xfs_inode.h"
  14#include "xfs_btree.h"
  15#include "scrub/scrub.h"
  16
  17/* Figure out which block the btree cursor was pointing to. */
  18static inline xfs_fsblock_t
  19xchk_btree_cur_fsbno(
  20        struct xfs_btree_cur    *cur,
  21        int                     level)
  22{
  23        if (level < cur->bc_nlevels && cur->bc_bufs[level])
  24                return XFS_DADDR_TO_FSB(cur->bc_mp, cur->bc_bufs[level]->b_bn);
  25        else if (level == cur->bc_nlevels - 1 &&
  26                 cur->bc_flags & XFS_BTREE_LONG_PTRS)
  27                return XFS_INO_TO_FSB(cur->bc_mp, cur->bc_private.b.ip->i_ino);
  28        else if (!(cur->bc_flags & XFS_BTREE_LONG_PTRS))
  29                return XFS_AGB_TO_FSB(cur->bc_mp, cur->bc_private.a.agno, 0);
  30        return NULLFSBLOCK;
  31}
  32
  33/*
  34 * We include this last to have the helpers above available for the trace
  35 * event implementations.
  36 */
  37#define CREATE_TRACE_POINTS
  38#include "scrub/trace.h"
  39