162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (C) 2017-2023 Oracle. All Rights Reserved. 462306a36Sopenharmony_ci * Author: Darrick J. Wong <djwong@kernel.org> 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * NOTE: none of these tracepoints shall be considered a stable kernel ABI 762306a36Sopenharmony_ci * as they can change at any time. See xfs_trace.h for documentation of 862306a36Sopenharmony_ci * specific units found in tracepoint output. 962306a36Sopenharmony_ci */ 1062306a36Sopenharmony_ci#undef TRACE_SYSTEM 1162306a36Sopenharmony_ci#define TRACE_SYSTEM xfs_scrub 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#if !defined(_TRACE_XFS_SCRUB_TRACE_H) || defined(TRACE_HEADER_MULTI_READ) 1462306a36Sopenharmony_ci#define _TRACE_XFS_SCRUB_TRACE_H 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#include <linux/tracepoint.h> 1762306a36Sopenharmony_ci#include "xfs_bit.h" 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_cistruct xfile; 2062306a36Sopenharmony_cistruct xfarray; 2162306a36Sopenharmony_cistruct xfarray_sortinfo; 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci/* 2462306a36Sopenharmony_ci * ftrace's __print_symbolic requires that all enum values be wrapped in the 2562306a36Sopenharmony_ci * TRACE_DEFINE_ENUM macro so that the enum value can be encoded in the ftrace 2662306a36Sopenharmony_ci * ring buffer. Somehow this was only worth mentioning in the ftrace sample 2762306a36Sopenharmony_ci * code. 2862306a36Sopenharmony_ci */ 2962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_BNOi); 3062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_CNTi); 3162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_BMAPi); 3262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_INOi); 3362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_FINOi); 3462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_RMAPi); 3562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_REFCi); 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_REFC_DOMAIN_SHARED); 3862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_REFC_DOMAIN_COW); 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_PROBE); 4162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_SB); 4262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_AGF); 4362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_AGFL); 4462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_AGI); 4562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_BNOBT); 4662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_CNTBT); 4762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_INOBT); 4862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_FINOBT); 4962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_RMAPBT); 5062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_REFCNTBT); 5162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_INODE); 5262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_BMBTD); 5362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_BMBTA); 5462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_BMBTC); 5562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_DIR); 5662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_XATTR); 5762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_SYMLINK); 5862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_PARENT); 5962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_RTBITMAP); 6062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_RTSUM); 6162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_UQUOTA); 6262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_GQUOTA); 6362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_PQUOTA); 6462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_FSCOUNTERS); 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci#define XFS_SCRUB_TYPE_STRINGS \ 6762306a36Sopenharmony_ci { XFS_SCRUB_TYPE_PROBE, "probe" }, \ 6862306a36Sopenharmony_ci { XFS_SCRUB_TYPE_SB, "sb" }, \ 6962306a36Sopenharmony_ci { XFS_SCRUB_TYPE_AGF, "agf" }, \ 7062306a36Sopenharmony_ci { XFS_SCRUB_TYPE_AGFL, "agfl" }, \ 7162306a36Sopenharmony_ci { XFS_SCRUB_TYPE_AGI, "agi" }, \ 7262306a36Sopenharmony_ci { XFS_SCRUB_TYPE_BNOBT, "bnobt" }, \ 7362306a36Sopenharmony_ci { XFS_SCRUB_TYPE_CNTBT, "cntbt" }, \ 7462306a36Sopenharmony_ci { XFS_SCRUB_TYPE_INOBT, "inobt" }, \ 7562306a36Sopenharmony_ci { XFS_SCRUB_TYPE_FINOBT, "finobt" }, \ 7662306a36Sopenharmony_ci { XFS_SCRUB_TYPE_RMAPBT, "rmapbt" }, \ 7762306a36Sopenharmony_ci { XFS_SCRUB_TYPE_REFCNTBT, "refcountbt" }, \ 7862306a36Sopenharmony_ci { XFS_SCRUB_TYPE_INODE, "inode" }, \ 7962306a36Sopenharmony_ci { XFS_SCRUB_TYPE_BMBTD, "bmapbtd" }, \ 8062306a36Sopenharmony_ci { XFS_SCRUB_TYPE_BMBTA, "bmapbta" }, \ 8162306a36Sopenharmony_ci { XFS_SCRUB_TYPE_BMBTC, "bmapbtc" }, \ 8262306a36Sopenharmony_ci { XFS_SCRUB_TYPE_DIR, "directory" }, \ 8362306a36Sopenharmony_ci { XFS_SCRUB_TYPE_XATTR, "xattr" }, \ 8462306a36Sopenharmony_ci { XFS_SCRUB_TYPE_SYMLINK, "symlink" }, \ 8562306a36Sopenharmony_ci { XFS_SCRUB_TYPE_PARENT, "parent" }, \ 8662306a36Sopenharmony_ci { XFS_SCRUB_TYPE_RTBITMAP, "rtbitmap" }, \ 8762306a36Sopenharmony_ci { XFS_SCRUB_TYPE_RTSUM, "rtsummary" }, \ 8862306a36Sopenharmony_ci { XFS_SCRUB_TYPE_UQUOTA, "usrquota" }, \ 8962306a36Sopenharmony_ci { XFS_SCRUB_TYPE_GQUOTA, "grpquota" }, \ 9062306a36Sopenharmony_ci { XFS_SCRUB_TYPE_PQUOTA, "prjquota" }, \ 9162306a36Sopenharmony_ci { XFS_SCRUB_TYPE_FSCOUNTERS, "fscounters" } 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci#define XFS_SCRUB_FLAG_STRINGS \ 9462306a36Sopenharmony_ci { XFS_SCRUB_IFLAG_REPAIR, "repair" }, \ 9562306a36Sopenharmony_ci { XFS_SCRUB_OFLAG_CORRUPT, "corrupt" }, \ 9662306a36Sopenharmony_ci { XFS_SCRUB_OFLAG_PREEN, "preen" }, \ 9762306a36Sopenharmony_ci { XFS_SCRUB_OFLAG_XFAIL, "xfail" }, \ 9862306a36Sopenharmony_ci { XFS_SCRUB_OFLAG_XCORRUPT, "xcorrupt" }, \ 9962306a36Sopenharmony_ci { XFS_SCRUB_OFLAG_INCOMPLETE, "incomplete" }, \ 10062306a36Sopenharmony_ci { XFS_SCRUB_OFLAG_WARNING, "warning" }, \ 10162306a36Sopenharmony_ci { XFS_SCRUB_OFLAG_NO_REPAIR_NEEDED, "norepair" }, \ 10262306a36Sopenharmony_ci { XFS_SCRUB_IFLAG_FORCE_REBUILD, "rebuild" } 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_ci#define XFS_SCRUB_STATE_STRINGS \ 10562306a36Sopenharmony_ci { XCHK_TRY_HARDER, "try_harder" }, \ 10662306a36Sopenharmony_ci { XCHK_HAVE_FREEZE_PROT, "nofreeze" }, \ 10762306a36Sopenharmony_ci { XCHK_FSGATES_DRAIN, "fsgates_drain" }, \ 10862306a36Sopenharmony_ci { XCHK_NEED_DRAIN, "need_drain" }, \ 10962306a36Sopenharmony_ci { XREP_ALREADY_FIXED, "already_fixed" } 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xchk_class, 11262306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm, 11362306a36Sopenharmony_ci int error), 11462306a36Sopenharmony_ci TP_ARGS(ip, sm, error), 11562306a36Sopenharmony_ci TP_STRUCT__entry( 11662306a36Sopenharmony_ci __field(dev_t, dev) 11762306a36Sopenharmony_ci __field(xfs_ino_t, ino) 11862306a36Sopenharmony_ci __field(unsigned int, type) 11962306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 12062306a36Sopenharmony_ci __field(xfs_ino_t, inum) 12162306a36Sopenharmony_ci __field(unsigned int, gen) 12262306a36Sopenharmony_ci __field(unsigned int, flags) 12362306a36Sopenharmony_ci __field(int, error) 12462306a36Sopenharmony_ci ), 12562306a36Sopenharmony_ci TP_fast_assign( 12662306a36Sopenharmony_ci __entry->dev = ip->i_mount->m_super->s_dev; 12762306a36Sopenharmony_ci __entry->ino = ip->i_ino; 12862306a36Sopenharmony_ci __entry->type = sm->sm_type; 12962306a36Sopenharmony_ci __entry->agno = sm->sm_agno; 13062306a36Sopenharmony_ci __entry->inum = sm->sm_ino; 13162306a36Sopenharmony_ci __entry->gen = sm->sm_gen; 13262306a36Sopenharmony_ci __entry->flags = sm->sm_flags; 13362306a36Sopenharmony_ci __entry->error = error; 13462306a36Sopenharmony_ci ), 13562306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx type %s agno 0x%x inum 0x%llx gen 0x%x flags (%s) error %d", 13662306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 13762306a36Sopenharmony_ci __entry->ino, 13862306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 13962306a36Sopenharmony_ci __entry->agno, 14062306a36Sopenharmony_ci __entry->inum, 14162306a36Sopenharmony_ci __entry->gen, 14262306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XFS_SCRUB_FLAG_STRINGS), 14362306a36Sopenharmony_ci __entry->error) 14462306a36Sopenharmony_ci) 14562306a36Sopenharmony_ci#define DEFINE_SCRUB_EVENT(name) \ 14662306a36Sopenharmony_ciDEFINE_EVENT(xchk_class, name, \ 14762306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm, \ 14862306a36Sopenharmony_ci int error), \ 14962306a36Sopenharmony_ci TP_ARGS(ip, sm, error)) 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ciDEFINE_SCRUB_EVENT(xchk_start); 15262306a36Sopenharmony_ciDEFINE_SCRUB_EVENT(xchk_done); 15362306a36Sopenharmony_ciDEFINE_SCRUB_EVENT(xchk_deadlock_retry); 15462306a36Sopenharmony_ciDEFINE_SCRUB_EVENT(xrep_attempt); 15562306a36Sopenharmony_ciDEFINE_SCRUB_EVENT(xrep_done); 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xchk_fsgate_class, 15862306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, unsigned int fsgate_flags), 15962306a36Sopenharmony_ci TP_ARGS(sc, fsgate_flags), 16062306a36Sopenharmony_ci TP_STRUCT__entry( 16162306a36Sopenharmony_ci __field(dev_t, dev) 16262306a36Sopenharmony_ci __field(unsigned int, type) 16362306a36Sopenharmony_ci __field(unsigned int, fsgate_flags) 16462306a36Sopenharmony_ci ), 16562306a36Sopenharmony_ci TP_fast_assign( 16662306a36Sopenharmony_ci __entry->dev = sc->mp->m_super->s_dev; 16762306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 16862306a36Sopenharmony_ci __entry->fsgate_flags = fsgate_flags; 16962306a36Sopenharmony_ci ), 17062306a36Sopenharmony_ci TP_printk("dev %d:%d type %s fsgates '%s'", 17162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 17262306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 17362306a36Sopenharmony_ci __print_flags(__entry->fsgate_flags, "|", XFS_SCRUB_STATE_STRINGS)) 17462306a36Sopenharmony_ci) 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci#define DEFINE_SCRUB_FSHOOK_EVENT(name) \ 17762306a36Sopenharmony_ciDEFINE_EVENT(xchk_fsgate_class, name, \ 17862306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, unsigned int fsgates_flags), \ 17962306a36Sopenharmony_ci TP_ARGS(sc, fsgates_flags)) 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_ciDEFINE_SCRUB_FSHOOK_EVENT(xchk_fsgates_enable); 18262306a36Sopenharmony_ciDEFINE_SCRUB_FSHOOK_EVENT(xchk_fsgates_disable); 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ciTRACE_EVENT(xchk_op_error, 18562306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, xfs_agnumber_t agno, 18662306a36Sopenharmony_ci xfs_agblock_t bno, int error, void *ret_ip), 18762306a36Sopenharmony_ci TP_ARGS(sc, agno, bno, error, ret_ip), 18862306a36Sopenharmony_ci TP_STRUCT__entry( 18962306a36Sopenharmony_ci __field(dev_t, dev) 19062306a36Sopenharmony_ci __field(unsigned int, type) 19162306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 19262306a36Sopenharmony_ci __field(xfs_agblock_t, bno) 19362306a36Sopenharmony_ci __field(int, error) 19462306a36Sopenharmony_ci __field(void *, ret_ip) 19562306a36Sopenharmony_ci ), 19662306a36Sopenharmony_ci TP_fast_assign( 19762306a36Sopenharmony_ci __entry->dev = sc->mp->m_super->s_dev; 19862306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 19962306a36Sopenharmony_ci __entry->agno = agno; 20062306a36Sopenharmony_ci __entry->bno = bno; 20162306a36Sopenharmony_ci __entry->error = error; 20262306a36Sopenharmony_ci __entry->ret_ip = ret_ip; 20362306a36Sopenharmony_ci ), 20462306a36Sopenharmony_ci TP_printk("dev %d:%d type %s agno 0x%x agbno 0x%x error %d ret_ip %pS", 20562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 20662306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 20762306a36Sopenharmony_ci __entry->agno, 20862306a36Sopenharmony_ci __entry->bno, 20962306a36Sopenharmony_ci __entry->error, 21062306a36Sopenharmony_ci __entry->ret_ip) 21162306a36Sopenharmony_ci); 21262306a36Sopenharmony_ci 21362306a36Sopenharmony_ciTRACE_EVENT(xchk_file_op_error, 21462306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, int whichfork, 21562306a36Sopenharmony_ci xfs_fileoff_t offset, int error, void *ret_ip), 21662306a36Sopenharmony_ci TP_ARGS(sc, whichfork, offset, error, ret_ip), 21762306a36Sopenharmony_ci TP_STRUCT__entry( 21862306a36Sopenharmony_ci __field(dev_t, dev) 21962306a36Sopenharmony_ci __field(xfs_ino_t, ino) 22062306a36Sopenharmony_ci __field(int, whichfork) 22162306a36Sopenharmony_ci __field(unsigned int, type) 22262306a36Sopenharmony_ci __field(xfs_fileoff_t, offset) 22362306a36Sopenharmony_ci __field(int, error) 22462306a36Sopenharmony_ci __field(void *, ret_ip) 22562306a36Sopenharmony_ci ), 22662306a36Sopenharmony_ci TP_fast_assign( 22762306a36Sopenharmony_ci __entry->dev = sc->ip->i_mount->m_super->s_dev; 22862306a36Sopenharmony_ci __entry->ino = sc->ip->i_ino; 22962306a36Sopenharmony_ci __entry->whichfork = whichfork; 23062306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 23162306a36Sopenharmony_ci __entry->offset = offset; 23262306a36Sopenharmony_ci __entry->error = error; 23362306a36Sopenharmony_ci __entry->ret_ip = ret_ip; 23462306a36Sopenharmony_ci ), 23562306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx fork %s type %s fileoff 0x%llx error %d ret_ip %pS", 23662306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 23762306a36Sopenharmony_ci __entry->ino, 23862306a36Sopenharmony_ci __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS), 23962306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 24062306a36Sopenharmony_ci __entry->offset, 24162306a36Sopenharmony_ci __entry->error, 24262306a36Sopenharmony_ci __entry->ret_ip) 24362306a36Sopenharmony_ci); 24462306a36Sopenharmony_ci 24562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xchk_block_error_class, 24662306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, xfs_daddr_t daddr, void *ret_ip), 24762306a36Sopenharmony_ci TP_ARGS(sc, daddr, ret_ip), 24862306a36Sopenharmony_ci TP_STRUCT__entry( 24962306a36Sopenharmony_ci __field(dev_t, dev) 25062306a36Sopenharmony_ci __field(unsigned int, type) 25162306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 25262306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 25362306a36Sopenharmony_ci __field(void *, ret_ip) 25462306a36Sopenharmony_ci ), 25562306a36Sopenharmony_ci TP_fast_assign( 25662306a36Sopenharmony_ci __entry->dev = sc->mp->m_super->s_dev; 25762306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 25862306a36Sopenharmony_ci __entry->agno = xfs_daddr_to_agno(sc->mp, daddr); 25962306a36Sopenharmony_ci __entry->agbno = xfs_daddr_to_agbno(sc->mp, daddr); 26062306a36Sopenharmony_ci __entry->ret_ip = ret_ip; 26162306a36Sopenharmony_ci ), 26262306a36Sopenharmony_ci TP_printk("dev %d:%d type %s agno 0x%x agbno 0x%x ret_ip %pS", 26362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 26462306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 26562306a36Sopenharmony_ci __entry->agno, 26662306a36Sopenharmony_ci __entry->agbno, 26762306a36Sopenharmony_ci __entry->ret_ip) 26862306a36Sopenharmony_ci) 26962306a36Sopenharmony_ci 27062306a36Sopenharmony_ci#define DEFINE_SCRUB_BLOCK_ERROR_EVENT(name) \ 27162306a36Sopenharmony_ciDEFINE_EVENT(xchk_block_error_class, name, \ 27262306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, xfs_daddr_t daddr, \ 27362306a36Sopenharmony_ci void *ret_ip), \ 27462306a36Sopenharmony_ci TP_ARGS(sc, daddr, ret_ip)) 27562306a36Sopenharmony_ci 27662306a36Sopenharmony_ciDEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_fs_error); 27762306a36Sopenharmony_ciDEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_block_error); 27862306a36Sopenharmony_ciDEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_block_preen); 27962306a36Sopenharmony_ci 28062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xchk_ino_error_class, 28162306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, xfs_ino_t ino, void *ret_ip), 28262306a36Sopenharmony_ci TP_ARGS(sc, ino, ret_ip), 28362306a36Sopenharmony_ci TP_STRUCT__entry( 28462306a36Sopenharmony_ci __field(dev_t, dev) 28562306a36Sopenharmony_ci __field(xfs_ino_t, ino) 28662306a36Sopenharmony_ci __field(unsigned int, type) 28762306a36Sopenharmony_ci __field(void *, ret_ip) 28862306a36Sopenharmony_ci ), 28962306a36Sopenharmony_ci TP_fast_assign( 29062306a36Sopenharmony_ci __entry->dev = sc->mp->m_super->s_dev; 29162306a36Sopenharmony_ci __entry->ino = ino; 29262306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 29362306a36Sopenharmony_ci __entry->ret_ip = ret_ip; 29462306a36Sopenharmony_ci ), 29562306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx type %s ret_ip %pS", 29662306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 29762306a36Sopenharmony_ci __entry->ino, 29862306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 29962306a36Sopenharmony_ci __entry->ret_ip) 30062306a36Sopenharmony_ci) 30162306a36Sopenharmony_ci 30262306a36Sopenharmony_ci#define DEFINE_SCRUB_INO_ERROR_EVENT(name) \ 30362306a36Sopenharmony_ciDEFINE_EVENT(xchk_ino_error_class, name, \ 30462306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, xfs_ino_t ino, \ 30562306a36Sopenharmony_ci void *ret_ip), \ 30662306a36Sopenharmony_ci TP_ARGS(sc, ino, ret_ip)) 30762306a36Sopenharmony_ci 30862306a36Sopenharmony_ciDEFINE_SCRUB_INO_ERROR_EVENT(xchk_ino_error); 30962306a36Sopenharmony_ciDEFINE_SCRUB_INO_ERROR_EVENT(xchk_ino_preen); 31062306a36Sopenharmony_ciDEFINE_SCRUB_INO_ERROR_EVENT(xchk_ino_warning); 31162306a36Sopenharmony_ci 31262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xchk_fblock_error_class, 31362306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, int whichfork, 31462306a36Sopenharmony_ci xfs_fileoff_t offset, void *ret_ip), 31562306a36Sopenharmony_ci TP_ARGS(sc, whichfork, offset, ret_ip), 31662306a36Sopenharmony_ci TP_STRUCT__entry( 31762306a36Sopenharmony_ci __field(dev_t, dev) 31862306a36Sopenharmony_ci __field(xfs_ino_t, ino) 31962306a36Sopenharmony_ci __field(int, whichfork) 32062306a36Sopenharmony_ci __field(unsigned int, type) 32162306a36Sopenharmony_ci __field(xfs_fileoff_t, offset) 32262306a36Sopenharmony_ci __field(void *, ret_ip) 32362306a36Sopenharmony_ci ), 32462306a36Sopenharmony_ci TP_fast_assign( 32562306a36Sopenharmony_ci __entry->dev = sc->ip->i_mount->m_super->s_dev; 32662306a36Sopenharmony_ci __entry->ino = sc->ip->i_ino; 32762306a36Sopenharmony_ci __entry->whichfork = whichfork; 32862306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 32962306a36Sopenharmony_ci __entry->offset = offset; 33062306a36Sopenharmony_ci __entry->ret_ip = ret_ip; 33162306a36Sopenharmony_ci ), 33262306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx fork %s type %s fileoff 0x%llx ret_ip %pS", 33362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 33462306a36Sopenharmony_ci __entry->ino, 33562306a36Sopenharmony_ci __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS), 33662306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 33762306a36Sopenharmony_ci __entry->offset, 33862306a36Sopenharmony_ci __entry->ret_ip) 33962306a36Sopenharmony_ci); 34062306a36Sopenharmony_ci 34162306a36Sopenharmony_ci#define DEFINE_SCRUB_FBLOCK_ERROR_EVENT(name) \ 34262306a36Sopenharmony_ciDEFINE_EVENT(xchk_fblock_error_class, name, \ 34362306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, int whichfork, \ 34462306a36Sopenharmony_ci xfs_fileoff_t offset, void *ret_ip), \ 34562306a36Sopenharmony_ci TP_ARGS(sc, whichfork, offset, ret_ip)) 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_ciDEFINE_SCRUB_FBLOCK_ERROR_EVENT(xchk_fblock_error); 34862306a36Sopenharmony_ciDEFINE_SCRUB_FBLOCK_ERROR_EVENT(xchk_fblock_warning); 34962306a36Sopenharmony_ci 35062306a36Sopenharmony_ciTRACE_EVENT(xchk_incomplete, 35162306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, void *ret_ip), 35262306a36Sopenharmony_ci TP_ARGS(sc, ret_ip), 35362306a36Sopenharmony_ci TP_STRUCT__entry( 35462306a36Sopenharmony_ci __field(dev_t, dev) 35562306a36Sopenharmony_ci __field(unsigned int, type) 35662306a36Sopenharmony_ci __field(void *, ret_ip) 35762306a36Sopenharmony_ci ), 35862306a36Sopenharmony_ci TP_fast_assign( 35962306a36Sopenharmony_ci __entry->dev = sc->mp->m_super->s_dev; 36062306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 36162306a36Sopenharmony_ci __entry->ret_ip = ret_ip; 36262306a36Sopenharmony_ci ), 36362306a36Sopenharmony_ci TP_printk("dev %d:%d type %s ret_ip %pS", 36462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 36562306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 36662306a36Sopenharmony_ci __entry->ret_ip) 36762306a36Sopenharmony_ci); 36862306a36Sopenharmony_ci 36962306a36Sopenharmony_ciTRACE_EVENT(xchk_btree_op_error, 37062306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur, 37162306a36Sopenharmony_ci int level, int error, void *ret_ip), 37262306a36Sopenharmony_ci TP_ARGS(sc, cur, level, error, ret_ip), 37362306a36Sopenharmony_ci TP_STRUCT__entry( 37462306a36Sopenharmony_ci __field(dev_t, dev) 37562306a36Sopenharmony_ci __field(unsigned int, type) 37662306a36Sopenharmony_ci __field(xfs_btnum_t, btnum) 37762306a36Sopenharmony_ci __field(int, level) 37862306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 37962306a36Sopenharmony_ci __field(xfs_agblock_t, bno) 38062306a36Sopenharmony_ci __field(int, ptr) 38162306a36Sopenharmony_ci __field(int, error) 38262306a36Sopenharmony_ci __field(void *, ret_ip) 38362306a36Sopenharmony_ci ), 38462306a36Sopenharmony_ci TP_fast_assign( 38562306a36Sopenharmony_ci xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level); 38662306a36Sopenharmony_ci 38762306a36Sopenharmony_ci __entry->dev = sc->mp->m_super->s_dev; 38862306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 38962306a36Sopenharmony_ci __entry->btnum = cur->bc_btnum; 39062306a36Sopenharmony_ci __entry->level = level; 39162306a36Sopenharmony_ci __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno); 39262306a36Sopenharmony_ci __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno); 39362306a36Sopenharmony_ci __entry->ptr = cur->bc_levels[level].ptr; 39462306a36Sopenharmony_ci __entry->error = error; 39562306a36Sopenharmony_ci __entry->ret_ip = ret_ip; 39662306a36Sopenharmony_ci ), 39762306a36Sopenharmony_ci TP_printk("dev %d:%d type %s btree %s level %d ptr %d agno 0x%x agbno 0x%x error %d ret_ip %pS", 39862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 39962306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 40062306a36Sopenharmony_ci __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 40162306a36Sopenharmony_ci __entry->level, 40262306a36Sopenharmony_ci __entry->ptr, 40362306a36Sopenharmony_ci __entry->agno, 40462306a36Sopenharmony_ci __entry->bno, 40562306a36Sopenharmony_ci __entry->error, 40662306a36Sopenharmony_ci __entry->ret_ip) 40762306a36Sopenharmony_ci); 40862306a36Sopenharmony_ci 40962306a36Sopenharmony_ciTRACE_EVENT(xchk_ifork_btree_op_error, 41062306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur, 41162306a36Sopenharmony_ci int level, int error, void *ret_ip), 41262306a36Sopenharmony_ci TP_ARGS(sc, cur, level, error, ret_ip), 41362306a36Sopenharmony_ci TP_STRUCT__entry( 41462306a36Sopenharmony_ci __field(dev_t, dev) 41562306a36Sopenharmony_ci __field(xfs_ino_t, ino) 41662306a36Sopenharmony_ci __field(int, whichfork) 41762306a36Sopenharmony_ci __field(unsigned int, type) 41862306a36Sopenharmony_ci __field(xfs_btnum_t, btnum) 41962306a36Sopenharmony_ci __field(int, level) 42062306a36Sopenharmony_ci __field(int, ptr) 42162306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 42262306a36Sopenharmony_ci __field(xfs_agblock_t, bno) 42362306a36Sopenharmony_ci __field(int, error) 42462306a36Sopenharmony_ci __field(void *, ret_ip) 42562306a36Sopenharmony_ci ), 42662306a36Sopenharmony_ci TP_fast_assign( 42762306a36Sopenharmony_ci xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level); 42862306a36Sopenharmony_ci __entry->dev = sc->mp->m_super->s_dev; 42962306a36Sopenharmony_ci __entry->ino = sc->ip->i_ino; 43062306a36Sopenharmony_ci __entry->whichfork = cur->bc_ino.whichfork; 43162306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 43262306a36Sopenharmony_ci __entry->btnum = cur->bc_btnum; 43362306a36Sopenharmony_ci __entry->level = level; 43462306a36Sopenharmony_ci __entry->ptr = cur->bc_levels[level].ptr; 43562306a36Sopenharmony_ci __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno); 43662306a36Sopenharmony_ci __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno); 43762306a36Sopenharmony_ci __entry->error = error; 43862306a36Sopenharmony_ci __entry->ret_ip = ret_ip; 43962306a36Sopenharmony_ci ), 44062306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx fork %s type %s btree %s level %d ptr %d agno 0x%x agbno 0x%x error %d ret_ip %pS", 44162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 44262306a36Sopenharmony_ci __entry->ino, 44362306a36Sopenharmony_ci __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS), 44462306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 44562306a36Sopenharmony_ci __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 44662306a36Sopenharmony_ci __entry->level, 44762306a36Sopenharmony_ci __entry->ptr, 44862306a36Sopenharmony_ci __entry->agno, 44962306a36Sopenharmony_ci __entry->bno, 45062306a36Sopenharmony_ci __entry->error, 45162306a36Sopenharmony_ci __entry->ret_ip) 45262306a36Sopenharmony_ci); 45362306a36Sopenharmony_ci 45462306a36Sopenharmony_ciTRACE_EVENT(xchk_btree_error, 45562306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur, 45662306a36Sopenharmony_ci int level, void *ret_ip), 45762306a36Sopenharmony_ci TP_ARGS(sc, cur, level, ret_ip), 45862306a36Sopenharmony_ci TP_STRUCT__entry( 45962306a36Sopenharmony_ci __field(dev_t, dev) 46062306a36Sopenharmony_ci __field(unsigned int, type) 46162306a36Sopenharmony_ci __field(xfs_btnum_t, btnum) 46262306a36Sopenharmony_ci __field(int, level) 46362306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 46462306a36Sopenharmony_ci __field(xfs_agblock_t, bno) 46562306a36Sopenharmony_ci __field(int, ptr) 46662306a36Sopenharmony_ci __field(void *, ret_ip) 46762306a36Sopenharmony_ci ), 46862306a36Sopenharmony_ci TP_fast_assign( 46962306a36Sopenharmony_ci xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level); 47062306a36Sopenharmony_ci __entry->dev = sc->mp->m_super->s_dev; 47162306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 47262306a36Sopenharmony_ci __entry->btnum = cur->bc_btnum; 47362306a36Sopenharmony_ci __entry->level = level; 47462306a36Sopenharmony_ci __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno); 47562306a36Sopenharmony_ci __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno); 47662306a36Sopenharmony_ci __entry->ptr = cur->bc_levels[level].ptr; 47762306a36Sopenharmony_ci __entry->ret_ip = ret_ip; 47862306a36Sopenharmony_ci ), 47962306a36Sopenharmony_ci TP_printk("dev %d:%d type %s btree %s level %d ptr %d agno 0x%x agbno 0x%x ret_ip %pS", 48062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 48162306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 48262306a36Sopenharmony_ci __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 48362306a36Sopenharmony_ci __entry->level, 48462306a36Sopenharmony_ci __entry->ptr, 48562306a36Sopenharmony_ci __entry->agno, 48662306a36Sopenharmony_ci __entry->bno, 48762306a36Sopenharmony_ci __entry->ret_ip) 48862306a36Sopenharmony_ci); 48962306a36Sopenharmony_ci 49062306a36Sopenharmony_ciTRACE_EVENT(xchk_ifork_btree_error, 49162306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur, 49262306a36Sopenharmony_ci int level, void *ret_ip), 49362306a36Sopenharmony_ci TP_ARGS(sc, cur, level, ret_ip), 49462306a36Sopenharmony_ci TP_STRUCT__entry( 49562306a36Sopenharmony_ci __field(dev_t, dev) 49662306a36Sopenharmony_ci __field(xfs_ino_t, ino) 49762306a36Sopenharmony_ci __field(int, whichfork) 49862306a36Sopenharmony_ci __field(unsigned int, type) 49962306a36Sopenharmony_ci __field(xfs_btnum_t, btnum) 50062306a36Sopenharmony_ci __field(int, level) 50162306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 50262306a36Sopenharmony_ci __field(xfs_agblock_t, bno) 50362306a36Sopenharmony_ci __field(int, ptr) 50462306a36Sopenharmony_ci __field(void *, ret_ip) 50562306a36Sopenharmony_ci ), 50662306a36Sopenharmony_ci TP_fast_assign( 50762306a36Sopenharmony_ci xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level); 50862306a36Sopenharmony_ci __entry->dev = sc->mp->m_super->s_dev; 50962306a36Sopenharmony_ci __entry->ino = sc->ip->i_ino; 51062306a36Sopenharmony_ci __entry->whichfork = cur->bc_ino.whichfork; 51162306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 51262306a36Sopenharmony_ci __entry->btnum = cur->bc_btnum; 51362306a36Sopenharmony_ci __entry->level = level; 51462306a36Sopenharmony_ci __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno); 51562306a36Sopenharmony_ci __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno); 51662306a36Sopenharmony_ci __entry->ptr = cur->bc_levels[level].ptr; 51762306a36Sopenharmony_ci __entry->ret_ip = ret_ip; 51862306a36Sopenharmony_ci ), 51962306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx fork %s type %s btree %s level %d ptr %d agno 0x%x agbno 0x%x ret_ip %pS", 52062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 52162306a36Sopenharmony_ci __entry->ino, 52262306a36Sopenharmony_ci __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS), 52362306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 52462306a36Sopenharmony_ci __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 52562306a36Sopenharmony_ci __entry->level, 52662306a36Sopenharmony_ci __entry->ptr, 52762306a36Sopenharmony_ci __entry->agno, 52862306a36Sopenharmony_ci __entry->bno, 52962306a36Sopenharmony_ci __entry->ret_ip) 53062306a36Sopenharmony_ci); 53162306a36Sopenharmony_ci 53262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xchk_sbtree_class, 53362306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur, 53462306a36Sopenharmony_ci int level), 53562306a36Sopenharmony_ci TP_ARGS(sc, cur, level), 53662306a36Sopenharmony_ci TP_STRUCT__entry( 53762306a36Sopenharmony_ci __field(dev_t, dev) 53862306a36Sopenharmony_ci __field(int, type) 53962306a36Sopenharmony_ci __field(xfs_btnum_t, btnum) 54062306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 54162306a36Sopenharmony_ci __field(xfs_agblock_t, bno) 54262306a36Sopenharmony_ci __field(int, level) 54362306a36Sopenharmony_ci __field(int, nlevels) 54462306a36Sopenharmony_ci __field(int, ptr) 54562306a36Sopenharmony_ci ), 54662306a36Sopenharmony_ci TP_fast_assign( 54762306a36Sopenharmony_ci xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level); 54862306a36Sopenharmony_ci 54962306a36Sopenharmony_ci __entry->dev = sc->mp->m_super->s_dev; 55062306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 55162306a36Sopenharmony_ci __entry->btnum = cur->bc_btnum; 55262306a36Sopenharmony_ci __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno); 55362306a36Sopenharmony_ci __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno); 55462306a36Sopenharmony_ci __entry->level = level; 55562306a36Sopenharmony_ci __entry->nlevels = cur->bc_nlevels; 55662306a36Sopenharmony_ci __entry->ptr = cur->bc_levels[level].ptr; 55762306a36Sopenharmony_ci ), 55862306a36Sopenharmony_ci TP_printk("dev %d:%d type %s btree %s agno 0x%x agbno 0x%x level %d nlevels %d ptr %d", 55962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 56062306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 56162306a36Sopenharmony_ci __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 56262306a36Sopenharmony_ci __entry->agno, 56362306a36Sopenharmony_ci __entry->bno, 56462306a36Sopenharmony_ci __entry->level, 56562306a36Sopenharmony_ci __entry->nlevels, 56662306a36Sopenharmony_ci __entry->ptr) 56762306a36Sopenharmony_ci) 56862306a36Sopenharmony_ci#define DEFINE_SCRUB_SBTREE_EVENT(name) \ 56962306a36Sopenharmony_ciDEFINE_EVENT(xchk_sbtree_class, name, \ 57062306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur, \ 57162306a36Sopenharmony_ci int level), \ 57262306a36Sopenharmony_ci TP_ARGS(sc, cur, level)) 57362306a36Sopenharmony_ci 57462306a36Sopenharmony_ciDEFINE_SCRUB_SBTREE_EVENT(xchk_btree_rec); 57562306a36Sopenharmony_ciDEFINE_SCRUB_SBTREE_EVENT(xchk_btree_key); 57662306a36Sopenharmony_ci 57762306a36Sopenharmony_ciTRACE_EVENT(xchk_xref_error, 57862306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, int error, void *ret_ip), 57962306a36Sopenharmony_ci TP_ARGS(sc, error, ret_ip), 58062306a36Sopenharmony_ci TP_STRUCT__entry( 58162306a36Sopenharmony_ci __field(dev_t, dev) 58262306a36Sopenharmony_ci __field(int, type) 58362306a36Sopenharmony_ci __field(int, error) 58462306a36Sopenharmony_ci __field(void *, ret_ip) 58562306a36Sopenharmony_ci ), 58662306a36Sopenharmony_ci TP_fast_assign( 58762306a36Sopenharmony_ci __entry->dev = sc->mp->m_super->s_dev; 58862306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 58962306a36Sopenharmony_ci __entry->error = error; 59062306a36Sopenharmony_ci __entry->ret_ip = ret_ip; 59162306a36Sopenharmony_ci ), 59262306a36Sopenharmony_ci TP_printk("dev %d:%d type %s xref error %d ret_ip %pS", 59362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 59462306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 59562306a36Sopenharmony_ci __entry->error, 59662306a36Sopenharmony_ci __entry->ret_ip) 59762306a36Sopenharmony_ci); 59862306a36Sopenharmony_ci 59962306a36Sopenharmony_ciTRACE_EVENT(xchk_iallocbt_check_cluster, 60062306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 60162306a36Sopenharmony_ci xfs_agino_t startino, xfs_daddr_t map_daddr, 60262306a36Sopenharmony_ci unsigned short map_len, unsigned int chunk_ino, 60362306a36Sopenharmony_ci unsigned int nr_inodes, uint16_t cluster_mask, 60462306a36Sopenharmony_ci uint16_t holemask, unsigned int cluster_ino), 60562306a36Sopenharmony_ci TP_ARGS(mp, agno, startino, map_daddr, map_len, chunk_ino, nr_inodes, 60662306a36Sopenharmony_ci cluster_mask, holemask, cluster_ino), 60762306a36Sopenharmony_ci TP_STRUCT__entry( 60862306a36Sopenharmony_ci __field(dev_t, dev) 60962306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 61062306a36Sopenharmony_ci __field(xfs_agino_t, startino) 61162306a36Sopenharmony_ci __field(xfs_daddr_t, map_daddr) 61262306a36Sopenharmony_ci __field(unsigned short, map_len) 61362306a36Sopenharmony_ci __field(unsigned int, chunk_ino) 61462306a36Sopenharmony_ci __field(unsigned int, nr_inodes) 61562306a36Sopenharmony_ci __field(unsigned int, cluster_ino) 61662306a36Sopenharmony_ci __field(uint16_t, cluster_mask) 61762306a36Sopenharmony_ci __field(uint16_t, holemask) 61862306a36Sopenharmony_ci ), 61962306a36Sopenharmony_ci TP_fast_assign( 62062306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 62162306a36Sopenharmony_ci __entry->agno = agno; 62262306a36Sopenharmony_ci __entry->startino = startino; 62362306a36Sopenharmony_ci __entry->map_daddr = map_daddr; 62462306a36Sopenharmony_ci __entry->map_len = map_len; 62562306a36Sopenharmony_ci __entry->chunk_ino = chunk_ino; 62662306a36Sopenharmony_ci __entry->nr_inodes = nr_inodes; 62762306a36Sopenharmony_ci __entry->cluster_mask = cluster_mask; 62862306a36Sopenharmony_ci __entry->holemask = holemask; 62962306a36Sopenharmony_ci __entry->cluster_ino = cluster_ino; 63062306a36Sopenharmony_ci ), 63162306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x startino 0x%x daddr 0x%llx bbcount 0x%x chunkino 0x%x nr_inodes %u cluster_mask 0x%x holemask 0x%x cluster_ino 0x%x", 63262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 63362306a36Sopenharmony_ci __entry->agno, 63462306a36Sopenharmony_ci __entry->startino, 63562306a36Sopenharmony_ci __entry->map_daddr, 63662306a36Sopenharmony_ci __entry->map_len, 63762306a36Sopenharmony_ci __entry->chunk_ino, 63862306a36Sopenharmony_ci __entry->nr_inodes, 63962306a36Sopenharmony_ci __entry->cluster_mask, 64062306a36Sopenharmony_ci __entry->holemask, 64162306a36Sopenharmony_ci __entry->cluster_ino) 64262306a36Sopenharmony_ci) 64362306a36Sopenharmony_ci 64462306a36Sopenharmony_ciTRACE_EVENT(xchk_inode_is_allocated, 64562306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip), 64662306a36Sopenharmony_ci TP_ARGS(ip), 64762306a36Sopenharmony_ci TP_STRUCT__entry( 64862306a36Sopenharmony_ci __field(dev_t, dev) 64962306a36Sopenharmony_ci __field(xfs_ino_t, ino) 65062306a36Sopenharmony_ci __field(unsigned long, iflags) 65162306a36Sopenharmony_ci __field(umode_t, mode) 65262306a36Sopenharmony_ci ), 65362306a36Sopenharmony_ci TP_fast_assign( 65462306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 65562306a36Sopenharmony_ci __entry->ino = ip->i_ino; 65662306a36Sopenharmony_ci __entry->iflags = ip->i_flags; 65762306a36Sopenharmony_ci __entry->mode = VFS_I(ip)->i_mode; 65862306a36Sopenharmony_ci ), 65962306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx iflags 0x%lx mode 0x%x", 66062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 66162306a36Sopenharmony_ci __entry->ino, 66262306a36Sopenharmony_ci __entry->iflags, 66362306a36Sopenharmony_ci __entry->mode) 66462306a36Sopenharmony_ci); 66562306a36Sopenharmony_ci 66662306a36Sopenharmony_ciTRACE_EVENT(xchk_fscounters_calc, 66762306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, uint64_t icount, uint64_t ifree, 66862306a36Sopenharmony_ci uint64_t fdblocks, uint64_t delalloc), 66962306a36Sopenharmony_ci TP_ARGS(mp, icount, ifree, fdblocks, delalloc), 67062306a36Sopenharmony_ci TP_STRUCT__entry( 67162306a36Sopenharmony_ci __field(dev_t, dev) 67262306a36Sopenharmony_ci __field(int64_t, icount_sb) 67362306a36Sopenharmony_ci __field(uint64_t, icount_calculated) 67462306a36Sopenharmony_ci __field(int64_t, ifree_sb) 67562306a36Sopenharmony_ci __field(uint64_t, ifree_calculated) 67662306a36Sopenharmony_ci __field(int64_t, fdblocks_sb) 67762306a36Sopenharmony_ci __field(uint64_t, fdblocks_calculated) 67862306a36Sopenharmony_ci __field(uint64_t, delalloc) 67962306a36Sopenharmony_ci ), 68062306a36Sopenharmony_ci TP_fast_assign( 68162306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 68262306a36Sopenharmony_ci __entry->icount_sb = mp->m_sb.sb_icount; 68362306a36Sopenharmony_ci __entry->icount_calculated = icount; 68462306a36Sopenharmony_ci __entry->ifree_sb = mp->m_sb.sb_ifree; 68562306a36Sopenharmony_ci __entry->ifree_calculated = ifree; 68662306a36Sopenharmony_ci __entry->fdblocks_sb = mp->m_sb.sb_fdblocks; 68762306a36Sopenharmony_ci __entry->fdblocks_calculated = fdblocks; 68862306a36Sopenharmony_ci __entry->delalloc = delalloc; 68962306a36Sopenharmony_ci ), 69062306a36Sopenharmony_ci TP_printk("dev %d:%d icount %lld:%llu ifree %lld::%llu fdblocks %lld::%llu delalloc %llu", 69162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 69262306a36Sopenharmony_ci __entry->icount_sb, 69362306a36Sopenharmony_ci __entry->icount_calculated, 69462306a36Sopenharmony_ci __entry->ifree_sb, 69562306a36Sopenharmony_ci __entry->ifree_calculated, 69662306a36Sopenharmony_ci __entry->fdblocks_sb, 69762306a36Sopenharmony_ci __entry->fdblocks_calculated, 69862306a36Sopenharmony_ci __entry->delalloc) 69962306a36Sopenharmony_ci) 70062306a36Sopenharmony_ci 70162306a36Sopenharmony_ciTRACE_EVENT(xchk_fscounters_within_range, 70262306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, uint64_t expected, int64_t curr_value, 70362306a36Sopenharmony_ci int64_t old_value), 70462306a36Sopenharmony_ci TP_ARGS(mp, expected, curr_value, old_value), 70562306a36Sopenharmony_ci TP_STRUCT__entry( 70662306a36Sopenharmony_ci __field(dev_t, dev) 70762306a36Sopenharmony_ci __field(uint64_t, expected) 70862306a36Sopenharmony_ci __field(int64_t, curr_value) 70962306a36Sopenharmony_ci __field(int64_t, old_value) 71062306a36Sopenharmony_ci ), 71162306a36Sopenharmony_ci TP_fast_assign( 71262306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 71362306a36Sopenharmony_ci __entry->expected = expected; 71462306a36Sopenharmony_ci __entry->curr_value = curr_value; 71562306a36Sopenharmony_ci __entry->old_value = old_value; 71662306a36Sopenharmony_ci ), 71762306a36Sopenharmony_ci TP_printk("dev %d:%d expected %llu curr_value %lld old_value %lld", 71862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 71962306a36Sopenharmony_ci __entry->expected, 72062306a36Sopenharmony_ci __entry->curr_value, 72162306a36Sopenharmony_ci __entry->old_value) 72262306a36Sopenharmony_ci) 72362306a36Sopenharmony_ci 72462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xchk_fsfreeze_class, 72562306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, int error), 72662306a36Sopenharmony_ci TP_ARGS(sc, error), 72762306a36Sopenharmony_ci TP_STRUCT__entry( 72862306a36Sopenharmony_ci __field(dev_t, dev) 72962306a36Sopenharmony_ci __field(unsigned int, type) 73062306a36Sopenharmony_ci __field(int, error) 73162306a36Sopenharmony_ci ), 73262306a36Sopenharmony_ci TP_fast_assign( 73362306a36Sopenharmony_ci __entry->dev = sc->mp->m_super->s_dev; 73462306a36Sopenharmony_ci __entry->type = sc->sm->sm_type; 73562306a36Sopenharmony_ci __entry->error = error; 73662306a36Sopenharmony_ci ), 73762306a36Sopenharmony_ci TP_printk("dev %d:%d type %s error %d", 73862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 73962306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS), 74062306a36Sopenharmony_ci __entry->error) 74162306a36Sopenharmony_ci); 74262306a36Sopenharmony_ci#define DEFINE_XCHK_FSFREEZE_EVENT(name) \ 74362306a36Sopenharmony_ciDEFINE_EVENT(xchk_fsfreeze_class, name, \ 74462306a36Sopenharmony_ci TP_PROTO(struct xfs_scrub *sc, int error), \ 74562306a36Sopenharmony_ci TP_ARGS(sc, error)) 74662306a36Sopenharmony_ciDEFINE_XCHK_FSFREEZE_EVENT(xchk_fsfreeze); 74762306a36Sopenharmony_ciDEFINE_XCHK_FSFREEZE_EVENT(xchk_fsthaw); 74862306a36Sopenharmony_ci 74962306a36Sopenharmony_ciTRACE_EVENT(xchk_refcount_incorrect, 75062306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, const struct xfs_refcount_irec *irec, 75162306a36Sopenharmony_ci xfs_nlink_t seen), 75262306a36Sopenharmony_ci TP_ARGS(pag, irec, seen), 75362306a36Sopenharmony_ci TP_STRUCT__entry( 75462306a36Sopenharmony_ci __field(dev_t, dev) 75562306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 75662306a36Sopenharmony_ci __field(enum xfs_refc_domain, domain) 75762306a36Sopenharmony_ci __field(xfs_agblock_t, startblock) 75862306a36Sopenharmony_ci __field(xfs_extlen_t, blockcount) 75962306a36Sopenharmony_ci __field(xfs_nlink_t, refcount) 76062306a36Sopenharmony_ci __field(xfs_nlink_t, seen) 76162306a36Sopenharmony_ci ), 76262306a36Sopenharmony_ci TP_fast_assign( 76362306a36Sopenharmony_ci __entry->dev = pag->pag_mount->m_super->s_dev; 76462306a36Sopenharmony_ci __entry->agno = pag->pag_agno; 76562306a36Sopenharmony_ci __entry->domain = irec->rc_domain; 76662306a36Sopenharmony_ci __entry->startblock = irec->rc_startblock; 76762306a36Sopenharmony_ci __entry->blockcount = irec->rc_blockcount; 76862306a36Sopenharmony_ci __entry->refcount = irec->rc_refcount; 76962306a36Sopenharmony_ci __entry->seen = seen; 77062306a36Sopenharmony_ci ), 77162306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u seen %u", 77262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 77362306a36Sopenharmony_ci __entry->agno, 77462306a36Sopenharmony_ci __print_symbolic(__entry->domain, XFS_REFC_DOMAIN_STRINGS), 77562306a36Sopenharmony_ci __entry->startblock, 77662306a36Sopenharmony_ci __entry->blockcount, 77762306a36Sopenharmony_ci __entry->refcount, 77862306a36Sopenharmony_ci __entry->seen) 77962306a36Sopenharmony_ci) 78062306a36Sopenharmony_ci 78162306a36Sopenharmony_ciTRACE_EVENT(xfile_create, 78262306a36Sopenharmony_ci TP_PROTO(struct xfile *xf), 78362306a36Sopenharmony_ci TP_ARGS(xf), 78462306a36Sopenharmony_ci TP_STRUCT__entry( 78562306a36Sopenharmony_ci __field(dev_t, dev) 78662306a36Sopenharmony_ci __field(unsigned long, ino) 78762306a36Sopenharmony_ci __array(char, pathname, 256) 78862306a36Sopenharmony_ci ), 78962306a36Sopenharmony_ci TP_fast_assign( 79062306a36Sopenharmony_ci char pathname[257]; 79162306a36Sopenharmony_ci char *path; 79262306a36Sopenharmony_ci 79362306a36Sopenharmony_ci __entry->ino = file_inode(xf->file)->i_ino; 79462306a36Sopenharmony_ci memset(pathname, 0, sizeof(pathname)); 79562306a36Sopenharmony_ci path = file_path(xf->file, pathname, sizeof(pathname) - 1); 79662306a36Sopenharmony_ci if (IS_ERR(path)) 79762306a36Sopenharmony_ci path = "(unknown)"; 79862306a36Sopenharmony_ci strncpy(__entry->pathname, path, sizeof(__entry->pathname)); 79962306a36Sopenharmony_ci ), 80062306a36Sopenharmony_ci TP_printk("xfino 0x%lx path '%s'", 80162306a36Sopenharmony_ci __entry->ino, 80262306a36Sopenharmony_ci __entry->pathname) 80362306a36Sopenharmony_ci); 80462306a36Sopenharmony_ci 80562306a36Sopenharmony_ciTRACE_EVENT(xfile_destroy, 80662306a36Sopenharmony_ci TP_PROTO(struct xfile *xf), 80762306a36Sopenharmony_ci TP_ARGS(xf), 80862306a36Sopenharmony_ci TP_STRUCT__entry( 80962306a36Sopenharmony_ci __field(unsigned long, ino) 81062306a36Sopenharmony_ci __field(unsigned long long, bytes) 81162306a36Sopenharmony_ci __field(loff_t, size) 81262306a36Sopenharmony_ci ), 81362306a36Sopenharmony_ci TP_fast_assign( 81462306a36Sopenharmony_ci struct xfile_stat statbuf; 81562306a36Sopenharmony_ci int ret; 81662306a36Sopenharmony_ci 81762306a36Sopenharmony_ci ret = xfile_stat(xf, &statbuf); 81862306a36Sopenharmony_ci if (!ret) { 81962306a36Sopenharmony_ci __entry->bytes = statbuf.bytes; 82062306a36Sopenharmony_ci __entry->size = statbuf.size; 82162306a36Sopenharmony_ci } else { 82262306a36Sopenharmony_ci __entry->bytes = -1; 82362306a36Sopenharmony_ci __entry->size = -1; 82462306a36Sopenharmony_ci } 82562306a36Sopenharmony_ci __entry->ino = file_inode(xf->file)->i_ino; 82662306a36Sopenharmony_ci ), 82762306a36Sopenharmony_ci TP_printk("xfino 0x%lx mem_bytes 0x%llx isize 0x%llx", 82862306a36Sopenharmony_ci __entry->ino, 82962306a36Sopenharmony_ci __entry->bytes, 83062306a36Sopenharmony_ci __entry->size) 83162306a36Sopenharmony_ci); 83262306a36Sopenharmony_ci 83362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfile_class, 83462306a36Sopenharmony_ci TP_PROTO(struct xfile *xf, loff_t pos, unsigned long long bytecount), 83562306a36Sopenharmony_ci TP_ARGS(xf, pos, bytecount), 83662306a36Sopenharmony_ci TP_STRUCT__entry( 83762306a36Sopenharmony_ci __field(unsigned long, ino) 83862306a36Sopenharmony_ci __field(unsigned long long, bytes_used) 83962306a36Sopenharmony_ci __field(loff_t, pos) 84062306a36Sopenharmony_ci __field(loff_t, size) 84162306a36Sopenharmony_ci __field(unsigned long long, bytecount) 84262306a36Sopenharmony_ci ), 84362306a36Sopenharmony_ci TP_fast_assign( 84462306a36Sopenharmony_ci struct xfile_stat statbuf; 84562306a36Sopenharmony_ci int ret; 84662306a36Sopenharmony_ci 84762306a36Sopenharmony_ci ret = xfile_stat(xf, &statbuf); 84862306a36Sopenharmony_ci if (!ret) { 84962306a36Sopenharmony_ci __entry->bytes_used = statbuf.bytes; 85062306a36Sopenharmony_ci __entry->size = statbuf.size; 85162306a36Sopenharmony_ci } else { 85262306a36Sopenharmony_ci __entry->bytes_used = -1; 85362306a36Sopenharmony_ci __entry->size = -1; 85462306a36Sopenharmony_ci } 85562306a36Sopenharmony_ci __entry->ino = file_inode(xf->file)->i_ino; 85662306a36Sopenharmony_ci __entry->pos = pos; 85762306a36Sopenharmony_ci __entry->bytecount = bytecount; 85862306a36Sopenharmony_ci ), 85962306a36Sopenharmony_ci TP_printk("xfino 0x%lx mem_bytes 0x%llx pos 0x%llx bytecount 0x%llx isize 0x%llx", 86062306a36Sopenharmony_ci __entry->ino, 86162306a36Sopenharmony_ci __entry->bytes_used, 86262306a36Sopenharmony_ci __entry->pos, 86362306a36Sopenharmony_ci __entry->bytecount, 86462306a36Sopenharmony_ci __entry->size) 86562306a36Sopenharmony_ci); 86662306a36Sopenharmony_ci#define DEFINE_XFILE_EVENT(name) \ 86762306a36Sopenharmony_ciDEFINE_EVENT(xfile_class, name, \ 86862306a36Sopenharmony_ci TP_PROTO(struct xfile *xf, loff_t pos, unsigned long long bytecount), \ 86962306a36Sopenharmony_ci TP_ARGS(xf, pos, bytecount)) 87062306a36Sopenharmony_ciDEFINE_XFILE_EVENT(xfile_pread); 87162306a36Sopenharmony_ciDEFINE_XFILE_EVENT(xfile_pwrite); 87262306a36Sopenharmony_ciDEFINE_XFILE_EVENT(xfile_seek_data); 87362306a36Sopenharmony_ciDEFINE_XFILE_EVENT(xfile_get_page); 87462306a36Sopenharmony_ciDEFINE_XFILE_EVENT(xfile_put_page); 87562306a36Sopenharmony_ci 87662306a36Sopenharmony_ciTRACE_EVENT(xfarray_create, 87762306a36Sopenharmony_ci TP_PROTO(struct xfarray *xfa, unsigned long long required_capacity), 87862306a36Sopenharmony_ci TP_ARGS(xfa, required_capacity), 87962306a36Sopenharmony_ci TP_STRUCT__entry( 88062306a36Sopenharmony_ci __field(unsigned long, ino) 88162306a36Sopenharmony_ci __field(uint64_t, max_nr) 88262306a36Sopenharmony_ci __field(size_t, obj_size) 88362306a36Sopenharmony_ci __field(int, obj_size_log) 88462306a36Sopenharmony_ci __field(unsigned long long, required_capacity) 88562306a36Sopenharmony_ci ), 88662306a36Sopenharmony_ci TP_fast_assign( 88762306a36Sopenharmony_ci __entry->max_nr = xfa->max_nr; 88862306a36Sopenharmony_ci __entry->obj_size = xfa->obj_size; 88962306a36Sopenharmony_ci __entry->obj_size_log = xfa->obj_size_log; 89062306a36Sopenharmony_ci __entry->ino = file_inode(xfa->xfile->file)->i_ino; 89162306a36Sopenharmony_ci __entry->required_capacity = required_capacity; 89262306a36Sopenharmony_ci ), 89362306a36Sopenharmony_ci TP_printk("xfino 0x%lx max_nr %llu reqd_nr %llu objsz %zu objszlog %d", 89462306a36Sopenharmony_ci __entry->ino, 89562306a36Sopenharmony_ci __entry->max_nr, 89662306a36Sopenharmony_ci __entry->required_capacity, 89762306a36Sopenharmony_ci __entry->obj_size, 89862306a36Sopenharmony_ci __entry->obj_size_log) 89962306a36Sopenharmony_ci); 90062306a36Sopenharmony_ci 90162306a36Sopenharmony_ciTRACE_EVENT(xfarray_isort, 90262306a36Sopenharmony_ci TP_PROTO(struct xfarray_sortinfo *si, uint64_t lo, uint64_t hi), 90362306a36Sopenharmony_ci TP_ARGS(si, lo, hi), 90462306a36Sopenharmony_ci TP_STRUCT__entry( 90562306a36Sopenharmony_ci __field(unsigned long, ino) 90662306a36Sopenharmony_ci __field(unsigned long long, lo) 90762306a36Sopenharmony_ci __field(unsigned long long, hi) 90862306a36Sopenharmony_ci ), 90962306a36Sopenharmony_ci TP_fast_assign( 91062306a36Sopenharmony_ci __entry->ino = file_inode(si->array->xfile->file)->i_ino; 91162306a36Sopenharmony_ci __entry->lo = lo; 91262306a36Sopenharmony_ci __entry->hi = hi; 91362306a36Sopenharmony_ci ), 91462306a36Sopenharmony_ci TP_printk("xfino 0x%lx lo %llu hi %llu elts %llu", 91562306a36Sopenharmony_ci __entry->ino, 91662306a36Sopenharmony_ci __entry->lo, 91762306a36Sopenharmony_ci __entry->hi, 91862306a36Sopenharmony_ci __entry->hi - __entry->lo) 91962306a36Sopenharmony_ci); 92062306a36Sopenharmony_ci 92162306a36Sopenharmony_ciTRACE_EVENT(xfarray_pagesort, 92262306a36Sopenharmony_ci TP_PROTO(struct xfarray_sortinfo *si, uint64_t lo, uint64_t hi), 92362306a36Sopenharmony_ci TP_ARGS(si, lo, hi), 92462306a36Sopenharmony_ci TP_STRUCT__entry( 92562306a36Sopenharmony_ci __field(unsigned long, ino) 92662306a36Sopenharmony_ci __field(unsigned long long, lo) 92762306a36Sopenharmony_ci __field(unsigned long long, hi) 92862306a36Sopenharmony_ci ), 92962306a36Sopenharmony_ci TP_fast_assign( 93062306a36Sopenharmony_ci __entry->ino = file_inode(si->array->xfile->file)->i_ino; 93162306a36Sopenharmony_ci __entry->lo = lo; 93262306a36Sopenharmony_ci __entry->hi = hi; 93362306a36Sopenharmony_ci ), 93462306a36Sopenharmony_ci TP_printk("xfino 0x%lx lo %llu hi %llu elts %llu", 93562306a36Sopenharmony_ci __entry->ino, 93662306a36Sopenharmony_ci __entry->lo, 93762306a36Sopenharmony_ci __entry->hi, 93862306a36Sopenharmony_ci __entry->hi - __entry->lo) 93962306a36Sopenharmony_ci); 94062306a36Sopenharmony_ci 94162306a36Sopenharmony_ciTRACE_EVENT(xfarray_qsort, 94262306a36Sopenharmony_ci TP_PROTO(struct xfarray_sortinfo *si, uint64_t lo, uint64_t hi), 94362306a36Sopenharmony_ci TP_ARGS(si, lo, hi), 94462306a36Sopenharmony_ci TP_STRUCT__entry( 94562306a36Sopenharmony_ci __field(unsigned long, ino) 94662306a36Sopenharmony_ci __field(unsigned long long, lo) 94762306a36Sopenharmony_ci __field(unsigned long long, hi) 94862306a36Sopenharmony_ci __field(int, stack_depth) 94962306a36Sopenharmony_ci __field(int, max_stack_depth) 95062306a36Sopenharmony_ci ), 95162306a36Sopenharmony_ci TP_fast_assign( 95262306a36Sopenharmony_ci __entry->ino = file_inode(si->array->xfile->file)->i_ino; 95362306a36Sopenharmony_ci __entry->lo = lo; 95462306a36Sopenharmony_ci __entry->hi = hi; 95562306a36Sopenharmony_ci __entry->stack_depth = si->stack_depth; 95662306a36Sopenharmony_ci __entry->max_stack_depth = si->max_stack_depth; 95762306a36Sopenharmony_ci ), 95862306a36Sopenharmony_ci TP_printk("xfino 0x%lx lo %llu hi %llu elts %llu stack %d/%d", 95962306a36Sopenharmony_ci __entry->ino, 96062306a36Sopenharmony_ci __entry->lo, 96162306a36Sopenharmony_ci __entry->hi, 96262306a36Sopenharmony_ci __entry->hi - __entry->lo, 96362306a36Sopenharmony_ci __entry->stack_depth, 96462306a36Sopenharmony_ci __entry->max_stack_depth) 96562306a36Sopenharmony_ci); 96662306a36Sopenharmony_ci 96762306a36Sopenharmony_ciTRACE_EVENT(xfarray_sort, 96862306a36Sopenharmony_ci TP_PROTO(struct xfarray_sortinfo *si, size_t bytes), 96962306a36Sopenharmony_ci TP_ARGS(si, bytes), 97062306a36Sopenharmony_ci TP_STRUCT__entry( 97162306a36Sopenharmony_ci __field(unsigned long, ino) 97262306a36Sopenharmony_ci __field(unsigned long long, nr) 97362306a36Sopenharmony_ci __field(size_t, obj_size) 97462306a36Sopenharmony_ci __field(size_t, bytes) 97562306a36Sopenharmony_ci __field(unsigned int, max_stack_depth) 97662306a36Sopenharmony_ci ), 97762306a36Sopenharmony_ci TP_fast_assign( 97862306a36Sopenharmony_ci __entry->nr = si->array->nr; 97962306a36Sopenharmony_ci __entry->obj_size = si->array->obj_size; 98062306a36Sopenharmony_ci __entry->ino = file_inode(si->array->xfile->file)->i_ino; 98162306a36Sopenharmony_ci __entry->bytes = bytes; 98262306a36Sopenharmony_ci __entry->max_stack_depth = si->max_stack_depth; 98362306a36Sopenharmony_ci ), 98462306a36Sopenharmony_ci TP_printk("xfino 0x%lx nr %llu objsz %zu stack %u bytes %zu", 98562306a36Sopenharmony_ci __entry->ino, 98662306a36Sopenharmony_ci __entry->nr, 98762306a36Sopenharmony_ci __entry->obj_size, 98862306a36Sopenharmony_ci __entry->max_stack_depth, 98962306a36Sopenharmony_ci __entry->bytes) 99062306a36Sopenharmony_ci); 99162306a36Sopenharmony_ci 99262306a36Sopenharmony_ciTRACE_EVENT(xfarray_sort_stats, 99362306a36Sopenharmony_ci TP_PROTO(struct xfarray_sortinfo *si, int error), 99462306a36Sopenharmony_ci TP_ARGS(si, error), 99562306a36Sopenharmony_ci TP_STRUCT__entry( 99662306a36Sopenharmony_ci __field(unsigned long, ino) 99762306a36Sopenharmony_ci#ifdef DEBUG 99862306a36Sopenharmony_ci __field(unsigned long long, loads) 99962306a36Sopenharmony_ci __field(unsigned long long, stores) 100062306a36Sopenharmony_ci __field(unsigned long long, compares) 100162306a36Sopenharmony_ci __field(unsigned long long, heapsorts) 100262306a36Sopenharmony_ci#endif 100362306a36Sopenharmony_ci __field(unsigned int, max_stack_depth) 100462306a36Sopenharmony_ci __field(unsigned int, max_stack_used) 100562306a36Sopenharmony_ci __field(int, error) 100662306a36Sopenharmony_ci ), 100762306a36Sopenharmony_ci TP_fast_assign( 100862306a36Sopenharmony_ci __entry->ino = file_inode(si->array->xfile->file)->i_ino; 100962306a36Sopenharmony_ci#ifdef DEBUG 101062306a36Sopenharmony_ci __entry->loads = si->loads; 101162306a36Sopenharmony_ci __entry->stores = si->stores; 101262306a36Sopenharmony_ci __entry->compares = si->compares; 101362306a36Sopenharmony_ci __entry->heapsorts = si->heapsorts; 101462306a36Sopenharmony_ci#endif 101562306a36Sopenharmony_ci __entry->max_stack_depth = si->max_stack_depth; 101662306a36Sopenharmony_ci __entry->max_stack_used = si->max_stack_used; 101762306a36Sopenharmony_ci __entry->error = error; 101862306a36Sopenharmony_ci ), 101962306a36Sopenharmony_ci TP_printk( 102062306a36Sopenharmony_ci#ifdef DEBUG 102162306a36Sopenharmony_ci "xfino 0x%lx loads %llu stores %llu compares %llu heapsorts %llu stack_depth %u/%u error %d", 102262306a36Sopenharmony_ci#else 102362306a36Sopenharmony_ci "xfino 0x%lx stack_depth %u/%u error %d", 102462306a36Sopenharmony_ci#endif 102562306a36Sopenharmony_ci __entry->ino, 102662306a36Sopenharmony_ci#ifdef DEBUG 102762306a36Sopenharmony_ci __entry->loads, 102862306a36Sopenharmony_ci __entry->stores, 102962306a36Sopenharmony_ci __entry->compares, 103062306a36Sopenharmony_ci __entry->heapsorts, 103162306a36Sopenharmony_ci#endif 103262306a36Sopenharmony_ci __entry->max_stack_used, 103362306a36Sopenharmony_ci __entry->max_stack_depth, 103462306a36Sopenharmony_ci __entry->error) 103562306a36Sopenharmony_ci); 103662306a36Sopenharmony_ci 103762306a36Sopenharmony_ci#ifdef CONFIG_XFS_RT 103862306a36Sopenharmony_ciTRACE_EVENT(xchk_rtsum_record_free, 103962306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_rtblock_t start, 104062306a36Sopenharmony_ci uint64_t len, unsigned int log, loff_t pos, xfs_suminfo_t v), 104162306a36Sopenharmony_ci TP_ARGS(mp, start, len, log, pos, v), 104262306a36Sopenharmony_ci TP_STRUCT__entry( 104362306a36Sopenharmony_ci __field(dev_t, dev) 104462306a36Sopenharmony_ci __field(dev_t, rtdev) 104562306a36Sopenharmony_ci __field(xfs_rtblock_t, start) 104662306a36Sopenharmony_ci __field(unsigned long long, len) 104762306a36Sopenharmony_ci __field(unsigned int, log) 104862306a36Sopenharmony_ci __field(loff_t, pos) 104962306a36Sopenharmony_ci __field(xfs_suminfo_t, v) 105062306a36Sopenharmony_ci ), 105162306a36Sopenharmony_ci TP_fast_assign( 105262306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 105362306a36Sopenharmony_ci __entry->rtdev = mp->m_rtdev_targp->bt_dev; 105462306a36Sopenharmony_ci __entry->start = start; 105562306a36Sopenharmony_ci __entry->len = len; 105662306a36Sopenharmony_ci __entry->log = log; 105762306a36Sopenharmony_ci __entry->pos = pos; 105862306a36Sopenharmony_ci __entry->v = v; 105962306a36Sopenharmony_ci ), 106062306a36Sopenharmony_ci TP_printk("dev %d:%d rtdev %d:%d rtx 0x%llx rtxcount 0x%llx log %u rsumpos 0x%llx sumcount %u", 106162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 106262306a36Sopenharmony_ci MAJOR(__entry->rtdev), MINOR(__entry->rtdev), 106362306a36Sopenharmony_ci __entry->start, 106462306a36Sopenharmony_ci __entry->len, 106562306a36Sopenharmony_ci __entry->log, 106662306a36Sopenharmony_ci __entry->pos, 106762306a36Sopenharmony_ci __entry->v) 106862306a36Sopenharmony_ci); 106962306a36Sopenharmony_ci#endif /* CONFIG_XFS_RT */ 107062306a36Sopenharmony_ci 107162306a36Sopenharmony_ci/* repair tracepoints */ 107262306a36Sopenharmony_ci#if IS_ENABLED(CONFIG_XFS_ONLINE_REPAIR) 107362306a36Sopenharmony_ci 107462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xrep_extent_class, 107562306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, xfs_agblock_t agbno, xfs_extlen_t len), 107662306a36Sopenharmony_ci TP_ARGS(pag, agbno, len), 107762306a36Sopenharmony_ci TP_STRUCT__entry( 107862306a36Sopenharmony_ci __field(dev_t, dev) 107962306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 108062306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 108162306a36Sopenharmony_ci __field(xfs_extlen_t, len) 108262306a36Sopenharmony_ci ), 108362306a36Sopenharmony_ci TP_fast_assign( 108462306a36Sopenharmony_ci __entry->dev = pag->pag_mount->m_super->s_dev; 108562306a36Sopenharmony_ci __entry->agno = pag->pag_agno; 108662306a36Sopenharmony_ci __entry->agbno = agbno; 108762306a36Sopenharmony_ci __entry->len = len; 108862306a36Sopenharmony_ci ), 108962306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x", 109062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 109162306a36Sopenharmony_ci __entry->agno, 109262306a36Sopenharmony_ci __entry->agbno, 109362306a36Sopenharmony_ci __entry->len) 109462306a36Sopenharmony_ci); 109562306a36Sopenharmony_ci#define DEFINE_REPAIR_EXTENT_EVENT(name) \ 109662306a36Sopenharmony_ciDEFINE_EVENT(xrep_extent_class, name, \ 109762306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, xfs_agblock_t agbno, xfs_extlen_t len), \ 109862306a36Sopenharmony_ci TP_ARGS(pag, agbno, len)) 109962306a36Sopenharmony_ciDEFINE_REPAIR_EXTENT_EVENT(xreap_dispose_unmap_extent); 110062306a36Sopenharmony_ciDEFINE_REPAIR_EXTENT_EVENT(xreap_dispose_free_extent); 110162306a36Sopenharmony_ciDEFINE_REPAIR_EXTENT_EVENT(xreap_agextent_binval); 110262306a36Sopenharmony_ciDEFINE_REPAIR_EXTENT_EVENT(xrep_agfl_insert); 110362306a36Sopenharmony_ci 110462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xrep_reap_find_class, 110562306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, xfs_agblock_t agbno, xfs_extlen_t len, 110662306a36Sopenharmony_ci bool crosslinked), 110762306a36Sopenharmony_ci TP_ARGS(pag, agbno, len, crosslinked), 110862306a36Sopenharmony_ci TP_STRUCT__entry( 110962306a36Sopenharmony_ci __field(dev_t, dev) 111062306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 111162306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 111262306a36Sopenharmony_ci __field(xfs_extlen_t, len) 111362306a36Sopenharmony_ci __field(bool, crosslinked) 111462306a36Sopenharmony_ci ), 111562306a36Sopenharmony_ci TP_fast_assign( 111662306a36Sopenharmony_ci __entry->dev = pag->pag_mount->m_super->s_dev; 111762306a36Sopenharmony_ci __entry->agno = pag->pag_agno; 111862306a36Sopenharmony_ci __entry->agbno = agbno; 111962306a36Sopenharmony_ci __entry->len = len; 112062306a36Sopenharmony_ci __entry->crosslinked = crosslinked; 112162306a36Sopenharmony_ci ), 112262306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x crosslinked %d", 112362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 112462306a36Sopenharmony_ci __entry->agno, 112562306a36Sopenharmony_ci __entry->agbno, 112662306a36Sopenharmony_ci __entry->len, 112762306a36Sopenharmony_ci __entry->crosslinked ? 1 : 0) 112862306a36Sopenharmony_ci); 112962306a36Sopenharmony_ci#define DEFINE_REPAIR_REAP_FIND_EVENT(name) \ 113062306a36Sopenharmony_ciDEFINE_EVENT(xrep_reap_find_class, name, \ 113162306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, xfs_agblock_t agbno, xfs_extlen_t len, \ 113262306a36Sopenharmony_ci bool crosslinked), \ 113362306a36Sopenharmony_ci TP_ARGS(pag, agbno, len, crosslinked)) 113462306a36Sopenharmony_ciDEFINE_REPAIR_REAP_FIND_EVENT(xreap_agextent_select); 113562306a36Sopenharmony_ci 113662306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xrep_rmap_class, 113762306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 113862306a36Sopenharmony_ci xfs_agblock_t agbno, xfs_extlen_t len, 113962306a36Sopenharmony_ci uint64_t owner, uint64_t offset, unsigned int flags), 114062306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, len, owner, offset, flags), 114162306a36Sopenharmony_ci TP_STRUCT__entry( 114262306a36Sopenharmony_ci __field(dev_t, dev) 114362306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 114462306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 114562306a36Sopenharmony_ci __field(xfs_extlen_t, len) 114662306a36Sopenharmony_ci __field(uint64_t, owner) 114762306a36Sopenharmony_ci __field(uint64_t, offset) 114862306a36Sopenharmony_ci __field(unsigned int, flags) 114962306a36Sopenharmony_ci ), 115062306a36Sopenharmony_ci TP_fast_assign( 115162306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 115262306a36Sopenharmony_ci __entry->agno = agno; 115362306a36Sopenharmony_ci __entry->agbno = agbno; 115462306a36Sopenharmony_ci __entry->len = len; 115562306a36Sopenharmony_ci __entry->owner = owner; 115662306a36Sopenharmony_ci __entry->offset = offset; 115762306a36Sopenharmony_ci __entry->flags = flags; 115862306a36Sopenharmony_ci ), 115962306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x owner 0x%llx fileoff 0x%llx flags 0x%x", 116062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 116162306a36Sopenharmony_ci __entry->agno, 116262306a36Sopenharmony_ci __entry->agbno, 116362306a36Sopenharmony_ci __entry->len, 116462306a36Sopenharmony_ci __entry->owner, 116562306a36Sopenharmony_ci __entry->offset, 116662306a36Sopenharmony_ci __entry->flags) 116762306a36Sopenharmony_ci); 116862306a36Sopenharmony_ci#define DEFINE_REPAIR_RMAP_EVENT(name) \ 116962306a36Sopenharmony_ciDEFINE_EVENT(xrep_rmap_class, name, \ 117062306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 117162306a36Sopenharmony_ci xfs_agblock_t agbno, xfs_extlen_t len, \ 117262306a36Sopenharmony_ci uint64_t owner, uint64_t offset, unsigned int flags), \ 117362306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, len, owner, offset, flags)) 117462306a36Sopenharmony_ciDEFINE_REPAIR_RMAP_EVENT(xrep_alloc_extent_fn); 117562306a36Sopenharmony_ciDEFINE_REPAIR_RMAP_EVENT(xrep_ialloc_extent_fn); 117662306a36Sopenharmony_ciDEFINE_REPAIR_RMAP_EVENT(xrep_rmap_extent_fn); 117762306a36Sopenharmony_ciDEFINE_REPAIR_RMAP_EVENT(xrep_bmap_extent_fn); 117862306a36Sopenharmony_ci 117962306a36Sopenharmony_ciTRACE_EVENT(xrep_refcount_extent_fn, 118062306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 118162306a36Sopenharmony_ci struct xfs_refcount_irec *irec), 118262306a36Sopenharmony_ci TP_ARGS(mp, agno, irec), 118362306a36Sopenharmony_ci TP_STRUCT__entry( 118462306a36Sopenharmony_ci __field(dev_t, dev) 118562306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 118662306a36Sopenharmony_ci __field(xfs_agblock_t, startblock) 118762306a36Sopenharmony_ci __field(xfs_extlen_t, blockcount) 118862306a36Sopenharmony_ci __field(xfs_nlink_t, refcount) 118962306a36Sopenharmony_ci ), 119062306a36Sopenharmony_ci TP_fast_assign( 119162306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 119262306a36Sopenharmony_ci __entry->agno = agno; 119362306a36Sopenharmony_ci __entry->startblock = irec->rc_startblock; 119462306a36Sopenharmony_ci __entry->blockcount = irec->rc_blockcount; 119562306a36Sopenharmony_ci __entry->refcount = irec->rc_refcount; 119662306a36Sopenharmony_ci ), 119762306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x refcount %u", 119862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 119962306a36Sopenharmony_ci __entry->agno, 120062306a36Sopenharmony_ci __entry->startblock, 120162306a36Sopenharmony_ci __entry->blockcount, 120262306a36Sopenharmony_ci __entry->refcount) 120362306a36Sopenharmony_ci) 120462306a36Sopenharmony_ci 120562306a36Sopenharmony_ciTRACE_EVENT(xrep_findroot_block, 120662306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno, 120762306a36Sopenharmony_ci uint32_t magic, uint16_t level), 120862306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, magic, level), 120962306a36Sopenharmony_ci TP_STRUCT__entry( 121062306a36Sopenharmony_ci __field(dev_t, dev) 121162306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 121262306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 121362306a36Sopenharmony_ci __field(uint32_t, magic) 121462306a36Sopenharmony_ci __field(uint16_t, level) 121562306a36Sopenharmony_ci ), 121662306a36Sopenharmony_ci TP_fast_assign( 121762306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 121862306a36Sopenharmony_ci __entry->agno = agno; 121962306a36Sopenharmony_ci __entry->agbno = agbno; 122062306a36Sopenharmony_ci __entry->magic = magic; 122162306a36Sopenharmony_ci __entry->level = level; 122262306a36Sopenharmony_ci ), 122362306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x magic 0x%x level %u", 122462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 122562306a36Sopenharmony_ci __entry->agno, 122662306a36Sopenharmony_ci __entry->agbno, 122762306a36Sopenharmony_ci __entry->magic, 122862306a36Sopenharmony_ci __entry->level) 122962306a36Sopenharmony_ci) 123062306a36Sopenharmony_ciTRACE_EVENT(xrep_calc_ag_resblks, 123162306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 123262306a36Sopenharmony_ci xfs_agino_t icount, xfs_agblock_t aglen, xfs_agblock_t freelen, 123362306a36Sopenharmony_ci xfs_agblock_t usedlen), 123462306a36Sopenharmony_ci TP_ARGS(mp, agno, icount, aglen, freelen, usedlen), 123562306a36Sopenharmony_ci TP_STRUCT__entry( 123662306a36Sopenharmony_ci __field(dev_t, dev) 123762306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 123862306a36Sopenharmony_ci __field(xfs_agino_t, icount) 123962306a36Sopenharmony_ci __field(xfs_agblock_t, aglen) 124062306a36Sopenharmony_ci __field(xfs_agblock_t, freelen) 124162306a36Sopenharmony_ci __field(xfs_agblock_t, usedlen) 124262306a36Sopenharmony_ci ), 124362306a36Sopenharmony_ci TP_fast_assign( 124462306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 124562306a36Sopenharmony_ci __entry->agno = agno; 124662306a36Sopenharmony_ci __entry->icount = icount; 124762306a36Sopenharmony_ci __entry->aglen = aglen; 124862306a36Sopenharmony_ci __entry->freelen = freelen; 124962306a36Sopenharmony_ci __entry->usedlen = usedlen; 125062306a36Sopenharmony_ci ), 125162306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x icount %u aglen %u freelen %u usedlen %u", 125262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 125362306a36Sopenharmony_ci __entry->agno, 125462306a36Sopenharmony_ci __entry->icount, 125562306a36Sopenharmony_ci __entry->aglen, 125662306a36Sopenharmony_ci __entry->freelen, 125762306a36Sopenharmony_ci __entry->usedlen) 125862306a36Sopenharmony_ci) 125962306a36Sopenharmony_ciTRACE_EVENT(xrep_calc_ag_resblks_btsize, 126062306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 126162306a36Sopenharmony_ci xfs_agblock_t bnobt_sz, xfs_agblock_t inobt_sz, 126262306a36Sopenharmony_ci xfs_agblock_t rmapbt_sz, xfs_agblock_t refcbt_sz), 126362306a36Sopenharmony_ci TP_ARGS(mp, agno, bnobt_sz, inobt_sz, rmapbt_sz, refcbt_sz), 126462306a36Sopenharmony_ci TP_STRUCT__entry( 126562306a36Sopenharmony_ci __field(dev_t, dev) 126662306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 126762306a36Sopenharmony_ci __field(xfs_agblock_t, bnobt_sz) 126862306a36Sopenharmony_ci __field(xfs_agblock_t, inobt_sz) 126962306a36Sopenharmony_ci __field(xfs_agblock_t, rmapbt_sz) 127062306a36Sopenharmony_ci __field(xfs_agblock_t, refcbt_sz) 127162306a36Sopenharmony_ci ), 127262306a36Sopenharmony_ci TP_fast_assign( 127362306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 127462306a36Sopenharmony_ci __entry->agno = agno; 127562306a36Sopenharmony_ci __entry->bnobt_sz = bnobt_sz; 127662306a36Sopenharmony_ci __entry->inobt_sz = inobt_sz; 127762306a36Sopenharmony_ci __entry->rmapbt_sz = rmapbt_sz; 127862306a36Sopenharmony_ci __entry->refcbt_sz = refcbt_sz; 127962306a36Sopenharmony_ci ), 128062306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x bnobt %u inobt %u rmapbt %u refcountbt %u", 128162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 128262306a36Sopenharmony_ci __entry->agno, 128362306a36Sopenharmony_ci __entry->bnobt_sz, 128462306a36Sopenharmony_ci __entry->inobt_sz, 128562306a36Sopenharmony_ci __entry->rmapbt_sz, 128662306a36Sopenharmony_ci __entry->refcbt_sz) 128762306a36Sopenharmony_ci) 128862306a36Sopenharmony_ciTRACE_EVENT(xrep_reset_counters, 128962306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp), 129062306a36Sopenharmony_ci TP_ARGS(mp), 129162306a36Sopenharmony_ci TP_STRUCT__entry( 129262306a36Sopenharmony_ci __field(dev_t, dev) 129362306a36Sopenharmony_ci ), 129462306a36Sopenharmony_ci TP_fast_assign( 129562306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 129662306a36Sopenharmony_ci ), 129762306a36Sopenharmony_ci TP_printk("dev %d:%d", 129862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev)) 129962306a36Sopenharmony_ci) 130062306a36Sopenharmony_ci 130162306a36Sopenharmony_ciTRACE_EVENT(xrep_ialloc_insert, 130262306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 130362306a36Sopenharmony_ci xfs_agino_t startino, uint16_t holemask, uint8_t count, 130462306a36Sopenharmony_ci uint8_t freecount, uint64_t freemask), 130562306a36Sopenharmony_ci TP_ARGS(mp, agno, startino, holemask, count, freecount, freemask), 130662306a36Sopenharmony_ci TP_STRUCT__entry( 130762306a36Sopenharmony_ci __field(dev_t, dev) 130862306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 130962306a36Sopenharmony_ci __field(xfs_agino_t, startino) 131062306a36Sopenharmony_ci __field(uint16_t, holemask) 131162306a36Sopenharmony_ci __field(uint8_t, count) 131262306a36Sopenharmony_ci __field(uint8_t, freecount) 131362306a36Sopenharmony_ci __field(uint64_t, freemask) 131462306a36Sopenharmony_ci ), 131562306a36Sopenharmony_ci TP_fast_assign( 131662306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 131762306a36Sopenharmony_ci __entry->agno = agno; 131862306a36Sopenharmony_ci __entry->startino = startino; 131962306a36Sopenharmony_ci __entry->holemask = holemask; 132062306a36Sopenharmony_ci __entry->count = count; 132162306a36Sopenharmony_ci __entry->freecount = freecount; 132262306a36Sopenharmony_ci __entry->freemask = freemask; 132362306a36Sopenharmony_ci ), 132462306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x startino 0x%x holemask 0x%x count %u freecount %u freemask 0x%llx", 132562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 132662306a36Sopenharmony_ci __entry->agno, 132762306a36Sopenharmony_ci __entry->startino, 132862306a36Sopenharmony_ci __entry->holemask, 132962306a36Sopenharmony_ci __entry->count, 133062306a36Sopenharmony_ci __entry->freecount, 133162306a36Sopenharmony_ci __entry->freemask) 133262306a36Sopenharmony_ci) 133362306a36Sopenharmony_ci 133462306a36Sopenharmony_ci#endif /* IS_ENABLED(CONFIG_XFS_ONLINE_REPAIR) */ 133562306a36Sopenharmony_ci 133662306a36Sopenharmony_ci#endif /* _TRACE_XFS_SCRUB_TRACE_H */ 133762306a36Sopenharmony_ci 133862306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH 133962306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH . 134062306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE scrub/trace 134162306a36Sopenharmony_ci#include <trace/define_trace.h> 1342