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