18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright (C) 2017 Oracle.  All Rights Reserved.
48c2ecf20Sopenharmony_ci * Author: Darrick J. Wong <darrick.wong@oracle.com>
58c2ecf20Sopenharmony_ci */
68c2ecf20Sopenharmony_ci#undef TRACE_SYSTEM
78c2ecf20Sopenharmony_ci#define TRACE_SYSTEM xfs_scrub
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#if !defined(_TRACE_XFS_SCRUB_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
108c2ecf20Sopenharmony_ci#define _TRACE_XFS_SCRUB_TRACE_H
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#include <linux/tracepoint.h>
138c2ecf20Sopenharmony_ci#include "xfs_bit.h"
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci/*
168c2ecf20Sopenharmony_ci * ftrace's __print_symbolic requires that all enum values be wrapped in the
178c2ecf20Sopenharmony_ci * TRACE_DEFINE_ENUM macro so that the enum value can be encoded in the ftrace
188c2ecf20Sopenharmony_ci * ring buffer.  Somehow this was only worth mentioning in the ftrace sample
198c2ecf20Sopenharmony_ci * code.
208c2ecf20Sopenharmony_ci */
218c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_BNOi);
228c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_CNTi);
238c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_BMAPi);
248c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_INOi);
258c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_FINOi);
268c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_RMAPi);
278c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_REFCi);
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_PROBE);
308c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_SB);
318c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_AGF);
328c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_AGFL);
338c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_AGI);
348c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_BNOBT);
358c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_CNTBT);
368c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_INOBT);
378c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_FINOBT);
388c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_RMAPBT);
398c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_REFCNTBT);
408c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_INODE);
418c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_BMBTD);
428c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_BMBTA);
438c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_BMBTC);
448c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_DIR);
458c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_XATTR);
468c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_SYMLINK);
478c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_PARENT);
488c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_RTBITMAP);
498c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_RTSUM);
508c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_UQUOTA);
518c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_GQUOTA);
528c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_PQUOTA);
538c2ecf20Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_SCRUB_TYPE_FSCOUNTERS);
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci#define XFS_SCRUB_TYPE_STRINGS \
568c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_PROBE,		"probe" }, \
578c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_SB,		"sb" }, \
588c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_AGF,		"agf" }, \
598c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_AGFL,		"agfl" }, \
608c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_AGI,		"agi" }, \
618c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_BNOBT,		"bnobt" }, \
628c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_CNTBT,		"cntbt" }, \
638c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_INOBT,		"inobt" }, \
648c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_FINOBT,	"finobt" }, \
658c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_RMAPBT,	"rmapbt" }, \
668c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_REFCNTBT,	"refcountbt" }, \
678c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_INODE,		"inode" }, \
688c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_BMBTD,		"bmapbtd" }, \
698c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_BMBTA,		"bmapbta" }, \
708c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_BMBTC,		"bmapbtc" }, \
718c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_DIR,		"directory" }, \
728c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_XATTR,		"xattr" }, \
738c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_SYMLINK,	"symlink" }, \
748c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_PARENT,	"parent" }, \
758c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_RTBITMAP,	"rtbitmap" }, \
768c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_RTSUM,		"rtsummary" }, \
778c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_UQUOTA,	"usrquota" }, \
788c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_GQUOTA,	"grpquota" }, \
798c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_PQUOTA,	"prjquota" }, \
808c2ecf20Sopenharmony_ci	{ XFS_SCRUB_TYPE_FSCOUNTERS,	"fscounters" }
818c2ecf20Sopenharmony_ci
828c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(xchk_class,
838c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm,
848c2ecf20Sopenharmony_ci		 int error),
858c2ecf20Sopenharmony_ci	TP_ARGS(ip, sm, error),
868c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
878c2ecf20Sopenharmony_ci		__field(dev_t, dev)
888c2ecf20Sopenharmony_ci		__field(xfs_ino_t, ino)
898c2ecf20Sopenharmony_ci		__field(unsigned int, type)
908c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
918c2ecf20Sopenharmony_ci		__field(xfs_ino_t, inum)
928c2ecf20Sopenharmony_ci		__field(unsigned int, gen)
938c2ecf20Sopenharmony_ci		__field(unsigned int, flags)
948c2ecf20Sopenharmony_ci		__field(int, error)
958c2ecf20Sopenharmony_ci	),
968c2ecf20Sopenharmony_ci	TP_fast_assign(
978c2ecf20Sopenharmony_ci		__entry->dev = ip->i_mount->m_super->s_dev;
988c2ecf20Sopenharmony_ci		__entry->ino = ip->i_ino;
998c2ecf20Sopenharmony_ci		__entry->type = sm->sm_type;
1008c2ecf20Sopenharmony_ci		__entry->agno = sm->sm_agno;
1018c2ecf20Sopenharmony_ci		__entry->inum = sm->sm_ino;
1028c2ecf20Sopenharmony_ci		__entry->gen = sm->sm_gen;
1038c2ecf20Sopenharmony_ci		__entry->flags = sm->sm_flags;
1048c2ecf20Sopenharmony_ci		__entry->error = error;
1058c2ecf20Sopenharmony_ci	),
1068c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d ino 0x%llx type %s agno %u inum %llu gen %u flags 0x%x error %d",
1078c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
1088c2ecf20Sopenharmony_ci		  __entry->ino,
1098c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
1108c2ecf20Sopenharmony_ci		  __entry->agno,
1118c2ecf20Sopenharmony_ci		  __entry->inum,
1128c2ecf20Sopenharmony_ci		  __entry->gen,
1138c2ecf20Sopenharmony_ci		  __entry->flags,
1148c2ecf20Sopenharmony_ci		  __entry->error)
1158c2ecf20Sopenharmony_ci)
1168c2ecf20Sopenharmony_ci#define DEFINE_SCRUB_EVENT(name) \
1178c2ecf20Sopenharmony_ciDEFINE_EVENT(xchk_class, name, \
1188c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_inode *ip, struct xfs_scrub_metadata *sm, \
1198c2ecf20Sopenharmony_ci		 int error), \
1208c2ecf20Sopenharmony_ci	TP_ARGS(ip, sm, error))
1218c2ecf20Sopenharmony_ci
1228c2ecf20Sopenharmony_ciDEFINE_SCRUB_EVENT(xchk_start);
1238c2ecf20Sopenharmony_ciDEFINE_SCRUB_EVENT(xchk_done);
1248c2ecf20Sopenharmony_ciDEFINE_SCRUB_EVENT(xchk_deadlock_retry);
1258c2ecf20Sopenharmony_ciDEFINE_SCRUB_EVENT(xrep_attempt);
1268c2ecf20Sopenharmony_ciDEFINE_SCRUB_EVENT(xrep_done);
1278c2ecf20Sopenharmony_ci
1288c2ecf20Sopenharmony_ciTRACE_EVENT(xchk_op_error,
1298c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, xfs_agnumber_t agno,
1308c2ecf20Sopenharmony_ci		 xfs_agblock_t bno, int error, void *ret_ip),
1318c2ecf20Sopenharmony_ci	TP_ARGS(sc, agno, bno, error, ret_ip),
1328c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1338c2ecf20Sopenharmony_ci		__field(dev_t, dev)
1348c2ecf20Sopenharmony_ci		__field(unsigned int, type)
1358c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
1368c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, bno)
1378c2ecf20Sopenharmony_ci		__field(int, error)
1388c2ecf20Sopenharmony_ci		__field(void *, ret_ip)
1398c2ecf20Sopenharmony_ci	),
1408c2ecf20Sopenharmony_ci	TP_fast_assign(
1418c2ecf20Sopenharmony_ci		__entry->dev = sc->mp->m_super->s_dev;
1428c2ecf20Sopenharmony_ci		__entry->type = sc->sm->sm_type;
1438c2ecf20Sopenharmony_ci		__entry->agno = agno;
1448c2ecf20Sopenharmony_ci		__entry->bno = bno;
1458c2ecf20Sopenharmony_ci		__entry->error = error;
1468c2ecf20Sopenharmony_ci		__entry->ret_ip = ret_ip;
1478c2ecf20Sopenharmony_ci	),
1488c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d type %s agno %u agbno %u error %d ret_ip %pS",
1498c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
1508c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
1518c2ecf20Sopenharmony_ci		  __entry->agno,
1528c2ecf20Sopenharmony_ci		  __entry->bno,
1538c2ecf20Sopenharmony_ci		  __entry->error,
1548c2ecf20Sopenharmony_ci		  __entry->ret_ip)
1558c2ecf20Sopenharmony_ci);
1568c2ecf20Sopenharmony_ci
1578c2ecf20Sopenharmony_ciTRACE_EVENT(xchk_file_op_error,
1588c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, int whichfork,
1598c2ecf20Sopenharmony_ci		 xfs_fileoff_t offset, int error, void *ret_ip),
1608c2ecf20Sopenharmony_ci	TP_ARGS(sc, whichfork, offset, error, ret_ip),
1618c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1628c2ecf20Sopenharmony_ci		__field(dev_t, dev)
1638c2ecf20Sopenharmony_ci		__field(xfs_ino_t, ino)
1648c2ecf20Sopenharmony_ci		__field(int, whichfork)
1658c2ecf20Sopenharmony_ci		__field(unsigned int, type)
1668c2ecf20Sopenharmony_ci		__field(xfs_fileoff_t, offset)
1678c2ecf20Sopenharmony_ci		__field(int, error)
1688c2ecf20Sopenharmony_ci		__field(void *, ret_ip)
1698c2ecf20Sopenharmony_ci	),
1708c2ecf20Sopenharmony_ci	TP_fast_assign(
1718c2ecf20Sopenharmony_ci		__entry->dev = sc->ip->i_mount->m_super->s_dev;
1728c2ecf20Sopenharmony_ci		__entry->ino = sc->ip->i_ino;
1738c2ecf20Sopenharmony_ci		__entry->whichfork = whichfork;
1748c2ecf20Sopenharmony_ci		__entry->type = sc->sm->sm_type;
1758c2ecf20Sopenharmony_ci		__entry->offset = offset;
1768c2ecf20Sopenharmony_ci		__entry->error = error;
1778c2ecf20Sopenharmony_ci		__entry->ret_ip = ret_ip;
1788c2ecf20Sopenharmony_ci	),
1798c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d ino 0x%llx fork %d type %s offset %llu error %d ret_ip %pS",
1808c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
1818c2ecf20Sopenharmony_ci		  __entry->ino,
1828c2ecf20Sopenharmony_ci		  __entry->whichfork,
1838c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
1848c2ecf20Sopenharmony_ci		  __entry->offset,
1858c2ecf20Sopenharmony_ci		  __entry->error,
1868c2ecf20Sopenharmony_ci		  __entry->ret_ip)
1878c2ecf20Sopenharmony_ci);
1888c2ecf20Sopenharmony_ci
1898c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(xchk_block_error_class,
1908c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, xfs_daddr_t daddr, void *ret_ip),
1918c2ecf20Sopenharmony_ci	TP_ARGS(sc, daddr, ret_ip),
1928c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
1938c2ecf20Sopenharmony_ci		__field(dev_t, dev)
1948c2ecf20Sopenharmony_ci		__field(unsigned int, type)
1958c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
1968c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, bno)
1978c2ecf20Sopenharmony_ci		__field(void *, ret_ip)
1988c2ecf20Sopenharmony_ci	),
1998c2ecf20Sopenharmony_ci	TP_fast_assign(
2008c2ecf20Sopenharmony_ci		xfs_fsblock_t	fsbno;
2018c2ecf20Sopenharmony_ci		xfs_agnumber_t	agno;
2028c2ecf20Sopenharmony_ci		xfs_agblock_t	bno;
2038c2ecf20Sopenharmony_ci
2048c2ecf20Sopenharmony_ci		fsbno = XFS_DADDR_TO_FSB(sc->mp, daddr);
2058c2ecf20Sopenharmony_ci		agno = XFS_FSB_TO_AGNO(sc->mp, fsbno);
2068c2ecf20Sopenharmony_ci		bno = XFS_FSB_TO_AGBNO(sc->mp, fsbno);
2078c2ecf20Sopenharmony_ci
2088c2ecf20Sopenharmony_ci		__entry->dev = sc->mp->m_super->s_dev;
2098c2ecf20Sopenharmony_ci		__entry->type = sc->sm->sm_type;
2108c2ecf20Sopenharmony_ci		__entry->agno = agno;
2118c2ecf20Sopenharmony_ci		__entry->bno = bno;
2128c2ecf20Sopenharmony_ci		__entry->ret_ip = ret_ip;
2138c2ecf20Sopenharmony_ci	),
2148c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d type %s agno %u agbno %u ret_ip %pS",
2158c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
2168c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
2178c2ecf20Sopenharmony_ci		  __entry->agno,
2188c2ecf20Sopenharmony_ci		  __entry->bno,
2198c2ecf20Sopenharmony_ci		  __entry->ret_ip)
2208c2ecf20Sopenharmony_ci)
2218c2ecf20Sopenharmony_ci
2228c2ecf20Sopenharmony_ci#define DEFINE_SCRUB_BLOCK_ERROR_EVENT(name) \
2238c2ecf20Sopenharmony_ciDEFINE_EVENT(xchk_block_error_class, name, \
2248c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, xfs_daddr_t daddr, \
2258c2ecf20Sopenharmony_ci		 void *ret_ip), \
2268c2ecf20Sopenharmony_ci	TP_ARGS(sc, daddr, ret_ip))
2278c2ecf20Sopenharmony_ci
2288c2ecf20Sopenharmony_ciDEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_fs_error);
2298c2ecf20Sopenharmony_ciDEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_block_error);
2308c2ecf20Sopenharmony_ciDEFINE_SCRUB_BLOCK_ERROR_EVENT(xchk_block_preen);
2318c2ecf20Sopenharmony_ci
2328c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(xchk_ino_error_class,
2338c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, xfs_ino_t ino, void *ret_ip),
2348c2ecf20Sopenharmony_ci	TP_ARGS(sc, ino, ret_ip),
2358c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
2368c2ecf20Sopenharmony_ci		__field(dev_t, dev)
2378c2ecf20Sopenharmony_ci		__field(xfs_ino_t, ino)
2388c2ecf20Sopenharmony_ci		__field(unsigned int, type)
2398c2ecf20Sopenharmony_ci		__field(void *, ret_ip)
2408c2ecf20Sopenharmony_ci	),
2418c2ecf20Sopenharmony_ci	TP_fast_assign(
2428c2ecf20Sopenharmony_ci		__entry->dev = sc->mp->m_super->s_dev;
2438c2ecf20Sopenharmony_ci		__entry->ino = ino;
2448c2ecf20Sopenharmony_ci		__entry->type = sc->sm->sm_type;
2458c2ecf20Sopenharmony_ci		__entry->ret_ip = ret_ip;
2468c2ecf20Sopenharmony_ci	),
2478c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d ino 0x%llx type %s ret_ip %pS",
2488c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
2498c2ecf20Sopenharmony_ci		  __entry->ino,
2508c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
2518c2ecf20Sopenharmony_ci		  __entry->ret_ip)
2528c2ecf20Sopenharmony_ci)
2538c2ecf20Sopenharmony_ci
2548c2ecf20Sopenharmony_ci#define DEFINE_SCRUB_INO_ERROR_EVENT(name) \
2558c2ecf20Sopenharmony_ciDEFINE_EVENT(xchk_ino_error_class, name, \
2568c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, xfs_ino_t ino, \
2578c2ecf20Sopenharmony_ci		 void *ret_ip), \
2588c2ecf20Sopenharmony_ci	TP_ARGS(sc, ino, ret_ip))
2598c2ecf20Sopenharmony_ci
2608c2ecf20Sopenharmony_ciDEFINE_SCRUB_INO_ERROR_EVENT(xchk_ino_error);
2618c2ecf20Sopenharmony_ciDEFINE_SCRUB_INO_ERROR_EVENT(xchk_ino_preen);
2628c2ecf20Sopenharmony_ciDEFINE_SCRUB_INO_ERROR_EVENT(xchk_ino_warning);
2638c2ecf20Sopenharmony_ci
2648c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(xchk_fblock_error_class,
2658c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, int whichfork,
2668c2ecf20Sopenharmony_ci		 xfs_fileoff_t offset, void *ret_ip),
2678c2ecf20Sopenharmony_ci	TP_ARGS(sc, whichfork, offset, ret_ip),
2688c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
2698c2ecf20Sopenharmony_ci		__field(dev_t, dev)
2708c2ecf20Sopenharmony_ci		__field(xfs_ino_t, ino)
2718c2ecf20Sopenharmony_ci		__field(int, whichfork)
2728c2ecf20Sopenharmony_ci		__field(unsigned int, type)
2738c2ecf20Sopenharmony_ci		__field(xfs_fileoff_t, offset)
2748c2ecf20Sopenharmony_ci		__field(void *, ret_ip)
2758c2ecf20Sopenharmony_ci	),
2768c2ecf20Sopenharmony_ci	TP_fast_assign(
2778c2ecf20Sopenharmony_ci		__entry->dev = sc->ip->i_mount->m_super->s_dev;
2788c2ecf20Sopenharmony_ci		__entry->ino = sc->ip->i_ino;
2798c2ecf20Sopenharmony_ci		__entry->whichfork = whichfork;
2808c2ecf20Sopenharmony_ci		__entry->type = sc->sm->sm_type;
2818c2ecf20Sopenharmony_ci		__entry->offset = offset;
2828c2ecf20Sopenharmony_ci		__entry->ret_ip = ret_ip;
2838c2ecf20Sopenharmony_ci	),
2848c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d ino 0x%llx fork %d type %s offset %llu ret_ip %pS",
2858c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
2868c2ecf20Sopenharmony_ci		  __entry->ino,
2878c2ecf20Sopenharmony_ci		  __entry->whichfork,
2888c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
2898c2ecf20Sopenharmony_ci		  __entry->offset,
2908c2ecf20Sopenharmony_ci		  __entry->ret_ip)
2918c2ecf20Sopenharmony_ci);
2928c2ecf20Sopenharmony_ci
2938c2ecf20Sopenharmony_ci#define DEFINE_SCRUB_FBLOCK_ERROR_EVENT(name) \
2948c2ecf20Sopenharmony_ciDEFINE_EVENT(xchk_fblock_error_class, name, \
2958c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, int whichfork, \
2968c2ecf20Sopenharmony_ci		 xfs_fileoff_t offset, void *ret_ip), \
2978c2ecf20Sopenharmony_ci	TP_ARGS(sc, whichfork, offset, ret_ip))
2988c2ecf20Sopenharmony_ci
2998c2ecf20Sopenharmony_ciDEFINE_SCRUB_FBLOCK_ERROR_EVENT(xchk_fblock_error);
3008c2ecf20Sopenharmony_ciDEFINE_SCRUB_FBLOCK_ERROR_EVENT(xchk_fblock_warning);
3018c2ecf20Sopenharmony_ci
3028c2ecf20Sopenharmony_ciTRACE_EVENT(xchk_incomplete,
3038c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, void *ret_ip),
3048c2ecf20Sopenharmony_ci	TP_ARGS(sc, ret_ip),
3058c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
3068c2ecf20Sopenharmony_ci		__field(dev_t, dev)
3078c2ecf20Sopenharmony_ci		__field(unsigned int, type)
3088c2ecf20Sopenharmony_ci		__field(void *, ret_ip)
3098c2ecf20Sopenharmony_ci	),
3108c2ecf20Sopenharmony_ci	TP_fast_assign(
3118c2ecf20Sopenharmony_ci		__entry->dev = sc->mp->m_super->s_dev;
3128c2ecf20Sopenharmony_ci		__entry->type = sc->sm->sm_type;
3138c2ecf20Sopenharmony_ci		__entry->ret_ip = ret_ip;
3148c2ecf20Sopenharmony_ci	),
3158c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d type %s ret_ip %pS",
3168c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
3178c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
3188c2ecf20Sopenharmony_ci		  __entry->ret_ip)
3198c2ecf20Sopenharmony_ci);
3208c2ecf20Sopenharmony_ci
3218c2ecf20Sopenharmony_ciTRACE_EVENT(xchk_btree_op_error,
3228c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
3238c2ecf20Sopenharmony_ci		 int level, int error, void *ret_ip),
3248c2ecf20Sopenharmony_ci	TP_ARGS(sc, cur, level, error, ret_ip),
3258c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
3268c2ecf20Sopenharmony_ci		__field(dev_t, dev)
3278c2ecf20Sopenharmony_ci		__field(unsigned int, type)
3288c2ecf20Sopenharmony_ci		__field(xfs_btnum_t, btnum)
3298c2ecf20Sopenharmony_ci		__field(int, level)
3308c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
3318c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, bno)
3328c2ecf20Sopenharmony_ci		__field(int, ptr)
3338c2ecf20Sopenharmony_ci		__field(int, error)
3348c2ecf20Sopenharmony_ci		__field(void *, ret_ip)
3358c2ecf20Sopenharmony_ci	),
3368c2ecf20Sopenharmony_ci	TP_fast_assign(
3378c2ecf20Sopenharmony_ci		xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
3388c2ecf20Sopenharmony_ci
3398c2ecf20Sopenharmony_ci		__entry->dev = sc->mp->m_super->s_dev;
3408c2ecf20Sopenharmony_ci		__entry->type = sc->sm->sm_type;
3418c2ecf20Sopenharmony_ci		__entry->btnum = cur->bc_btnum;
3428c2ecf20Sopenharmony_ci		__entry->level = level;
3438c2ecf20Sopenharmony_ci		__entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
3448c2ecf20Sopenharmony_ci		__entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
3458c2ecf20Sopenharmony_ci		__entry->ptr = cur->bc_ptrs[level];
3468c2ecf20Sopenharmony_ci		__entry->error = error;
3478c2ecf20Sopenharmony_ci		__entry->ret_ip = ret_ip;
3488c2ecf20Sopenharmony_ci	),
3498c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d type %s btree %s level %d ptr %d agno %u agbno %u error %d ret_ip %pS",
3508c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
3518c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
3528c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
3538c2ecf20Sopenharmony_ci		  __entry->level,
3548c2ecf20Sopenharmony_ci		  __entry->ptr,
3558c2ecf20Sopenharmony_ci		  __entry->agno,
3568c2ecf20Sopenharmony_ci		  __entry->bno,
3578c2ecf20Sopenharmony_ci		  __entry->error,
3588c2ecf20Sopenharmony_ci		  __entry->ret_ip)
3598c2ecf20Sopenharmony_ci);
3608c2ecf20Sopenharmony_ci
3618c2ecf20Sopenharmony_ciTRACE_EVENT(xchk_ifork_btree_op_error,
3628c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
3638c2ecf20Sopenharmony_ci		 int level, int error, void *ret_ip),
3648c2ecf20Sopenharmony_ci	TP_ARGS(sc, cur, level, error, ret_ip),
3658c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
3668c2ecf20Sopenharmony_ci		__field(dev_t, dev)
3678c2ecf20Sopenharmony_ci		__field(xfs_ino_t, ino)
3688c2ecf20Sopenharmony_ci		__field(int, whichfork)
3698c2ecf20Sopenharmony_ci		__field(unsigned int, type)
3708c2ecf20Sopenharmony_ci		__field(xfs_btnum_t, btnum)
3718c2ecf20Sopenharmony_ci		__field(int, level)
3728c2ecf20Sopenharmony_ci		__field(int, ptr)
3738c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
3748c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, bno)
3758c2ecf20Sopenharmony_ci		__field(int, error)
3768c2ecf20Sopenharmony_ci		__field(void *, ret_ip)
3778c2ecf20Sopenharmony_ci	),
3788c2ecf20Sopenharmony_ci	TP_fast_assign(
3798c2ecf20Sopenharmony_ci		xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
3808c2ecf20Sopenharmony_ci		__entry->dev = sc->mp->m_super->s_dev;
3818c2ecf20Sopenharmony_ci		__entry->ino = sc->ip->i_ino;
3828c2ecf20Sopenharmony_ci		__entry->whichfork = cur->bc_ino.whichfork;
3838c2ecf20Sopenharmony_ci		__entry->type = sc->sm->sm_type;
3848c2ecf20Sopenharmony_ci		__entry->btnum = cur->bc_btnum;
3858c2ecf20Sopenharmony_ci		__entry->level = level;
3868c2ecf20Sopenharmony_ci		__entry->ptr = cur->bc_ptrs[level];
3878c2ecf20Sopenharmony_ci		__entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
3888c2ecf20Sopenharmony_ci		__entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
3898c2ecf20Sopenharmony_ci		__entry->error = error;
3908c2ecf20Sopenharmony_ci		__entry->ret_ip = ret_ip;
3918c2ecf20Sopenharmony_ci	),
3928c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d ino 0x%llx fork %d type %s btree %s level %d ptr %d agno %u agbno %u error %d ret_ip %pS",
3938c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
3948c2ecf20Sopenharmony_ci		  __entry->ino,
3958c2ecf20Sopenharmony_ci		  __entry->whichfork,
3968c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
3978c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
3988c2ecf20Sopenharmony_ci		  __entry->level,
3998c2ecf20Sopenharmony_ci		  __entry->ptr,
4008c2ecf20Sopenharmony_ci		  __entry->agno,
4018c2ecf20Sopenharmony_ci		  __entry->bno,
4028c2ecf20Sopenharmony_ci		  __entry->error,
4038c2ecf20Sopenharmony_ci		  __entry->ret_ip)
4048c2ecf20Sopenharmony_ci);
4058c2ecf20Sopenharmony_ci
4068c2ecf20Sopenharmony_ciTRACE_EVENT(xchk_btree_error,
4078c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
4088c2ecf20Sopenharmony_ci		 int level, void *ret_ip),
4098c2ecf20Sopenharmony_ci	TP_ARGS(sc, cur, level, ret_ip),
4108c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
4118c2ecf20Sopenharmony_ci		__field(dev_t, dev)
4128c2ecf20Sopenharmony_ci		__field(unsigned int, type)
4138c2ecf20Sopenharmony_ci		__field(xfs_btnum_t, btnum)
4148c2ecf20Sopenharmony_ci		__field(int, level)
4158c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
4168c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, bno)
4178c2ecf20Sopenharmony_ci		__field(int, ptr)
4188c2ecf20Sopenharmony_ci		__field(void *, ret_ip)
4198c2ecf20Sopenharmony_ci	),
4208c2ecf20Sopenharmony_ci	TP_fast_assign(
4218c2ecf20Sopenharmony_ci		xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
4228c2ecf20Sopenharmony_ci		__entry->dev = sc->mp->m_super->s_dev;
4238c2ecf20Sopenharmony_ci		__entry->type = sc->sm->sm_type;
4248c2ecf20Sopenharmony_ci		__entry->btnum = cur->bc_btnum;
4258c2ecf20Sopenharmony_ci		__entry->level = level;
4268c2ecf20Sopenharmony_ci		__entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
4278c2ecf20Sopenharmony_ci		__entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
4288c2ecf20Sopenharmony_ci		__entry->ptr = cur->bc_ptrs[level];
4298c2ecf20Sopenharmony_ci		__entry->ret_ip = ret_ip;
4308c2ecf20Sopenharmony_ci	),
4318c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d type %s btree %s level %d ptr %d agno %u agbno %u ret_ip %pS",
4328c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
4338c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
4348c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
4358c2ecf20Sopenharmony_ci		  __entry->level,
4368c2ecf20Sopenharmony_ci		  __entry->ptr,
4378c2ecf20Sopenharmony_ci		  __entry->agno,
4388c2ecf20Sopenharmony_ci		  __entry->bno,
4398c2ecf20Sopenharmony_ci		  __entry->ret_ip)
4408c2ecf20Sopenharmony_ci);
4418c2ecf20Sopenharmony_ci
4428c2ecf20Sopenharmony_ciTRACE_EVENT(xchk_ifork_btree_error,
4438c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
4448c2ecf20Sopenharmony_ci		 int level, void *ret_ip),
4458c2ecf20Sopenharmony_ci	TP_ARGS(sc, cur, level, ret_ip),
4468c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
4478c2ecf20Sopenharmony_ci		__field(dev_t, dev)
4488c2ecf20Sopenharmony_ci		__field(xfs_ino_t, ino)
4498c2ecf20Sopenharmony_ci		__field(int, whichfork)
4508c2ecf20Sopenharmony_ci		__field(unsigned int, type)
4518c2ecf20Sopenharmony_ci		__field(xfs_btnum_t, btnum)
4528c2ecf20Sopenharmony_ci		__field(int, level)
4538c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
4548c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, bno)
4558c2ecf20Sopenharmony_ci		__field(int, ptr)
4568c2ecf20Sopenharmony_ci		__field(void *, ret_ip)
4578c2ecf20Sopenharmony_ci	),
4588c2ecf20Sopenharmony_ci	TP_fast_assign(
4598c2ecf20Sopenharmony_ci		xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
4608c2ecf20Sopenharmony_ci		__entry->dev = sc->mp->m_super->s_dev;
4618c2ecf20Sopenharmony_ci		__entry->ino = sc->ip->i_ino;
4628c2ecf20Sopenharmony_ci		__entry->whichfork = cur->bc_ino.whichfork;
4638c2ecf20Sopenharmony_ci		__entry->type = sc->sm->sm_type;
4648c2ecf20Sopenharmony_ci		__entry->btnum = cur->bc_btnum;
4658c2ecf20Sopenharmony_ci		__entry->level = level;
4668c2ecf20Sopenharmony_ci		__entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
4678c2ecf20Sopenharmony_ci		__entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
4688c2ecf20Sopenharmony_ci		__entry->ptr = cur->bc_ptrs[level];
4698c2ecf20Sopenharmony_ci		__entry->ret_ip = ret_ip;
4708c2ecf20Sopenharmony_ci	),
4718c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d ino 0x%llx fork %d type %s btree %s level %d ptr %d agno %u agbno %u ret_ip %pS",
4728c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
4738c2ecf20Sopenharmony_ci		  __entry->ino,
4748c2ecf20Sopenharmony_ci		  __entry->whichfork,
4758c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
4768c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
4778c2ecf20Sopenharmony_ci		  __entry->level,
4788c2ecf20Sopenharmony_ci		  __entry->ptr,
4798c2ecf20Sopenharmony_ci		  __entry->agno,
4808c2ecf20Sopenharmony_ci		  __entry->bno,
4818c2ecf20Sopenharmony_ci		  __entry->ret_ip)
4828c2ecf20Sopenharmony_ci);
4838c2ecf20Sopenharmony_ci
4848c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(xchk_sbtree_class,
4858c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
4868c2ecf20Sopenharmony_ci		 int level),
4878c2ecf20Sopenharmony_ci	TP_ARGS(sc, cur, level),
4888c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
4898c2ecf20Sopenharmony_ci		__field(dev_t, dev)
4908c2ecf20Sopenharmony_ci		__field(int, type)
4918c2ecf20Sopenharmony_ci		__field(xfs_btnum_t, btnum)
4928c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
4938c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, bno)
4948c2ecf20Sopenharmony_ci		__field(int, level)
4958c2ecf20Sopenharmony_ci		__field(int, nlevels)
4968c2ecf20Sopenharmony_ci		__field(int, ptr)
4978c2ecf20Sopenharmony_ci	),
4988c2ecf20Sopenharmony_ci	TP_fast_assign(
4998c2ecf20Sopenharmony_ci		xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
5008c2ecf20Sopenharmony_ci
5018c2ecf20Sopenharmony_ci		__entry->dev = sc->mp->m_super->s_dev;
5028c2ecf20Sopenharmony_ci		__entry->type = sc->sm->sm_type;
5038c2ecf20Sopenharmony_ci		__entry->btnum = cur->bc_btnum;
5048c2ecf20Sopenharmony_ci		__entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
5058c2ecf20Sopenharmony_ci		__entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
5068c2ecf20Sopenharmony_ci		__entry->level = level;
5078c2ecf20Sopenharmony_ci		__entry->nlevels = cur->bc_nlevels;
5088c2ecf20Sopenharmony_ci		__entry->ptr = cur->bc_ptrs[level];
5098c2ecf20Sopenharmony_ci	),
5108c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d type %s btree %s agno %u agbno %u level %d nlevels %d ptr %d",
5118c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
5128c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
5138c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS),
5148c2ecf20Sopenharmony_ci		  __entry->agno,
5158c2ecf20Sopenharmony_ci		  __entry->bno,
5168c2ecf20Sopenharmony_ci		  __entry->level,
5178c2ecf20Sopenharmony_ci		  __entry->nlevels,
5188c2ecf20Sopenharmony_ci		  __entry->ptr)
5198c2ecf20Sopenharmony_ci)
5208c2ecf20Sopenharmony_ci#define DEFINE_SCRUB_SBTREE_EVENT(name) \
5218c2ecf20Sopenharmony_ciDEFINE_EVENT(xchk_sbtree_class, name, \
5228c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur, \
5238c2ecf20Sopenharmony_ci		 int level), \
5248c2ecf20Sopenharmony_ci	TP_ARGS(sc, cur, level))
5258c2ecf20Sopenharmony_ci
5268c2ecf20Sopenharmony_ciDEFINE_SCRUB_SBTREE_EVENT(xchk_btree_rec);
5278c2ecf20Sopenharmony_ciDEFINE_SCRUB_SBTREE_EVENT(xchk_btree_key);
5288c2ecf20Sopenharmony_ci
5298c2ecf20Sopenharmony_ciTRACE_EVENT(xchk_xref_error,
5308c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_scrub *sc, int error, void *ret_ip),
5318c2ecf20Sopenharmony_ci	TP_ARGS(sc, error, ret_ip),
5328c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
5338c2ecf20Sopenharmony_ci		__field(dev_t, dev)
5348c2ecf20Sopenharmony_ci		__field(int, type)
5358c2ecf20Sopenharmony_ci		__field(int, error)
5368c2ecf20Sopenharmony_ci		__field(void *, ret_ip)
5378c2ecf20Sopenharmony_ci	),
5388c2ecf20Sopenharmony_ci	TP_fast_assign(
5398c2ecf20Sopenharmony_ci		__entry->dev = sc->mp->m_super->s_dev;
5408c2ecf20Sopenharmony_ci		__entry->type = sc->sm->sm_type;
5418c2ecf20Sopenharmony_ci		__entry->error = error;
5428c2ecf20Sopenharmony_ci		__entry->ret_ip = ret_ip;
5438c2ecf20Sopenharmony_ci	),
5448c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d type %s xref error %d ret_ip %pS",
5458c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
5468c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->type, XFS_SCRUB_TYPE_STRINGS),
5478c2ecf20Sopenharmony_ci		  __entry->error,
5488c2ecf20Sopenharmony_ci		  __entry->ret_ip)
5498c2ecf20Sopenharmony_ci);
5508c2ecf20Sopenharmony_ci
5518c2ecf20Sopenharmony_ciTRACE_EVENT(xchk_iallocbt_check_cluster,
5528c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
5538c2ecf20Sopenharmony_ci		 xfs_agino_t startino, xfs_daddr_t map_daddr,
5548c2ecf20Sopenharmony_ci		 unsigned short map_len, unsigned int chunk_ino,
5558c2ecf20Sopenharmony_ci		 unsigned int nr_inodes, uint16_t cluster_mask,
5568c2ecf20Sopenharmony_ci		 uint16_t holemask, unsigned int cluster_ino),
5578c2ecf20Sopenharmony_ci	TP_ARGS(mp, agno, startino, map_daddr, map_len, chunk_ino, nr_inodes,
5588c2ecf20Sopenharmony_ci		cluster_mask, holemask, cluster_ino),
5598c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
5608c2ecf20Sopenharmony_ci		__field(dev_t, dev)
5618c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
5628c2ecf20Sopenharmony_ci		__field(xfs_agino_t, startino)
5638c2ecf20Sopenharmony_ci		__field(xfs_daddr_t, map_daddr)
5648c2ecf20Sopenharmony_ci		__field(unsigned short, map_len)
5658c2ecf20Sopenharmony_ci		__field(unsigned int, chunk_ino)
5668c2ecf20Sopenharmony_ci		__field(unsigned int, nr_inodes)
5678c2ecf20Sopenharmony_ci		__field(unsigned int, cluster_ino)
5688c2ecf20Sopenharmony_ci		__field(uint16_t, cluster_mask)
5698c2ecf20Sopenharmony_ci		__field(uint16_t, holemask)
5708c2ecf20Sopenharmony_ci	),
5718c2ecf20Sopenharmony_ci	TP_fast_assign(
5728c2ecf20Sopenharmony_ci		__entry->dev = mp->m_super->s_dev;
5738c2ecf20Sopenharmony_ci		__entry->agno = agno;
5748c2ecf20Sopenharmony_ci		__entry->startino = startino;
5758c2ecf20Sopenharmony_ci		__entry->map_daddr = map_daddr;
5768c2ecf20Sopenharmony_ci		__entry->map_len = map_len;
5778c2ecf20Sopenharmony_ci		__entry->chunk_ino = chunk_ino;
5788c2ecf20Sopenharmony_ci		__entry->nr_inodes = nr_inodes;
5798c2ecf20Sopenharmony_ci		__entry->cluster_mask = cluster_mask;
5808c2ecf20Sopenharmony_ci		__entry->holemask = holemask;
5818c2ecf20Sopenharmony_ci		__entry->cluster_ino = cluster_ino;
5828c2ecf20Sopenharmony_ci	),
5838c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d agno %d startino %u daddr 0x%llx len %d chunkino %u nr_inodes %u cluster_mask 0x%x holemask 0x%x cluster_ino %u",
5848c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
5858c2ecf20Sopenharmony_ci		  __entry->agno,
5868c2ecf20Sopenharmony_ci		  __entry->startino,
5878c2ecf20Sopenharmony_ci		  __entry->map_daddr,
5888c2ecf20Sopenharmony_ci		  __entry->map_len,
5898c2ecf20Sopenharmony_ci		  __entry->chunk_ino,
5908c2ecf20Sopenharmony_ci		  __entry->nr_inodes,
5918c2ecf20Sopenharmony_ci		  __entry->cluster_mask,
5928c2ecf20Sopenharmony_ci		  __entry->holemask,
5938c2ecf20Sopenharmony_ci		  __entry->cluster_ino)
5948c2ecf20Sopenharmony_ci)
5958c2ecf20Sopenharmony_ci
5968c2ecf20Sopenharmony_ciTRACE_EVENT(xchk_fscounters_calc,
5978c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp, uint64_t icount, uint64_t ifree,
5988c2ecf20Sopenharmony_ci		 uint64_t fdblocks, uint64_t delalloc),
5998c2ecf20Sopenharmony_ci	TP_ARGS(mp, icount, ifree, fdblocks, delalloc),
6008c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
6018c2ecf20Sopenharmony_ci		__field(dev_t, dev)
6028c2ecf20Sopenharmony_ci		__field(int64_t, icount_sb)
6038c2ecf20Sopenharmony_ci		__field(uint64_t, icount_calculated)
6048c2ecf20Sopenharmony_ci		__field(int64_t, ifree_sb)
6058c2ecf20Sopenharmony_ci		__field(uint64_t, ifree_calculated)
6068c2ecf20Sopenharmony_ci		__field(int64_t, fdblocks_sb)
6078c2ecf20Sopenharmony_ci		__field(uint64_t, fdblocks_calculated)
6088c2ecf20Sopenharmony_ci		__field(uint64_t, delalloc)
6098c2ecf20Sopenharmony_ci	),
6108c2ecf20Sopenharmony_ci	TP_fast_assign(
6118c2ecf20Sopenharmony_ci		__entry->dev = mp->m_super->s_dev;
6128c2ecf20Sopenharmony_ci		__entry->icount_sb = mp->m_sb.sb_icount;
6138c2ecf20Sopenharmony_ci		__entry->icount_calculated = icount;
6148c2ecf20Sopenharmony_ci		__entry->ifree_sb = mp->m_sb.sb_ifree;
6158c2ecf20Sopenharmony_ci		__entry->ifree_calculated = ifree;
6168c2ecf20Sopenharmony_ci		__entry->fdblocks_sb = mp->m_sb.sb_fdblocks;
6178c2ecf20Sopenharmony_ci		__entry->fdblocks_calculated = fdblocks;
6188c2ecf20Sopenharmony_ci		__entry->delalloc = delalloc;
6198c2ecf20Sopenharmony_ci	),
6208c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d icount %lld:%llu ifree %lld::%llu fdblocks %lld::%llu delalloc %llu",
6218c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
6228c2ecf20Sopenharmony_ci		  __entry->icount_sb,
6238c2ecf20Sopenharmony_ci		  __entry->icount_calculated,
6248c2ecf20Sopenharmony_ci		  __entry->ifree_sb,
6258c2ecf20Sopenharmony_ci		  __entry->ifree_calculated,
6268c2ecf20Sopenharmony_ci		  __entry->fdblocks_sb,
6278c2ecf20Sopenharmony_ci		  __entry->fdblocks_calculated,
6288c2ecf20Sopenharmony_ci		  __entry->delalloc)
6298c2ecf20Sopenharmony_ci)
6308c2ecf20Sopenharmony_ci
6318c2ecf20Sopenharmony_ciTRACE_EVENT(xchk_fscounters_within_range,
6328c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp, uint64_t expected, int64_t curr_value,
6338c2ecf20Sopenharmony_ci		 int64_t old_value),
6348c2ecf20Sopenharmony_ci	TP_ARGS(mp, expected, curr_value, old_value),
6358c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
6368c2ecf20Sopenharmony_ci		__field(dev_t, dev)
6378c2ecf20Sopenharmony_ci		__field(uint64_t, expected)
6388c2ecf20Sopenharmony_ci		__field(int64_t, curr_value)
6398c2ecf20Sopenharmony_ci		__field(int64_t, old_value)
6408c2ecf20Sopenharmony_ci	),
6418c2ecf20Sopenharmony_ci	TP_fast_assign(
6428c2ecf20Sopenharmony_ci		__entry->dev = mp->m_super->s_dev;
6438c2ecf20Sopenharmony_ci		__entry->expected = expected;
6448c2ecf20Sopenharmony_ci		__entry->curr_value = curr_value;
6458c2ecf20Sopenharmony_ci		__entry->old_value = old_value;
6468c2ecf20Sopenharmony_ci	),
6478c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d expected %llu curr_value %lld old_value %lld",
6488c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
6498c2ecf20Sopenharmony_ci		  __entry->expected,
6508c2ecf20Sopenharmony_ci		  __entry->curr_value,
6518c2ecf20Sopenharmony_ci		  __entry->old_value)
6528c2ecf20Sopenharmony_ci)
6538c2ecf20Sopenharmony_ci
6548c2ecf20Sopenharmony_ci/* repair tracepoints */
6558c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_XFS_ONLINE_REPAIR)
6568c2ecf20Sopenharmony_ci
6578c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(xrep_extent_class,
6588c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
6598c2ecf20Sopenharmony_ci		 xfs_agblock_t agbno, xfs_extlen_t len),
6608c2ecf20Sopenharmony_ci	TP_ARGS(mp, agno, agbno, len),
6618c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
6628c2ecf20Sopenharmony_ci		__field(dev_t, dev)
6638c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
6648c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, agbno)
6658c2ecf20Sopenharmony_ci		__field(xfs_extlen_t, len)
6668c2ecf20Sopenharmony_ci	),
6678c2ecf20Sopenharmony_ci	TP_fast_assign(
6688c2ecf20Sopenharmony_ci		__entry->dev = mp->m_super->s_dev;
6698c2ecf20Sopenharmony_ci		__entry->agno = agno;
6708c2ecf20Sopenharmony_ci		__entry->agbno = agbno;
6718c2ecf20Sopenharmony_ci		__entry->len = len;
6728c2ecf20Sopenharmony_ci	),
6738c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d agno %u agbno %u len %u",
6748c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
6758c2ecf20Sopenharmony_ci		  __entry->agno,
6768c2ecf20Sopenharmony_ci		  __entry->agbno,
6778c2ecf20Sopenharmony_ci		  __entry->len)
6788c2ecf20Sopenharmony_ci);
6798c2ecf20Sopenharmony_ci#define DEFINE_REPAIR_EXTENT_EVENT(name) \
6808c2ecf20Sopenharmony_ciDEFINE_EVENT(xrep_extent_class, name, \
6818c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
6828c2ecf20Sopenharmony_ci		 xfs_agblock_t agbno, xfs_extlen_t len), \
6838c2ecf20Sopenharmony_ci	TP_ARGS(mp, agno, agbno, len))
6848c2ecf20Sopenharmony_ciDEFINE_REPAIR_EXTENT_EVENT(xrep_dispose_btree_extent);
6858c2ecf20Sopenharmony_ciDEFINE_REPAIR_EXTENT_EVENT(xrep_agfl_insert);
6868c2ecf20Sopenharmony_ci
6878c2ecf20Sopenharmony_ciDECLARE_EVENT_CLASS(xrep_rmap_class,
6888c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
6898c2ecf20Sopenharmony_ci		 xfs_agblock_t agbno, xfs_extlen_t len,
6908c2ecf20Sopenharmony_ci		 uint64_t owner, uint64_t offset, unsigned int flags),
6918c2ecf20Sopenharmony_ci	TP_ARGS(mp, agno, agbno, len, owner, offset, flags),
6928c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
6938c2ecf20Sopenharmony_ci		__field(dev_t, dev)
6948c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
6958c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, agbno)
6968c2ecf20Sopenharmony_ci		__field(xfs_extlen_t, len)
6978c2ecf20Sopenharmony_ci		__field(uint64_t, owner)
6988c2ecf20Sopenharmony_ci		__field(uint64_t, offset)
6998c2ecf20Sopenharmony_ci		__field(unsigned int, flags)
7008c2ecf20Sopenharmony_ci	),
7018c2ecf20Sopenharmony_ci	TP_fast_assign(
7028c2ecf20Sopenharmony_ci		__entry->dev = mp->m_super->s_dev;
7038c2ecf20Sopenharmony_ci		__entry->agno = agno;
7048c2ecf20Sopenharmony_ci		__entry->agbno = agbno;
7058c2ecf20Sopenharmony_ci		__entry->len = len;
7068c2ecf20Sopenharmony_ci		__entry->owner = owner;
7078c2ecf20Sopenharmony_ci		__entry->offset = offset;
7088c2ecf20Sopenharmony_ci		__entry->flags = flags;
7098c2ecf20Sopenharmony_ci	),
7108c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d agno %u agbno %u len %u owner %lld offset %llu flags 0x%x",
7118c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
7128c2ecf20Sopenharmony_ci		  __entry->agno,
7138c2ecf20Sopenharmony_ci		  __entry->agbno,
7148c2ecf20Sopenharmony_ci		  __entry->len,
7158c2ecf20Sopenharmony_ci		  __entry->owner,
7168c2ecf20Sopenharmony_ci		  __entry->offset,
7178c2ecf20Sopenharmony_ci		  __entry->flags)
7188c2ecf20Sopenharmony_ci);
7198c2ecf20Sopenharmony_ci#define DEFINE_REPAIR_RMAP_EVENT(name) \
7208c2ecf20Sopenharmony_ciDEFINE_EVENT(xrep_rmap_class, name, \
7218c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \
7228c2ecf20Sopenharmony_ci		 xfs_agblock_t agbno, xfs_extlen_t len, \
7238c2ecf20Sopenharmony_ci		 uint64_t owner, uint64_t offset, unsigned int flags), \
7248c2ecf20Sopenharmony_ci	TP_ARGS(mp, agno, agbno, len, owner, offset, flags))
7258c2ecf20Sopenharmony_ciDEFINE_REPAIR_RMAP_EVENT(xrep_alloc_extent_fn);
7268c2ecf20Sopenharmony_ciDEFINE_REPAIR_RMAP_EVENT(xrep_ialloc_extent_fn);
7278c2ecf20Sopenharmony_ciDEFINE_REPAIR_RMAP_EVENT(xrep_rmap_extent_fn);
7288c2ecf20Sopenharmony_ciDEFINE_REPAIR_RMAP_EVENT(xrep_bmap_extent_fn);
7298c2ecf20Sopenharmony_ci
7308c2ecf20Sopenharmony_ciTRACE_EVENT(xrep_refcount_extent_fn,
7318c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
7328c2ecf20Sopenharmony_ci		 struct xfs_refcount_irec *irec),
7338c2ecf20Sopenharmony_ci	TP_ARGS(mp, agno, irec),
7348c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
7358c2ecf20Sopenharmony_ci		__field(dev_t, dev)
7368c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
7378c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, startblock)
7388c2ecf20Sopenharmony_ci		__field(xfs_extlen_t, blockcount)
7398c2ecf20Sopenharmony_ci		__field(xfs_nlink_t, refcount)
7408c2ecf20Sopenharmony_ci	),
7418c2ecf20Sopenharmony_ci	TP_fast_assign(
7428c2ecf20Sopenharmony_ci		__entry->dev = mp->m_super->s_dev;
7438c2ecf20Sopenharmony_ci		__entry->agno = agno;
7448c2ecf20Sopenharmony_ci		__entry->startblock = irec->rc_startblock;
7458c2ecf20Sopenharmony_ci		__entry->blockcount = irec->rc_blockcount;
7468c2ecf20Sopenharmony_ci		__entry->refcount = irec->rc_refcount;
7478c2ecf20Sopenharmony_ci	),
7488c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d agno %u agbno %u len %u refcount %u",
7498c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
7508c2ecf20Sopenharmony_ci		  __entry->agno,
7518c2ecf20Sopenharmony_ci		  __entry->startblock,
7528c2ecf20Sopenharmony_ci		  __entry->blockcount,
7538c2ecf20Sopenharmony_ci		  __entry->refcount)
7548c2ecf20Sopenharmony_ci)
7558c2ecf20Sopenharmony_ci
7568c2ecf20Sopenharmony_ciTRACE_EVENT(xrep_init_btblock,
7578c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno,
7588c2ecf20Sopenharmony_ci		 xfs_btnum_t btnum),
7598c2ecf20Sopenharmony_ci	TP_ARGS(mp, agno, agbno, btnum),
7608c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
7618c2ecf20Sopenharmony_ci		__field(dev_t, dev)
7628c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
7638c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, agbno)
7648c2ecf20Sopenharmony_ci		__field(uint32_t, btnum)
7658c2ecf20Sopenharmony_ci	),
7668c2ecf20Sopenharmony_ci	TP_fast_assign(
7678c2ecf20Sopenharmony_ci		__entry->dev = mp->m_super->s_dev;
7688c2ecf20Sopenharmony_ci		__entry->agno = agno;
7698c2ecf20Sopenharmony_ci		__entry->agbno = agbno;
7708c2ecf20Sopenharmony_ci		__entry->btnum = btnum;
7718c2ecf20Sopenharmony_ci	),
7728c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d agno %u agbno %u btree %s",
7738c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
7748c2ecf20Sopenharmony_ci		  __entry->agno,
7758c2ecf20Sopenharmony_ci		  __entry->agbno,
7768c2ecf20Sopenharmony_ci		  __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS))
7778c2ecf20Sopenharmony_ci)
7788c2ecf20Sopenharmony_ciTRACE_EVENT(xrep_findroot_block,
7798c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno,
7808c2ecf20Sopenharmony_ci		 uint32_t magic, uint16_t level),
7818c2ecf20Sopenharmony_ci	TP_ARGS(mp, agno, agbno, magic, level),
7828c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
7838c2ecf20Sopenharmony_ci		__field(dev_t, dev)
7848c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
7858c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, agbno)
7868c2ecf20Sopenharmony_ci		__field(uint32_t, magic)
7878c2ecf20Sopenharmony_ci		__field(uint16_t, level)
7888c2ecf20Sopenharmony_ci	),
7898c2ecf20Sopenharmony_ci	TP_fast_assign(
7908c2ecf20Sopenharmony_ci		__entry->dev = mp->m_super->s_dev;
7918c2ecf20Sopenharmony_ci		__entry->agno = agno;
7928c2ecf20Sopenharmony_ci		__entry->agbno = agbno;
7938c2ecf20Sopenharmony_ci		__entry->magic = magic;
7948c2ecf20Sopenharmony_ci		__entry->level = level;
7958c2ecf20Sopenharmony_ci	),
7968c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d agno %u agbno %u magic 0x%x level %u",
7978c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
7988c2ecf20Sopenharmony_ci		  __entry->agno,
7998c2ecf20Sopenharmony_ci		  __entry->agbno,
8008c2ecf20Sopenharmony_ci		  __entry->magic,
8018c2ecf20Sopenharmony_ci		  __entry->level)
8028c2ecf20Sopenharmony_ci)
8038c2ecf20Sopenharmony_ciTRACE_EVENT(xrep_calc_ag_resblks,
8048c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
8058c2ecf20Sopenharmony_ci		 xfs_agino_t icount, xfs_agblock_t aglen, xfs_agblock_t freelen,
8068c2ecf20Sopenharmony_ci		 xfs_agblock_t usedlen),
8078c2ecf20Sopenharmony_ci	TP_ARGS(mp, agno, icount, aglen, freelen, usedlen),
8088c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
8098c2ecf20Sopenharmony_ci		__field(dev_t, dev)
8108c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
8118c2ecf20Sopenharmony_ci		__field(xfs_agino_t, icount)
8128c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, aglen)
8138c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, freelen)
8148c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, usedlen)
8158c2ecf20Sopenharmony_ci	),
8168c2ecf20Sopenharmony_ci	TP_fast_assign(
8178c2ecf20Sopenharmony_ci		__entry->dev = mp->m_super->s_dev;
8188c2ecf20Sopenharmony_ci		__entry->agno = agno;
8198c2ecf20Sopenharmony_ci		__entry->icount = icount;
8208c2ecf20Sopenharmony_ci		__entry->aglen = aglen;
8218c2ecf20Sopenharmony_ci		__entry->freelen = freelen;
8228c2ecf20Sopenharmony_ci		__entry->usedlen = usedlen;
8238c2ecf20Sopenharmony_ci	),
8248c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d agno %d icount %u aglen %u freelen %u usedlen %u",
8258c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
8268c2ecf20Sopenharmony_ci		  __entry->agno,
8278c2ecf20Sopenharmony_ci		  __entry->icount,
8288c2ecf20Sopenharmony_ci		  __entry->aglen,
8298c2ecf20Sopenharmony_ci		  __entry->freelen,
8308c2ecf20Sopenharmony_ci		  __entry->usedlen)
8318c2ecf20Sopenharmony_ci)
8328c2ecf20Sopenharmony_ciTRACE_EVENT(xrep_calc_ag_resblks_btsize,
8338c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
8348c2ecf20Sopenharmony_ci		 xfs_agblock_t bnobt_sz, xfs_agblock_t inobt_sz,
8358c2ecf20Sopenharmony_ci		 xfs_agblock_t rmapbt_sz, xfs_agblock_t refcbt_sz),
8368c2ecf20Sopenharmony_ci	TP_ARGS(mp, agno, bnobt_sz, inobt_sz, rmapbt_sz, refcbt_sz),
8378c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
8388c2ecf20Sopenharmony_ci		__field(dev_t, dev)
8398c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
8408c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, bnobt_sz)
8418c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, inobt_sz)
8428c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, rmapbt_sz)
8438c2ecf20Sopenharmony_ci		__field(xfs_agblock_t, refcbt_sz)
8448c2ecf20Sopenharmony_ci	),
8458c2ecf20Sopenharmony_ci	TP_fast_assign(
8468c2ecf20Sopenharmony_ci		__entry->dev = mp->m_super->s_dev;
8478c2ecf20Sopenharmony_ci		__entry->agno = agno;
8488c2ecf20Sopenharmony_ci		__entry->bnobt_sz = bnobt_sz;
8498c2ecf20Sopenharmony_ci		__entry->inobt_sz = inobt_sz;
8508c2ecf20Sopenharmony_ci		__entry->rmapbt_sz = rmapbt_sz;
8518c2ecf20Sopenharmony_ci		__entry->refcbt_sz = refcbt_sz;
8528c2ecf20Sopenharmony_ci	),
8538c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d agno %d bno %u ino %u rmap %u refcount %u",
8548c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
8558c2ecf20Sopenharmony_ci		  __entry->agno,
8568c2ecf20Sopenharmony_ci		  __entry->bnobt_sz,
8578c2ecf20Sopenharmony_ci		  __entry->inobt_sz,
8588c2ecf20Sopenharmony_ci		  __entry->rmapbt_sz,
8598c2ecf20Sopenharmony_ci		  __entry->refcbt_sz)
8608c2ecf20Sopenharmony_ci)
8618c2ecf20Sopenharmony_ciTRACE_EVENT(xrep_reset_counters,
8628c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp),
8638c2ecf20Sopenharmony_ci	TP_ARGS(mp),
8648c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
8658c2ecf20Sopenharmony_ci		__field(dev_t, dev)
8668c2ecf20Sopenharmony_ci	),
8678c2ecf20Sopenharmony_ci	TP_fast_assign(
8688c2ecf20Sopenharmony_ci		__entry->dev = mp->m_super->s_dev;
8698c2ecf20Sopenharmony_ci	),
8708c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d",
8718c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev))
8728c2ecf20Sopenharmony_ci)
8738c2ecf20Sopenharmony_ci
8748c2ecf20Sopenharmony_ciTRACE_EVENT(xrep_ialloc_insert,
8758c2ecf20Sopenharmony_ci	TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno,
8768c2ecf20Sopenharmony_ci		 xfs_agino_t startino, uint16_t holemask, uint8_t count,
8778c2ecf20Sopenharmony_ci		 uint8_t freecount, uint64_t freemask),
8788c2ecf20Sopenharmony_ci	TP_ARGS(mp, agno, startino, holemask, count, freecount, freemask),
8798c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
8808c2ecf20Sopenharmony_ci		__field(dev_t, dev)
8818c2ecf20Sopenharmony_ci		__field(xfs_agnumber_t, agno)
8828c2ecf20Sopenharmony_ci		__field(xfs_agino_t, startino)
8838c2ecf20Sopenharmony_ci		__field(uint16_t, holemask)
8848c2ecf20Sopenharmony_ci		__field(uint8_t, count)
8858c2ecf20Sopenharmony_ci		__field(uint8_t, freecount)
8868c2ecf20Sopenharmony_ci		__field(uint64_t, freemask)
8878c2ecf20Sopenharmony_ci	),
8888c2ecf20Sopenharmony_ci	TP_fast_assign(
8898c2ecf20Sopenharmony_ci		__entry->dev = mp->m_super->s_dev;
8908c2ecf20Sopenharmony_ci		__entry->agno = agno;
8918c2ecf20Sopenharmony_ci		__entry->startino = startino;
8928c2ecf20Sopenharmony_ci		__entry->holemask = holemask;
8938c2ecf20Sopenharmony_ci		__entry->count = count;
8948c2ecf20Sopenharmony_ci		__entry->freecount = freecount;
8958c2ecf20Sopenharmony_ci		__entry->freemask = freemask;
8968c2ecf20Sopenharmony_ci	),
8978c2ecf20Sopenharmony_ci	TP_printk("dev %d:%d agno %d startino %u holemask 0x%x count %u freecount %u freemask 0x%llx",
8988c2ecf20Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
8998c2ecf20Sopenharmony_ci		  __entry->agno,
9008c2ecf20Sopenharmony_ci		  __entry->startino,
9018c2ecf20Sopenharmony_ci		  __entry->holemask,
9028c2ecf20Sopenharmony_ci		  __entry->count,
9038c2ecf20Sopenharmony_ci		  __entry->freecount,
9048c2ecf20Sopenharmony_ci		  __entry->freemask)
9058c2ecf20Sopenharmony_ci)
9068c2ecf20Sopenharmony_ci
9078c2ecf20Sopenharmony_ci#endif /* IS_ENABLED(CONFIG_XFS_ONLINE_REPAIR) */
9088c2ecf20Sopenharmony_ci
9098c2ecf20Sopenharmony_ci#endif /* _TRACE_XFS_SCRUB_TRACE_H */
9108c2ecf20Sopenharmony_ci
9118c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_PATH
9128c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_PATH .
9138c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_FILE scrub/trace
9148c2ecf20Sopenharmony_ci#include <trace/define_trace.h>
915