10b61f8a4SDave Chinner // SPDX-License-Identifier: GPL-2.0 2c59d87c4SChristoph Hellwig /* 3c59d87c4SChristoph Hellwig * Copyright (c) 2009, Christoph Hellwig 4c59d87c4SChristoph Hellwig * All Rights Reserved. 5e5f2e54aSDarrick J. Wong * 6e5f2e54aSDarrick J. Wong * NOTE: none of these tracepoints shall be considered a stable kernel ABI 7e5f2e54aSDarrick J. Wong * as they can change at any time. 8e5f2e54aSDarrick J. Wong * 9e5f2e54aSDarrick J. Wong * Current conventions for printing numbers measuring specific units: 10e5f2e54aSDarrick J. Wong * 11e5f2e54aSDarrick J. Wong * agno: allocation group number 12e5f2e54aSDarrick J. Wong * 13e5f2e54aSDarrick J. Wong * agino: per-AG inode number 14e5f2e54aSDarrick J. Wong * ino: filesystem inode number 15e5f2e54aSDarrick J. Wong * 16e5f2e54aSDarrick J. Wong * agbno: per-AG block number in fs blocks 17e5f2e54aSDarrick J. Wong * startblock: physical block number for file mappings. This is either a 18e5f2e54aSDarrick J. Wong * segmented fsblock for data device mappings, or a rfsblock 19e5f2e54aSDarrick J. Wong * for realtime device mappings 20e5f2e54aSDarrick J. Wong * fsbcount: number of blocks in an extent, in fs blocks 21e5f2e54aSDarrick J. Wong * 22e5f2e54aSDarrick J. Wong * daddr: physical block number in 512b blocks 23e5f2e54aSDarrick J. Wong * bbcount: number of blocks in a physical extent, in 512b blocks 24e5f2e54aSDarrick J. Wong * 25526aab5fSDarrick J. Wong * rtx: physical rt extent number for extent mappings 26526aab5fSDarrick J. Wong * rtxcount: number of rt extents in an extent mapping 27526aab5fSDarrick J. Wong * 28e5f2e54aSDarrick J. Wong * owner: reverse-mapping owner, usually inodes 29e5f2e54aSDarrick J. Wong * 30e5f2e54aSDarrick J. Wong * fileoff: file offset, in fs blocks 31e5f2e54aSDarrick J. Wong * pos: file offset, in bytes 32e5f2e54aSDarrick J. Wong * bytecount: number of bytes 33e5f2e54aSDarrick J. Wong * 34e5f2e54aSDarrick J. Wong * disize: ondisk file size, in bytes 35e5f2e54aSDarrick J. Wong * isize: incore file size, in bytes 36e5f2e54aSDarrick J. Wong * 37e5f2e54aSDarrick J. Wong * forkoff: inode fork offset, in bytes 38e5f2e54aSDarrick J. Wong * 39e5f2e54aSDarrick J. Wong * ireccount: number of inode records 40e5f2e54aSDarrick J. Wong * 41e5f2e54aSDarrick J. Wong * Numbers describing space allocations (blocks, extents, inodes) should be 42e5f2e54aSDarrick J. Wong * formatted in hexadecimal. 43c59d87c4SChristoph Hellwig */ 44c59d87c4SChristoph Hellwig #undef TRACE_SYSTEM 45c59d87c4SChristoph Hellwig #define TRACE_SYSTEM xfs 46c59d87c4SChristoph Hellwig 47c59d87c4SChristoph Hellwig #if !defined(_TRACE_XFS_H) || defined(TRACE_HEADER_MULTI_READ) 48c59d87c4SChristoph Hellwig #define _TRACE_XFS_H 49c59d87c4SChristoph Hellwig 50c59d87c4SChristoph Hellwig #include <linux/tracepoint.h> 51c59d87c4SChristoph Hellwig 52c59d87c4SChristoph Hellwig struct xfs_agf; 53c59d87c4SChristoph Hellwig struct xfs_alloc_arg; 54c59d87c4SChristoph Hellwig struct xfs_attr_list_context; 55c59d87c4SChristoph Hellwig struct xfs_buf_log_item; 56c59d87c4SChristoph Hellwig struct xfs_da_args; 57c59d87c4SChristoph Hellwig struct xfs_da_node_entry; 58c59d87c4SChristoph Hellwig struct xfs_dquot; 599e4c109aSChristoph Hellwig struct xfs_log_item; 60ad223e60SMark Tinguely struct xlog; 61750b9c90SDave Chinner struct xlog_ticket; 62c59d87c4SChristoph Hellwig struct xlog_recover; 63c59d87c4SChristoph Hellwig struct xlog_recover_item; 640ad95687SDave Chinner struct xlog_rec_header; 65956f6daaSDave Chinner struct xlog_in_core; 66c59d87c4SChristoph Hellwig struct xfs_buf_log_format; 67c59d87c4SChristoph Hellwig struct xfs_inode_log_format; 681ed845dfSAlex Elder struct xfs_bmbt_irec; 692c813ad6SDarrick J. Wong struct xfs_btree_cur; 701946b91cSDarrick J. Wong struct xfs_refcount_irec; 71e89c0413SDarrick J. Wong struct xfs_fsmap; 72e89c0413SDarrick J. Wong struct xfs_rmap_irec; 730ad95687SDave Chinner struct xfs_icreate_log; 740ad95687SDave Chinner struct xfs_owner_info; 750ad95687SDave Chinner struct xfs_trans_res; 760ad95687SDave Chinner struct xfs_inobt_rec_incore; 7760e3d707SDarrick J. Wong union xfs_btree_ptr; 782cb91babSDarrick J. Wong struct xfs_dqtrx; 79b26b2bf1SDarrick J. Wong struct xfs_icwalk; 80571e2592SDave Chinner struct xfs_perag; 81c59d87c4SChristoph Hellwig 82d5f0f49aSChristoph Hellwig #define XFS_ATTR_FILTER_FLAGS \ 83d5f0f49aSChristoph Hellwig { XFS_ATTR_ROOT, "ROOT" }, \ 84254f800fSChristoph Hellwig { XFS_ATTR_SECURE, "SECURE" }, \ 85254f800fSChristoph Hellwig { XFS_ATTR_INCOMPLETE, "INCOMPLETE" } 86d5f0f49aSChristoph Hellwig 87c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_attr_list_class, 88c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_attr_list_context *ctx), 89c59d87c4SChristoph Hellwig TP_ARGS(ctx), 90c59d87c4SChristoph Hellwig TP_STRUCT__entry( 91c59d87c4SChristoph Hellwig __field(dev_t, dev) 92c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 93c59d87c4SChristoph Hellwig __field(u32, hashval) 94c59d87c4SChristoph Hellwig __field(u32, blkno) 95c59d87c4SChristoph Hellwig __field(u32, offset) 96a9c8c69bSChristoph Hellwig __field(void *, buffer) 97c59d87c4SChristoph Hellwig __field(int, bufsize) 98c59d87c4SChristoph Hellwig __field(int, count) 99c59d87c4SChristoph Hellwig __field(int, firstu) 100c59d87c4SChristoph Hellwig __field(int, dupcnt) 101d5f0f49aSChristoph Hellwig __field(unsigned int, attr_filter) 102c59d87c4SChristoph Hellwig ), 103c59d87c4SChristoph Hellwig TP_fast_assign( 104c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ctx->dp)->i_sb->s_dev; 105c59d87c4SChristoph Hellwig __entry->ino = ctx->dp->i_ino; 106e3a19cdeSChristoph Hellwig __entry->hashval = ctx->cursor.hashval; 107e3a19cdeSChristoph Hellwig __entry->blkno = ctx->cursor.blkno; 108e3a19cdeSChristoph Hellwig __entry->offset = ctx->cursor.offset; 109a9c8c69bSChristoph Hellwig __entry->buffer = ctx->buffer; 110c59d87c4SChristoph Hellwig __entry->bufsize = ctx->bufsize; 111c59d87c4SChristoph Hellwig __entry->count = ctx->count; 112c59d87c4SChristoph Hellwig __entry->firstu = ctx->firstu; 113d5f0f49aSChristoph Hellwig __entry->attr_filter = ctx->attr_filter; 114c59d87c4SChristoph Hellwig ), 115c59d87c4SChristoph Hellwig TP_printk("dev %d:%d ino 0x%llx cursor h/b/o 0x%x/0x%x/%u dupcnt %u " 116d5f0f49aSChristoph Hellwig "buffer %p size %u count %u firstu %u filter %s", 117c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 118c59d87c4SChristoph Hellwig __entry->ino, 119c59d87c4SChristoph Hellwig __entry->hashval, 120c59d87c4SChristoph Hellwig __entry->blkno, 121c59d87c4SChristoph Hellwig __entry->offset, 122c59d87c4SChristoph Hellwig __entry->dupcnt, 123a9c8c69bSChristoph Hellwig __entry->buffer, 124c59d87c4SChristoph Hellwig __entry->bufsize, 125c59d87c4SChristoph Hellwig __entry->count, 126c59d87c4SChristoph Hellwig __entry->firstu, 127d5f0f49aSChristoph Hellwig __print_flags(__entry->attr_filter, "|", 128d5f0f49aSChristoph Hellwig XFS_ATTR_FILTER_FLAGS) 129c59d87c4SChristoph Hellwig ) 130c59d87c4SChristoph Hellwig ) 131c59d87c4SChristoph Hellwig 132c59d87c4SChristoph Hellwig #define DEFINE_ATTR_LIST_EVENT(name) \ 133c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_attr_list_class, name, \ 134c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_attr_list_context *ctx), \ 135c59d87c4SChristoph Hellwig TP_ARGS(ctx)) 136c59d87c4SChristoph Hellwig DEFINE_ATTR_LIST_EVENT(xfs_attr_list_sf); 137c59d87c4SChristoph Hellwig DEFINE_ATTR_LIST_EVENT(xfs_attr_list_sf_all); 138c59d87c4SChristoph Hellwig DEFINE_ATTR_LIST_EVENT(xfs_attr_list_leaf); 139c59d87c4SChristoph Hellwig DEFINE_ATTR_LIST_EVENT(xfs_attr_list_leaf_end); 140c59d87c4SChristoph Hellwig DEFINE_ATTR_LIST_EVENT(xfs_attr_list_full); 141c59d87c4SChristoph Hellwig DEFINE_ATTR_LIST_EVENT(xfs_attr_list_add); 142c59d87c4SChristoph Hellwig DEFINE_ATTR_LIST_EVENT(xfs_attr_list_wrong_blk); 143c59d87c4SChristoph Hellwig DEFINE_ATTR_LIST_EVENT(xfs_attr_list_notfound); 144ee73259bSDave Chinner DEFINE_ATTR_LIST_EVENT(xfs_attr_leaf_list); 145ee73259bSDave Chinner DEFINE_ATTR_LIST_EVENT(xfs_attr_node_list); 146c59d87c4SChristoph Hellwig 14763370326SDarrick J. Wong TRACE_EVENT(xlog_intent_recovery_failed, 14863370326SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, int error, void *function), 14963370326SDarrick J. Wong TP_ARGS(mp, error, function), 15063370326SDarrick J. Wong TP_STRUCT__entry( 15163370326SDarrick J. Wong __field(dev_t, dev) 15263370326SDarrick J. Wong __field(int, error) 15363370326SDarrick J. Wong __field(void *, function) 15463370326SDarrick J. Wong ), 15563370326SDarrick J. Wong TP_fast_assign( 15663370326SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 15763370326SDarrick J. Wong __entry->error = error; 15863370326SDarrick J. Wong __entry->function = function; 15963370326SDarrick J. Wong ), 16063370326SDarrick J. Wong TP_printk("dev %d:%d error %d function %pS", 16163370326SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 16263370326SDarrick J. Wong __entry->error, __entry->function) 16363370326SDarrick J. Wong ); 16463370326SDarrick J. Wong 165c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_perag_class, 166368e2d09SDave Chinner TP_PROTO(struct xfs_perag *pag, unsigned long caller_ip), 167368e2d09SDave Chinner TP_ARGS(pag, caller_ip), 168c59d87c4SChristoph Hellwig TP_STRUCT__entry( 169c59d87c4SChristoph Hellwig __field(dev_t, dev) 170c59d87c4SChristoph Hellwig __field(xfs_agnumber_t, agno) 171c59d87c4SChristoph Hellwig __field(int, refcount) 172368e2d09SDave Chinner __field(int, active_refcount) 173c59d87c4SChristoph Hellwig __field(unsigned long, caller_ip) 174c59d87c4SChristoph Hellwig ), 175c59d87c4SChristoph Hellwig TP_fast_assign( 176368e2d09SDave Chinner __entry->dev = pag->pag_mount->m_super->s_dev; 177368e2d09SDave Chinner __entry->agno = pag->pag_agno; 178368e2d09SDave Chinner __entry->refcount = atomic_read(&pag->pag_ref); 179368e2d09SDave Chinner __entry->active_refcount = atomic_read(&pag->pag_active_ref); 180c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 181c59d87c4SChristoph Hellwig ), 182368e2d09SDave Chinner TP_printk("dev %d:%d agno 0x%x passive refs %d active refs %d caller %pS", 183c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 184c59d87c4SChristoph Hellwig __entry->agno, 185c59d87c4SChristoph Hellwig __entry->refcount, 186368e2d09SDave Chinner __entry->active_refcount, 187c59d87c4SChristoph Hellwig (char *)__entry->caller_ip) 188c59d87c4SChristoph Hellwig ); 189c59d87c4SChristoph Hellwig 190c59d87c4SChristoph Hellwig #define DEFINE_PERAG_REF_EVENT(name) \ 191c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_perag_class, name, \ 192368e2d09SDave Chinner TP_PROTO(struct xfs_perag *pag, unsigned long caller_ip), \ 193368e2d09SDave Chinner TP_ARGS(pag, caller_ip)) 194c59d87c4SChristoph Hellwig DEFINE_PERAG_REF_EVENT(xfs_perag_get); 195c59d87c4SChristoph Hellwig DEFINE_PERAG_REF_EVENT(xfs_perag_get_tag); 1969b2e5a23SDarrick J. Wong DEFINE_PERAG_REF_EVENT(xfs_perag_hold); 197c59d87c4SChristoph Hellwig DEFINE_PERAG_REF_EVENT(xfs_perag_put); 198c4d5660aSDave Chinner DEFINE_PERAG_REF_EVENT(xfs_perag_grab); 199c4d5660aSDave Chinner DEFINE_PERAG_REF_EVENT(xfs_perag_grab_tag); 200c4d5660aSDave Chinner DEFINE_PERAG_REF_EVENT(xfs_perag_rele); 201c076ae7aSDarrick J. Wong DEFINE_PERAG_REF_EVENT(xfs_perag_set_inode_tag); 202c076ae7aSDarrick J. Wong DEFINE_PERAG_REF_EVENT(xfs_perag_clear_inode_tag); 203c59d87c4SChristoph Hellwig 20440b1de00SDarrick J. Wong TRACE_EVENT(xfs_inodegc_worker, 20540b1de00SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, unsigned int shrinker_hits), 20640b1de00SDarrick J. Wong TP_ARGS(mp, shrinker_hits), 20740b1de00SDarrick J. Wong TP_STRUCT__entry( 20840b1de00SDarrick J. Wong __field(dev_t, dev) 20940b1de00SDarrick J. Wong __field(unsigned int, shrinker_hits) 21040b1de00SDarrick J. Wong ), 21140b1de00SDarrick J. Wong TP_fast_assign( 21240b1de00SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 21340b1de00SDarrick J. Wong __entry->shrinker_hits = shrinker_hits; 21440b1de00SDarrick J. Wong ), 21540b1de00SDarrick J. Wong TP_printk("dev %d:%d shrinker_hits %u", 21640b1de00SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 21740b1de00SDarrick J. Wong __entry->shrinker_hits) 21840b1de00SDarrick J. Wong ); 21940b1de00SDarrick J. Wong 220ab23a776SDave Chinner DECLARE_EVENT_CLASS(xfs_fs_class, 221ab23a776SDave Chinner TP_PROTO(struct xfs_mount *mp, void *caller_ip), 222ab23a776SDave Chinner TP_ARGS(mp, caller_ip), 223ab23a776SDave Chinner TP_STRUCT__entry( 224ab23a776SDave Chinner __field(dev_t, dev) 225ab23a776SDave Chinner __field(unsigned long long, mflags) 226ab23a776SDave Chinner __field(unsigned long, opstate) 227ab23a776SDave Chinner __field(unsigned long, sbflags) 228ab23a776SDave Chinner __field(void *, caller_ip) 229ab23a776SDave Chinner ), 230ab23a776SDave Chinner TP_fast_assign( 231ab23a776SDave Chinner if (mp) { 232ab23a776SDave Chinner __entry->dev = mp->m_super->s_dev; 2332e973b2cSDave Chinner __entry->mflags = mp->m_features; 234ab23a776SDave Chinner __entry->opstate = mp->m_opstate; 235ab23a776SDave Chinner __entry->sbflags = mp->m_super->s_flags; 236ab23a776SDave Chinner } 237ab23a776SDave Chinner __entry->caller_ip = caller_ip; 238ab23a776SDave Chinner ), 2392e973b2cSDave Chinner TP_printk("dev %d:%d m_features 0x%llx opstate (%s) s_flags 0x%lx caller %pS", 240ab23a776SDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 241ab23a776SDave Chinner __entry->mflags, 242ab23a776SDave Chinner __print_flags(__entry->opstate, "|", XFS_OPSTATE_STRINGS), 243ab23a776SDave Chinner __entry->sbflags, 244ab23a776SDave Chinner __entry->caller_ip) 245ab23a776SDave Chinner ); 246ab23a776SDave Chinner 247ab23a776SDave Chinner #define DEFINE_FS_EVENT(name) \ 248ab23a776SDave Chinner DEFINE_EVENT(xfs_fs_class, name, \ 249ab23a776SDave Chinner TP_PROTO(struct xfs_mount *mp, void *caller_ip), \ 250ab23a776SDave Chinner TP_ARGS(mp, caller_ip)) 251ab23a776SDave Chinner DEFINE_FS_EVENT(xfs_inodegc_flush); 2525e672cd6SDave Chinner DEFINE_FS_EVENT(xfs_inodegc_push); 253ab23a776SDave Chinner DEFINE_FS_EVENT(xfs_inodegc_start); 254ab23a776SDave Chinner DEFINE_FS_EVENT(xfs_inodegc_stop); 255ab23a776SDave Chinner DEFINE_FS_EVENT(xfs_inodegc_queue); 256ab23a776SDave Chinner DEFINE_FS_EVENT(xfs_inodegc_throttle); 257ab23a776SDave Chinner DEFINE_FS_EVENT(xfs_fs_sync_fs); 2586f649091SDarrick J. Wong DEFINE_FS_EVENT(xfs_blockgc_start); 2596f649091SDarrick J. Wong DEFINE_FS_EVENT(xfs_blockgc_stop); 2606f649091SDarrick J. Wong DEFINE_FS_EVENT(xfs_blockgc_worker); 261e8d04c2aSDarrick J. Wong DEFINE_FS_EVENT(xfs_blockgc_flush_all); 262ab23a776SDave Chinner 26340b1de00SDarrick J. Wong TRACE_EVENT(xfs_inodegc_shrinker_scan, 26440b1de00SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct shrink_control *sc, 26540b1de00SDarrick J. Wong void *caller_ip), 26640b1de00SDarrick J. Wong TP_ARGS(mp, sc, caller_ip), 26740b1de00SDarrick J. Wong TP_STRUCT__entry( 26840b1de00SDarrick J. Wong __field(dev_t, dev) 26940b1de00SDarrick J. Wong __field(unsigned long, nr_to_scan) 27040b1de00SDarrick J. Wong __field(void *, caller_ip) 27140b1de00SDarrick J. Wong ), 27240b1de00SDarrick J. Wong TP_fast_assign( 27340b1de00SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 27440b1de00SDarrick J. Wong __entry->nr_to_scan = sc->nr_to_scan; 27540b1de00SDarrick J. Wong __entry->caller_ip = caller_ip; 27640b1de00SDarrick J. Wong ), 27740b1de00SDarrick J. Wong TP_printk("dev %d:%d nr_to_scan %lu caller %pS", 27840b1de00SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 27940b1de00SDarrick J. Wong __entry->nr_to_scan, 28040b1de00SDarrick J. Wong __entry->caller_ip) 28140b1de00SDarrick J. Wong ); 28240b1de00SDarrick J. Wong 283d123031aSDave Chinner DECLARE_EVENT_CLASS(xfs_ag_class, 284d123031aSDave Chinner TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno), 285d123031aSDave Chinner TP_ARGS(mp, agno), 286d123031aSDave Chinner TP_STRUCT__entry( 287d123031aSDave Chinner __field(dev_t, dev) 288d123031aSDave Chinner __field(xfs_agnumber_t, agno) 289d123031aSDave Chinner ), 290d123031aSDave Chinner TP_fast_assign( 291d123031aSDave Chinner __entry->dev = mp->m_super->s_dev; 292d123031aSDave Chinner __entry->agno = agno; 293d123031aSDave Chinner ), 2949febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x", 295d123031aSDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 296d123031aSDave Chinner __entry->agno) 297d123031aSDave Chinner ); 298d123031aSDave Chinner #define DEFINE_AG_EVENT(name) \ 299d123031aSDave Chinner DEFINE_EVENT(xfs_ag_class, name, \ 300d123031aSDave Chinner TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno), \ 301d123031aSDave Chinner TP_ARGS(mp, agno)) 302d123031aSDave Chinner 303d123031aSDave Chinner DEFINE_AG_EVENT(xfs_read_agf); 304d123031aSDave Chinner DEFINE_AG_EVENT(xfs_alloc_read_agf); 305d123031aSDave Chinner DEFINE_AG_EVENT(xfs_read_agi); 306d123031aSDave Chinner DEFINE_AG_EVENT(xfs_ialloc_read_agi); 307d123031aSDave Chinner 308c59d87c4SChristoph Hellwig TRACE_EVENT(xfs_attr_list_node_descend, 309c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_attr_list_context *ctx, 310c59d87c4SChristoph Hellwig struct xfs_da_node_entry *btree), 311c59d87c4SChristoph Hellwig TP_ARGS(ctx, btree), 312c59d87c4SChristoph Hellwig TP_STRUCT__entry( 313c59d87c4SChristoph Hellwig __field(dev_t, dev) 314c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 315c59d87c4SChristoph Hellwig __field(u32, hashval) 316c59d87c4SChristoph Hellwig __field(u32, blkno) 317c59d87c4SChristoph Hellwig __field(u32, offset) 318a9c8c69bSChristoph Hellwig __field(void *, buffer) 319c59d87c4SChristoph Hellwig __field(int, bufsize) 320c59d87c4SChristoph Hellwig __field(int, count) 321c59d87c4SChristoph Hellwig __field(int, firstu) 322c59d87c4SChristoph Hellwig __field(int, dupcnt) 323d5f0f49aSChristoph Hellwig __field(unsigned int, attr_filter) 324c59d87c4SChristoph Hellwig __field(u32, bt_hashval) 325c59d87c4SChristoph Hellwig __field(u32, bt_before) 326c59d87c4SChristoph Hellwig ), 327c59d87c4SChristoph Hellwig TP_fast_assign( 328c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ctx->dp)->i_sb->s_dev; 329c59d87c4SChristoph Hellwig __entry->ino = ctx->dp->i_ino; 330e3a19cdeSChristoph Hellwig __entry->hashval = ctx->cursor.hashval; 331e3a19cdeSChristoph Hellwig __entry->blkno = ctx->cursor.blkno; 332e3a19cdeSChristoph Hellwig __entry->offset = ctx->cursor.offset; 333a9c8c69bSChristoph Hellwig __entry->buffer = ctx->buffer; 334c59d87c4SChristoph Hellwig __entry->bufsize = ctx->bufsize; 335c59d87c4SChristoph Hellwig __entry->count = ctx->count; 336c59d87c4SChristoph Hellwig __entry->firstu = ctx->firstu; 337d5f0f49aSChristoph Hellwig __entry->attr_filter = ctx->attr_filter; 338c59d87c4SChristoph Hellwig __entry->bt_hashval = be32_to_cpu(btree->hashval); 339c59d87c4SChristoph Hellwig __entry->bt_before = be32_to_cpu(btree->before); 340c59d87c4SChristoph Hellwig ), 341c59d87c4SChristoph Hellwig TP_printk("dev %d:%d ino 0x%llx cursor h/b/o 0x%x/0x%x/%u dupcnt %u " 342d5f0f49aSChristoph Hellwig "buffer %p size %u count %u firstu %u filter %s " 343c59d87c4SChristoph Hellwig "node hashval %u, node before %u", 344c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 345c59d87c4SChristoph Hellwig __entry->ino, 346c59d87c4SChristoph Hellwig __entry->hashval, 347c59d87c4SChristoph Hellwig __entry->blkno, 348c59d87c4SChristoph Hellwig __entry->offset, 349c59d87c4SChristoph Hellwig __entry->dupcnt, 350a9c8c69bSChristoph Hellwig __entry->buffer, 351c59d87c4SChristoph Hellwig __entry->bufsize, 352c59d87c4SChristoph Hellwig __entry->count, 353c59d87c4SChristoph Hellwig __entry->firstu, 354d5f0f49aSChristoph Hellwig __print_flags(__entry->attr_filter, "|", 355d5f0f49aSChristoph Hellwig XFS_ATTR_FILTER_FLAGS), 356c59d87c4SChristoph Hellwig __entry->bt_hashval, 357c59d87c4SChristoph Hellwig __entry->bt_before) 358c59d87c4SChristoph Hellwig ); 359c59d87c4SChristoph Hellwig 360c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_bmap_class, 361b2b1712aSChristoph Hellwig TP_PROTO(struct xfs_inode *ip, struct xfs_iext_cursor *cur, int state, 362c59d87c4SChristoph Hellwig unsigned long caller_ip), 363b2b1712aSChristoph Hellwig TP_ARGS(ip, cur, state, caller_ip), 364c59d87c4SChristoph Hellwig TP_STRUCT__entry( 365c59d87c4SChristoph Hellwig __field(dev_t, dev) 366c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 36704ae87a5SPeter Zijlstra __field(void *, leaf) 36804ae87a5SPeter Zijlstra __field(int, pos) 369c59d87c4SChristoph Hellwig __field(xfs_fileoff_t, startoff) 370c59d87c4SChristoph Hellwig __field(xfs_fsblock_t, startblock) 371c59d87c4SChristoph Hellwig __field(xfs_filblks_t, blockcount) 372c59d87c4SChristoph Hellwig __field(xfs_exntst_t, state) 373c59d87c4SChristoph Hellwig __field(int, bmap_state) 374c59d87c4SChristoph Hellwig __field(unsigned long, caller_ip) 375c59d87c4SChristoph Hellwig ), 376c59d87c4SChristoph Hellwig TP_fast_assign( 3773993baebSDarrick J. Wong struct xfs_ifork *ifp; 378c59d87c4SChristoph Hellwig struct xfs_bmbt_irec r; 379c59d87c4SChristoph Hellwig 3803993baebSDarrick J. Wong ifp = xfs_iext_state_to_fork(ip, state); 381b2b1712aSChristoph Hellwig xfs_iext_get_extent(ifp, cur, &r); 382c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 383c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 3846bdcf26aSChristoph Hellwig __entry->leaf = cur->leaf; 3856bdcf26aSChristoph Hellwig __entry->pos = cur->pos; 386c59d87c4SChristoph Hellwig __entry->startoff = r.br_startoff; 387c59d87c4SChristoph Hellwig __entry->startblock = r.br_startblock; 388c59d87c4SChristoph Hellwig __entry->blockcount = r.br_blockcount; 389c59d87c4SChristoph Hellwig __entry->state = r.br_state; 390c59d87c4SChristoph Hellwig __entry->bmap_state = state; 391c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 392c59d87c4SChristoph Hellwig ), 3933d170aa2SDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx state %s cur %p/%d " 394d538cf24SDarrick J. Wong "fileoff 0x%llx startblock 0x%llx fsbcount 0x%llx flag %d caller %pS", 395c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 396c59d87c4SChristoph Hellwig __entry->ino, 397c59d87c4SChristoph Hellwig __print_flags(__entry->bmap_state, "|", XFS_BMAP_EXT_FLAGS), 3986bdcf26aSChristoph Hellwig __entry->leaf, 3996bdcf26aSChristoph Hellwig __entry->pos, 400c59d87c4SChristoph Hellwig __entry->startoff, 401c8ce540dSDarrick J. Wong (int64_t)__entry->startblock, 402c59d87c4SChristoph Hellwig __entry->blockcount, 403c59d87c4SChristoph Hellwig __entry->state, 404c59d87c4SChristoph Hellwig (char *)__entry->caller_ip) 405c59d87c4SChristoph Hellwig ) 406c59d87c4SChristoph Hellwig 407c59d87c4SChristoph Hellwig #define DEFINE_BMAP_EVENT(name) \ 408c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_bmap_class, name, \ 409b2b1712aSChristoph Hellwig TP_PROTO(struct xfs_inode *ip, struct xfs_iext_cursor *cur, int state, \ 410c59d87c4SChristoph Hellwig unsigned long caller_ip), \ 411b2b1712aSChristoph Hellwig TP_ARGS(ip, cur, state, caller_ip)) 4126bdcf26aSChristoph Hellwig DEFINE_BMAP_EVENT(xfs_iext_insert); 413c59d87c4SChristoph Hellwig DEFINE_BMAP_EVENT(xfs_iext_remove); 414c59d87c4SChristoph Hellwig DEFINE_BMAP_EVENT(xfs_bmap_pre_update); 415c59d87c4SChristoph Hellwig DEFINE_BMAP_EVENT(xfs_bmap_post_update); 416e8e0e170SChristoph Hellwig DEFINE_BMAP_EVENT(xfs_read_extent); 417e8e0e170SChristoph Hellwig DEFINE_BMAP_EVENT(xfs_write_extent); 418c59d87c4SChristoph Hellwig 419c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_buf_class, 420c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_buf *bp, unsigned long caller_ip), 421c59d87c4SChristoph Hellwig TP_ARGS(bp, caller_ip), 422c59d87c4SChristoph Hellwig TP_STRUCT__entry( 423c59d87c4SChristoph Hellwig __field(dev_t, dev) 424c59d87c4SChristoph Hellwig __field(xfs_daddr_t, bno) 4254e94b71bSDave Chinner __field(int, nblks) 426c59d87c4SChristoph Hellwig __field(int, hold) 427c59d87c4SChristoph Hellwig __field(int, pincount) 428c59d87c4SChristoph Hellwig __field(unsigned, lockval) 429c59d87c4SChristoph Hellwig __field(unsigned, flags) 430c59d87c4SChristoph Hellwig __field(unsigned long, caller_ip) 431c46eef34SDarrick J. Wong __field(const void *, buf_ops) 432c59d87c4SChristoph Hellwig ), 433c59d87c4SChristoph Hellwig TP_fast_assign( 434c59d87c4SChristoph Hellwig __entry->dev = bp->b_target->bt_dev; 4359343ee76SDave Chinner __entry->bno = xfs_buf_daddr(bp); 4364e94b71bSDave Chinner __entry->nblks = bp->b_length; 437c59d87c4SChristoph Hellwig __entry->hold = atomic_read(&bp->b_hold); 438c59d87c4SChristoph Hellwig __entry->pincount = atomic_read(&bp->b_pin_count); 439c59d87c4SChristoph Hellwig __entry->lockval = bp->b_sema.count; 440c59d87c4SChristoph Hellwig __entry->flags = bp->b_flags; 441c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 442c46eef34SDarrick J. Wong __entry->buf_ops = bp->b_ops; 443c59d87c4SChristoph Hellwig ), 4447eac3029SDarrick J. Wong TP_printk("dev %d:%d daddr 0x%llx bbcount 0x%x hold %d pincount %d " 445c46eef34SDarrick J. Wong "lock %d flags %s bufops %pS caller %pS", 446c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 447c59d87c4SChristoph Hellwig (unsigned long long)__entry->bno, 4484e94b71bSDave Chinner __entry->nblks, 449c59d87c4SChristoph Hellwig __entry->hold, 450c59d87c4SChristoph Hellwig __entry->pincount, 451c59d87c4SChristoph Hellwig __entry->lockval, 452c59d87c4SChristoph Hellwig __print_flags(__entry->flags, "|", XFS_BUF_FLAGS), 453c46eef34SDarrick J. Wong __entry->buf_ops, 454c59d87c4SChristoph Hellwig (void *)__entry->caller_ip) 455c59d87c4SChristoph Hellwig ) 456c59d87c4SChristoph Hellwig 457c59d87c4SChristoph Hellwig #define DEFINE_BUF_EVENT(name) \ 458c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_buf_class, name, \ 459c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_buf *bp, unsigned long caller_ip), \ 460c59d87c4SChristoph Hellwig TP_ARGS(bp, caller_ip)) 461c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_init); 462c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_free); 463c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_hold); 464c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_rele); 465c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_iodone); 466595bff75SDave Chinner DEFINE_BUF_EVENT(xfs_buf_submit); 467c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_lock); 468c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_lock_done); 469479c6412SDarrick J. Wong DEFINE_BUF_EVENT(xfs_buf_trylock_fail); 470c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_trylock); 471c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_unlock); 472c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_iowait); 473c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_iowait_done); 474c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_delwri_queue); 47543ff2122SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_delwri_queued); 476c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_delwri_split); 4777912e7feSBrian Foster DEFINE_BUF_EVENT(xfs_buf_delwri_pushbuf); 478c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_get_uncached); 479c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_item_relse); 480664ffb8aSChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_iodone_async); 481c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_buf_error_relse); 48210fb9ac1SBrian Foster DEFINE_BUF_EVENT(xfs_buf_drain_buftarg); 483c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_trans_read_buf_shut); 484c59d87c4SChristoph Hellwig 485c59d87c4SChristoph Hellwig /* not really buffer traces, but the buf provides useful information */ 486c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_btree_corrupt); 487c59d87c4SChristoph Hellwig DEFINE_BUF_EVENT(xfs_reset_dqcounts); 488c59d87c4SChristoph Hellwig 489c59d87c4SChristoph Hellwig /* pass flags explicitly */ 490c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_buf_flags_class, 491c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_buf *bp, unsigned flags, unsigned long caller_ip), 492c59d87c4SChristoph Hellwig TP_ARGS(bp, flags, caller_ip), 493c59d87c4SChristoph Hellwig TP_STRUCT__entry( 494c59d87c4SChristoph Hellwig __field(dev_t, dev) 495c59d87c4SChristoph Hellwig __field(xfs_daddr_t, bno) 4967eac3029SDarrick J. Wong __field(unsigned int, length) 497c59d87c4SChristoph Hellwig __field(int, hold) 498c59d87c4SChristoph Hellwig __field(int, pincount) 499c59d87c4SChristoph Hellwig __field(unsigned, lockval) 500c59d87c4SChristoph Hellwig __field(unsigned, flags) 501c59d87c4SChristoph Hellwig __field(unsigned long, caller_ip) 502c59d87c4SChristoph Hellwig ), 503c59d87c4SChristoph Hellwig TP_fast_assign( 504c59d87c4SChristoph Hellwig __entry->dev = bp->b_target->bt_dev; 5059343ee76SDave Chinner __entry->bno = xfs_buf_daddr(bp); 5067eac3029SDarrick J. Wong __entry->length = bp->b_length; 507c59d87c4SChristoph Hellwig __entry->flags = flags; 508c59d87c4SChristoph Hellwig __entry->hold = atomic_read(&bp->b_hold); 509c59d87c4SChristoph Hellwig __entry->pincount = atomic_read(&bp->b_pin_count); 510c59d87c4SChristoph Hellwig __entry->lockval = bp->b_sema.count; 511c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 512c59d87c4SChristoph Hellwig ), 5137eac3029SDarrick J. Wong TP_printk("dev %d:%d daddr 0x%llx bbcount 0x%x hold %d pincount %d " 514aff68a55SDarrick J. Wong "lock %d flags %s caller %pS", 515c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 516c59d87c4SChristoph Hellwig (unsigned long long)__entry->bno, 5177eac3029SDarrick J. Wong __entry->length, 518c59d87c4SChristoph Hellwig __entry->hold, 519c59d87c4SChristoph Hellwig __entry->pincount, 520c59d87c4SChristoph Hellwig __entry->lockval, 521c59d87c4SChristoph Hellwig __print_flags(__entry->flags, "|", XFS_BUF_FLAGS), 522c59d87c4SChristoph Hellwig (void *)__entry->caller_ip) 523c59d87c4SChristoph Hellwig ) 524c59d87c4SChristoph Hellwig 525c59d87c4SChristoph Hellwig #define DEFINE_BUF_FLAGS_EVENT(name) \ 526c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_buf_flags_class, name, \ 527c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_buf *bp, unsigned flags, unsigned long caller_ip), \ 528c59d87c4SChristoph Hellwig TP_ARGS(bp, flags, caller_ip)) 529c59d87c4SChristoph Hellwig DEFINE_BUF_FLAGS_EVENT(xfs_buf_find); 530c59d87c4SChristoph Hellwig DEFINE_BUF_FLAGS_EVENT(xfs_buf_get); 531c59d87c4SChristoph Hellwig DEFINE_BUF_FLAGS_EVENT(xfs_buf_read); 532c59d87c4SChristoph Hellwig 533c59d87c4SChristoph Hellwig TRACE_EVENT(xfs_buf_ioerror, 53431ca03c9SDarrick J. Wong TP_PROTO(struct xfs_buf *bp, int error, xfs_failaddr_t caller_ip), 535c59d87c4SChristoph Hellwig TP_ARGS(bp, error, caller_ip), 536c59d87c4SChristoph Hellwig TP_STRUCT__entry( 537c59d87c4SChristoph Hellwig __field(dev_t, dev) 538c59d87c4SChristoph Hellwig __field(xfs_daddr_t, bno) 5397eac3029SDarrick J. Wong __field(unsigned int, length) 540c59d87c4SChristoph Hellwig __field(unsigned, flags) 541c59d87c4SChristoph Hellwig __field(int, hold) 542c59d87c4SChristoph Hellwig __field(int, pincount) 543c59d87c4SChristoph Hellwig __field(unsigned, lockval) 544c59d87c4SChristoph Hellwig __field(int, error) 54531ca03c9SDarrick J. Wong __field(xfs_failaddr_t, caller_ip) 546c59d87c4SChristoph Hellwig ), 547c59d87c4SChristoph Hellwig TP_fast_assign( 548c59d87c4SChristoph Hellwig __entry->dev = bp->b_target->bt_dev; 5499343ee76SDave Chinner __entry->bno = xfs_buf_daddr(bp); 5507eac3029SDarrick J. Wong __entry->length = bp->b_length; 551c59d87c4SChristoph Hellwig __entry->hold = atomic_read(&bp->b_hold); 552c59d87c4SChristoph Hellwig __entry->pincount = atomic_read(&bp->b_pin_count); 553c59d87c4SChristoph Hellwig __entry->lockval = bp->b_sema.count; 554c59d87c4SChristoph Hellwig __entry->error = error; 555c59d87c4SChristoph Hellwig __entry->flags = bp->b_flags; 556c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 557c59d87c4SChristoph Hellwig ), 5587eac3029SDarrick J. Wong TP_printk("dev %d:%d daddr 0x%llx bbcount 0x%x hold %d pincount %d " 55931ca03c9SDarrick J. Wong "lock %d error %d flags %s caller %pS", 560c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 561c59d87c4SChristoph Hellwig (unsigned long long)__entry->bno, 5627eac3029SDarrick J. Wong __entry->length, 563c59d87c4SChristoph Hellwig __entry->hold, 564c59d87c4SChristoph Hellwig __entry->pincount, 565c59d87c4SChristoph Hellwig __entry->lockval, 566c59d87c4SChristoph Hellwig __entry->error, 567c59d87c4SChristoph Hellwig __print_flags(__entry->flags, "|", XFS_BUF_FLAGS), 568c59d87c4SChristoph Hellwig (void *)__entry->caller_ip) 569c59d87c4SChristoph Hellwig ); 570c59d87c4SChristoph Hellwig 571c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_buf_item_class, 572c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_buf_log_item *bip), 573c59d87c4SChristoph Hellwig TP_ARGS(bip), 574c59d87c4SChristoph Hellwig TP_STRUCT__entry( 575c59d87c4SChristoph Hellwig __field(dev_t, dev) 576c59d87c4SChristoph Hellwig __field(xfs_daddr_t, buf_bno) 5777eac3029SDarrick J. Wong __field(unsigned int, buf_len) 578c59d87c4SChristoph Hellwig __field(int, buf_hold) 579c59d87c4SChristoph Hellwig __field(int, buf_pincount) 580c59d87c4SChristoph Hellwig __field(int, buf_lockval) 581c59d87c4SChristoph Hellwig __field(unsigned, buf_flags) 582c59d87c4SChristoph Hellwig __field(unsigned, bli_recur) 583c59d87c4SChristoph Hellwig __field(int, bli_refcount) 584c59d87c4SChristoph Hellwig __field(unsigned, bli_flags) 58522525c17SDave Chinner __field(unsigned long, li_flags) 586c59d87c4SChristoph Hellwig ), 587c59d87c4SChristoph Hellwig TP_fast_assign( 588c59d87c4SChristoph Hellwig __entry->dev = bip->bli_buf->b_target->bt_dev; 589c59d87c4SChristoph Hellwig __entry->bli_flags = bip->bli_flags; 590c59d87c4SChristoph Hellwig __entry->bli_recur = bip->bli_recur; 591c59d87c4SChristoph Hellwig __entry->bli_refcount = atomic_read(&bip->bli_refcount); 5929343ee76SDave Chinner __entry->buf_bno = xfs_buf_daddr(bip->bli_buf); 5937eac3029SDarrick J. Wong __entry->buf_len = bip->bli_buf->b_length; 594c59d87c4SChristoph Hellwig __entry->buf_flags = bip->bli_buf->b_flags; 595c59d87c4SChristoph Hellwig __entry->buf_hold = atomic_read(&bip->bli_buf->b_hold); 596c59d87c4SChristoph Hellwig __entry->buf_pincount = atomic_read(&bip->bli_buf->b_pin_count); 597c59d87c4SChristoph Hellwig __entry->buf_lockval = bip->bli_buf->b_sema.count; 598c59d87c4SChristoph Hellwig __entry->li_flags = bip->bli_item.li_flags; 599c59d87c4SChristoph Hellwig ), 6007eac3029SDarrick J. Wong TP_printk("dev %d:%d daddr 0x%llx bbcount 0x%x hold %d pincount %d " 601c59d87c4SChristoph Hellwig "lock %d flags %s recur %d refcount %d bliflags %s " 602e6631f85SDave Chinner "liflags %s", 603c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 604c59d87c4SChristoph Hellwig (unsigned long long)__entry->buf_bno, 605c59d87c4SChristoph Hellwig __entry->buf_len, 606c59d87c4SChristoph Hellwig __entry->buf_hold, 607c59d87c4SChristoph Hellwig __entry->buf_pincount, 608c59d87c4SChristoph Hellwig __entry->buf_lockval, 609c59d87c4SChristoph Hellwig __print_flags(__entry->buf_flags, "|", XFS_BUF_FLAGS), 610c59d87c4SChristoph Hellwig __entry->bli_recur, 611c59d87c4SChristoph Hellwig __entry->bli_refcount, 612c59d87c4SChristoph Hellwig __print_flags(__entry->bli_flags, "|", XFS_BLI_FLAGS), 613c59d87c4SChristoph Hellwig __print_flags(__entry->li_flags, "|", XFS_LI_FLAGS)) 614c59d87c4SChristoph Hellwig ) 615c59d87c4SChristoph Hellwig 616c59d87c4SChristoph Hellwig #define DEFINE_BUF_ITEM_EVENT(name) \ 617c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_buf_item_class, name, \ 618c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_buf_log_item *bip), \ 619c59d87c4SChristoph Hellwig TP_ARGS(bip)) 620c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_buf_item_size); 6215f6bed76SDave Chinner DEFINE_BUF_ITEM_EVENT(xfs_buf_item_size_ordered); 622c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_buf_item_size_stale); 623c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_buf_item_format); 624c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_buf_item_format_stale); 6255f6bed76SDave Chinner DEFINE_BUF_ITEM_EVENT(xfs_buf_item_ordered); 626c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_buf_item_pin); 627c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unpin); 628c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_buf_item_unpin_stale); 629ddf92053SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_buf_item_release); 630c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_buf_item_committed); 631c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_buf_item_push); 632c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf); 633c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf_recur); 634c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_trans_getsb); 635c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_trans_getsb_recur); 636c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_trans_read_buf); 637c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_trans_read_buf_recur); 638c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_trans_log_buf); 639c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_trans_brelse); 640c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_trans_bjoin); 641c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_trans_bhold); 642c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_trans_bhold_release); 643c59d87c4SChristoph Hellwig DEFINE_BUF_ITEM_EVENT(xfs_trans_binval); 644c59d87c4SChristoph Hellwig 645b94acd47SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_filestream_class, 646571e2592SDave Chinner TP_PROTO(struct xfs_perag *pag, xfs_ino_t ino), 647571e2592SDave Chinner TP_ARGS(pag, ino), 648b94acd47SChristoph Hellwig TP_STRUCT__entry( 649b94acd47SChristoph Hellwig __field(dev_t, dev) 650b94acd47SChristoph Hellwig __field(xfs_ino_t, ino) 651b94acd47SChristoph Hellwig __field(xfs_agnumber_t, agno) 652b94acd47SChristoph Hellwig __field(int, streams) 653b94acd47SChristoph Hellwig ), 654b94acd47SChristoph Hellwig TP_fast_assign( 655571e2592SDave Chinner __entry->dev = pag->pag_mount->m_super->s_dev; 6567fcd3efaSChristoph Hellwig __entry->ino = ino; 657571e2592SDave Chinner __entry->agno = pag->pag_agno; 658571e2592SDave Chinner __entry->streams = atomic_read(&pag->pagf_fstrms); 659b94acd47SChristoph Hellwig ), 6609febf39dSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx agno 0x%x streams %d", 661b94acd47SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 662b94acd47SChristoph Hellwig __entry->ino, 663b94acd47SChristoph Hellwig __entry->agno, 664b94acd47SChristoph Hellwig __entry->streams) 665b94acd47SChristoph Hellwig ) 666b94acd47SChristoph Hellwig #define DEFINE_FILESTREAM_EVENT(name) \ 667b94acd47SChristoph Hellwig DEFINE_EVENT(xfs_filestream_class, name, \ 668571e2592SDave Chinner TP_PROTO(struct xfs_perag *pag, xfs_ino_t ino), \ 669571e2592SDave Chinner TP_ARGS(pag, ino)) 670b94acd47SChristoph Hellwig DEFINE_FILESTREAM_EVENT(xfs_filestream_free); 671b94acd47SChristoph Hellwig DEFINE_FILESTREAM_EVENT(xfs_filestream_lookup); 672b94acd47SChristoph Hellwig DEFINE_FILESTREAM_EVENT(xfs_filestream_scan); 673b94acd47SChristoph Hellwig 674b94acd47SChristoph Hellwig TRACE_EVENT(xfs_filestream_pick, 675*77ddc732SChristoph Hellwig TP_PROTO(struct xfs_perag *pag, xfs_ino_t ino), 676*77ddc732SChristoph Hellwig TP_ARGS(pag, ino), 677b94acd47SChristoph Hellwig TP_STRUCT__entry( 678b94acd47SChristoph Hellwig __field(dev_t, dev) 679b94acd47SChristoph Hellwig __field(xfs_ino_t, ino) 680b94acd47SChristoph Hellwig __field(xfs_agnumber_t, agno) 681b94acd47SChristoph Hellwig __field(int, streams) 682b94acd47SChristoph Hellwig __field(xfs_extlen_t, free) 683b94acd47SChristoph Hellwig ), 684b94acd47SChristoph Hellwig TP_fast_assign( 685bd4f5d09SDave Chinner __entry->dev = pag->pag_mount->m_super->s_dev; 686bd4f5d09SDave Chinner __entry->ino = ino; 687571e2592SDave Chinner __entry->agno = pag->pag_agno; 688571e2592SDave Chinner __entry->streams = atomic_read(&pag->pagf_fstrms); 689*77ddc732SChristoph Hellwig __entry->free = pag->pagf_freeblks; 690b94acd47SChristoph Hellwig ), 691571e2592SDave Chinner TP_printk("dev %d:%d ino 0x%llx agno 0x%x streams %d free %d", 692b94acd47SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 693b94acd47SChristoph Hellwig __entry->ino, 694b94acd47SChristoph Hellwig __entry->agno, 695b94acd47SChristoph Hellwig __entry->streams, 696571e2592SDave Chinner __entry->free) 697b94acd47SChristoph Hellwig ); 698b94acd47SChristoph Hellwig 699c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_lock_class, 700c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, unsigned lock_flags, 701c59d87c4SChristoph Hellwig unsigned long caller_ip), 702c59d87c4SChristoph Hellwig TP_ARGS(ip, lock_flags, caller_ip), 703c59d87c4SChristoph Hellwig TP_STRUCT__entry( 704c59d87c4SChristoph Hellwig __field(dev_t, dev) 705c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 706c59d87c4SChristoph Hellwig __field(int, lock_flags) 707c59d87c4SChristoph Hellwig __field(unsigned long, caller_ip) 708c59d87c4SChristoph Hellwig ), 709c59d87c4SChristoph Hellwig TP_fast_assign( 710c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 711c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 712c59d87c4SChristoph Hellwig __entry->lock_flags = lock_flags; 713c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 714c59d87c4SChristoph Hellwig ), 715aff68a55SDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx flags %s caller %pS", 716c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 717c59d87c4SChristoph Hellwig __entry->ino, 718c59d87c4SChristoph Hellwig __print_flags(__entry->lock_flags, "|", XFS_LOCK_FLAGS), 719c59d87c4SChristoph Hellwig (void *)__entry->caller_ip) 720c59d87c4SChristoph Hellwig ) 721c59d87c4SChristoph Hellwig 722c59d87c4SChristoph Hellwig #define DEFINE_LOCK_EVENT(name) \ 723c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_lock_class, name, \ 724c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, unsigned lock_flags, \ 725c59d87c4SChristoph Hellwig unsigned long caller_ip), \ 726c59d87c4SChristoph Hellwig TP_ARGS(ip, lock_flags, caller_ip)) 727c59d87c4SChristoph Hellwig DEFINE_LOCK_EVENT(xfs_ilock); 728c59d87c4SChristoph Hellwig DEFINE_LOCK_EVENT(xfs_ilock_nowait); 729c59d87c4SChristoph Hellwig DEFINE_LOCK_EVENT(xfs_ilock_demote); 730c59d87c4SChristoph Hellwig DEFINE_LOCK_EVENT(xfs_iunlock); 731c59d87c4SChristoph Hellwig 732c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_inode_class, 733c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip), 734c59d87c4SChristoph Hellwig TP_ARGS(ip), 735c59d87c4SChristoph Hellwig TP_STRUCT__entry( 736c59d87c4SChristoph Hellwig __field(dev_t, dev) 737c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 738ab23a776SDave Chinner __field(unsigned long, iflags) 739c59d87c4SChristoph Hellwig ), 740c59d87c4SChristoph Hellwig TP_fast_assign( 741c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 742c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 743ab23a776SDave Chinner __entry->iflags = ip->i_flags; 744c59d87c4SChristoph Hellwig ), 745ab23a776SDave Chinner TP_printk("dev %d:%d ino 0x%llx iflags 0x%lx", 746c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 747ab23a776SDave Chinner __entry->ino, 748ab23a776SDave Chinner __entry->iflags) 749c59d87c4SChristoph Hellwig ) 750c59d87c4SChristoph Hellwig 751c59d87c4SChristoph Hellwig #define DEFINE_INODE_EVENT(name) \ 752c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_inode_class, name, \ 753c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip), \ 754c59d87c4SChristoph Hellwig TP_ARGS(ip)) 755c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_iget_skip); 756ff7bebebSDarrick J. Wong DEFINE_INODE_EVENT(xfs_iget_recycle); 757ff7bebebSDarrick J. Wong DEFINE_INODE_EVENT(xfs_iget_recycle_fail); 758c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_iget_hit); 759c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_iget_miss); 760c59d87c4SChristoph Hellwig 761c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_getattr); 762c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_setattr); 763c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_readlink); 764725eb1ebSMark Tinguely DEFINE_INODE_EVENT(xfs_inactive_symlink); 765c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_alloc_file_space); 766c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_free_file_space); 767897b73b6SDave Chinner DEFINE_INODE_EVENT(xfs_zero_file_space); 768e1d8fb88SNamjae Jeon DEFINE_INODE_EVENT(xfs_collapse_file_space); 769a904b1caSNamjae Jeon DEFINE_INODE_EVENT(xfs_insert_file_space); 770c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_readdir); 771c59d87c4SChristoph Hellwig #ifdef CONFIG_XFS_POSIX_ACL 772c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_get_acl); 773c59d87c4SChristoph Hellwig #endif 774c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_vm_bmap); 775c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_file_ioctl); 776c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_file_compat_ioctl); 777c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_ioctl_setattr); 7781da2f2dbSChristoph Hellwig DEFINE_INODE_EVENT(xfs_dir_fsync); 779c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_file_fsync); 780c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_destroy_inode); 78169ff2826SChristoph Hellwig DEFINE_INODE_EVENT(xfs_update_time); 782c59d87c4SChristoph Hellwig 783c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_dquot_dqalloc); 784c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_dquot_dqdetach); 785c59d87c4SChristoph Hellwig 78627b52867SBrian Foster DEFINE_INODE_EVENT(xfs_inode_set_eofblocks_tag); 78727b52867SBrian Foster DEFINE_INODE_EVENT(xfs_inode_clear_eofblocks_tag); 78841176a68SBrian Foster DEFINE_INODE_EVENT(xfs_inode_free_eofblocks_invalid); 78983104d44SDarrick J. Wong DEFINE_INODE_EVENT(xfs_inode_set_cowblocks_tag); 79083104d44SDarrick J. Wong DEFINE_INODE_EVENT(xfs_inode_clear_cowblocks_tag); 79183104d44SDarrick J. Wong DEFINE_INODE_EVENT(xfs_inode_free_cowblocks_invalid); 792ab23a776SDave Chinner DEFINE_INODE_EVENT(xfs_inode_set_reclaimable); 793ab23a776SDave Chinner DEFINE_INODE_EVENT(xfs_inode_reclaiming); 794ab23a776SDave Chinner DEFINE_INODE_EVENT(xfs_inode_set_need_inactive); 795ab23a776SDave Chinner DEFINE_INODE_EVENT(xfs_inode_inactivating); 79627b52867SBrian Foster 79785f8dff0SDarrick J. Wong /* 79885f8dff0SDarrick J. Wong * ftrace's __print_symbolic requires that all enum values be wrapped in the 79985f8dff0SDarrick J. Wong * TRACE_DEFINE_ENUM macro so that the enum value can be encoded in the ftrace 80085f8dff0SDarrick J. Wong * ring buffer. Somehow this was only worth mentioning in the ftrace sample 80185f8dff0SDarrick J. Wong * code. 80285f8dff0SDarrick J. Wong */ 803571423a1SDarrick J. Wong TRACE_DEFINE_ENUM(XFS_REFC_DOMAIN_SHARED); 804571423a1SDarrick J. Wong TRACE_DEFINE_ENUM(XFS_REFC_DOMAIN_COW); 805571423a1SDarrick J. Wong 806d522d569SChristoph Hellwig TRACE_EVENT(xfs_filemap_fault, 8071d024e7aSMatthew Wilcox (Oracle) TP_PROTO(struct xfs_inode *ip, unsigned int order, bool write_fault), 8081d024e7aSMatthew Wilcox (Oracle) TP_ARGS(ip, order, write_fault), 809d522d569SChristoph Hellwig TP_STRUCT__entry( 810d522d569SChristoph Hellwig __field(dev_t, dev) 811d522d569SChristoph Hellwig __field(xfs_ino_t, ino) 8121d024e7aSMatthew Wilcox (Oracle) __field(unsigned int, order) 813d522d569SChristoph Hellwig __field(bool, write_fault) 814d522d569SChristoph Hellwig ), 815d522d569SChristoph Hellwig TP_fast_assign( 816d522d569SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 817d522d569SChristoph Hellwig __entry->ino = ip->i_ino; 8181d024e7aSMatthew Wilcox (Oracle) __entry->order = order; 819d522d569SChristoph Hellwig __entry->write_fault = write_fault; 820d522d569SChristoph Hellwig ), 8211d024e7aSMatthew Wilcox (Oracle) TP_printk("dev %d:%d ino 0x%llx order %u write_fault %d", 822d522d569SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 823d522d569SChristoph Hellwig __entry->ino, 8241d024e7aSMatthew Wilcox (Oracle) __entry->order, 825d522d569SChristoph Hellwig __entry->write_fault) 826d522d569SChristoph Hellwig ) 827d522d569SChristoph Hellwig 828c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_iref_class, 829c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip), 830c59d87c4SChristoph Hellwig TP_ARGS(ip, caller_ip), 831c59d87c4SChristoph Hellwig TP_STRUCT__entry( 832c59d87c4SChristoph Hellwig __field(dev_t, dev) 833c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 834c59d87c4SChristoph Hellwig __field(int, count) 835c59d87c4SChristoph Hellwig __field(int, pincount) 836c59d87c4SChristoph Hellwig __field(unsigned long, caller_ip) 837c59d87c4SChristoph Hellwig ), 838c59d87c4SChristoph Hellwig TP_fast_assign( 839c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 840c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 841c59d87c4SChristoph Hellwig __entry->count = atomic_read(&VFS_I(ip)->i_count); 842c59d87c4SChristoph Hellwig __entry->pincount = atomic_read(&ip->i_pincount); 843c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 844c59d87c4SChristoph Hellwig ), 845aff68a55SDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx count %d pincount %d caller %pS", 846c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 847c59d87c4SChristoph Hellwig __entry->ino, 848c59d87c4SChristoph Hellwig __entry->count, 849c59d87c4SChristoph Hellwig __entry->pincount, 850c59d87c4SChristoph Hellwig (char *)__entry->caller_ip) 851c59d87c4SChristoph Hellwig ) 852c59d87c4SChristoph Hellwig 85319cb7e38SBrian Foster TRACE_EVENT(xfs_iomap_prealloc_size, 85419cb7e38SBrian Foster TP_PROTO(struct xfs_inode *ip, xfs_fsblock_t blocks, int shift, 85519cb7e38SBrian Foster unsigned int writeio_blocks), 85619cb7e38SBrian Foster TP_ARGS(ip, blocks, shift, writeio_blocks), 85719cb7e38SBrian Foster TP_STRUCT__entry( 85819cb7e38SBrian Foster __field(dev_t, dev) 85919cb7e38SBrian Foster __field(xfs_ino_t, ino) 86019cb7e38SBrian Foster __field(xfs_fsblock_t, blocks) 86119cb7e38SBrian Foster __field(int, shift) 86219cb7e38SBrian Foster __field(unsigned int, writeio_blocks) 86319cb7e38SBrian Foster ), 86419cb7e38SBrian Foster TP_fast_assign( 86519cb7e38SBrian Foster __entry->dev = VFS_I(ip)->i_sb->s_dev; 86619cb7e38SBrian Foster __entry->ino = ip->i_ino; 86719cb7e38SBrian Foster __entry->blocks = blocks; 86819cb7e38SBrian Foster __entry->shift = shift; 86919cb7e38SBrian Foster __entry->writeio_blocks = writeio_blocks; 87019cb7e38SBrian Foster ), 87119cb7e38SBrian Foster TP_printk("dev %d:%d ino 0x%llx prealloc blocks %llu shift %d " 8725da8a07cSChristoph Hellwig "m_allocsize_blocks %u", 87319cb7e38SBrian Foster MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, 87419cb7e38SBrian Foster __entry->blocks, __entry->shift, __entry->writeio_blocks) 87519cb7e38SBrian Foster ) 87619cb7e38SBrian Foster 87756d1115cSBrian Foster TRACE_EVENT(xfs_irec_merge_pre, 87856d1115cSBrian Foster TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t agino, 87956d1115cSBrian Foster uint16_t holemask, xfs_agino_t nagino, uint16_t nholemask), 88056d1115cSBrian Foster TP_ARGS(mp, agno, agino, holemask, nagino, nholemask), 88156d1115cSBrian Foster TP_STRUCT__entry( 88256d1115cSBrian Foster __field(dev_t, dev) 88356d1115cSBrian Foster __field(xfs_agnumber_t, agno) 88456d1115cSBrian Foster __field(xfs_agino_t, agino) 88556d1115cSBrian Foster __field(uint16_t, holemask) 88656d1115cSBrian Foster __field(xfs_agino_t, nagino) 88756d1115cSBrian Foster __field(uint16_t, nholemask) 88856d1115cSBrian Foster ), 88956d1115cSBrian Foster TP_fast_assign( 89056d1115cSBrian Foster __entry->dev = mp->m_super->s_dev; 89156d1115cSBrian Foster __entry->agno = agno; 89256d1115cSBrian Foster __entry->agino = agino; 89356d1115cSBrian Foster __entry->holemask = holemask; 89456d1115cSBrian Foster __entry->nagino = nagino; 89556d1115cSBrian Foster __entry->nholemask = holemask; 89656d1115cSBrian Foster ), 8979febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agino 0x%x holemask 0x%x new_agino 0x%x new_holemask 0x%x", 898af6265a0SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 899af6265a0SDarrick J. Wong __entry->agno, 900af6265a0SDarrick J. Wong __entry->agino, 901af6265a0SDarrick J. Wong __entry->holemask, 902af6265a0SDarrick J. Wong __entry->nagino, 90356d1115cSBrian Foster __entry->nholemask) 90456d1115cSBrian Foster ) 90556d1115cSBrian Foster 90656d1115cSBrian Foster TRACE_EVENT(xfs_irec_merge_post, 90756d1115cSBrian Foster TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t agino, 90856d1115cSBrian Foster uint16_t holemask), 90956d1115cSBrian Foster TP_ARGS(mp, agno, agino, holemask), 91056d1115cSBrian Foster TP_STRUCT__entry( 91156d1115cSBrian Foster __field(dev_t, dev) 91256d1115cSBrian Foster __field(xfs_agnumber_t, agno) 91356d1115cSBrian Foster __field(xfs_agino_t, agino) 91456d1115cSBrian Foster __field(uint16_t, holemask) 91556d1115cSBrian Foster ), 91656d1115cSBrian Foster TP_fast_assign( 91756d1115cSBrian Foster __entry->dev = mp->m_super->s_dev; 91856d1115cSBrian Foster __entry->agno = agno; 91956d1115cSBrian Foster __entry->agino = agino; 92056d1115cSBrian Foster __entry->holemask = holemask; 92156d1115cSBrian Foster ), 9229febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agino 0x%x holemask 0x%x", 923af6265a0SDarrick J. Wong MAJOR(__entry->dev), 924af6265a0SDarrick J. Wong MINOR(__entry->dev), 925af6265a0SDarrick J. Wong __entry->agno, 926af6265a0SDarrick J. Wong __entry->agino, 92756d1115cSBrian Foster __entry->holemask) 92856d1115cSBrian Foster ) 92956d1115cSBrian Foster 930c59d87c4SChristoph Hellwig #define DEFINE_IREF_EVENT(name) \ 931c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_iref_class, name, \ 932c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip), \ 933c59d87c4SChristoph Hellwig TP_ARGS(ip, caller_ip)) 934c59d87c4SChristoph Hellwig DEFINE_IREF_EVENT(xfs_irele); 935c59d87c4SChristoph Hellwig DEFINE_IREF_EVENT(xfs_inode_pin); 936c59d87c4SChristoph Hellwig DEFINE_IREF_EVENT(xfs_inode_unpin); 937c59d87c4SChristoph Hellwig DEFINE_IREF_EVENT(xfs_inode_unpin_nowait); 938c59d87c4SChristoph Hellwig 939c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_namespace_class, 940996b2329SDarrick J. Wong TP_PROTO(struct xfs_inode *dp, const struct xfs_name *name), 941c59d87c4SChristoph Hellwig TP_ARGS(dp, name), 942c59d87c4SChristoph Hellwig TP_STRUCT__entry( 943c59d87c4SChristoph Hellwig __field(dev_t, dev) 944c59d87c4SChristoph Hellwig __field(xfs_ino_t, dp_ino) 945f6161375SChristoph Hellwig __field(int, namelen) 946c59d87c4SChristoph Hellwig __dynamic_array(char, name, name->len) 947c59d87c4SChristoph Hellwig ), 948c59d87c4SChristoph Hellwig TP_fast_assign( 949c59d87c4SChristoph Hellwig __entry->dev = VFS_I(dp)->i_sb->s_dev; 950c59d87c4SChristoph Hellwig __entry->dp_ino = dp->i_ino; 951f6161375SChristoph Hellwig __entry->namelen = name->len; 952c59d87c4SChristoph Hellwig memcpy(__get_str(name), name->name, name->len); 953c59d87c4SChristoph Hellwig ), 954f6161375SChristoph Hellwig TP_printk("dev %d:%d dp ino 0x%llx name %.*s", 955c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 956c59d87c4SChristoph Hellwig __entry->dp_ino, 957f6161375SChristoph Hellwig __entry->namelen, 958c59d87c4SChristoph Hellwig __get_str(name)) 959c59d87c4SChristoph Hellwig ) 960c59d87c4SChristoph Hellwig 961c59d87c4SChristoph Hellwig #define DEFINE_NAMESPACE_EVENT(name) \ 962c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_namespace_class, name, \ 963996b2329SDarrick J. Wong TP_PROTO(struct xfs_inode *dp, const struct xfs_name *name), \ 964c59d87c4SChristoph Hellwig TP_ARGS(dp, name)) 965c59d87c4SChristoph Hellwig DEFINE_NAMESPACE_EVENT(xfs_remove); 966c59d87c4SChristoph Hellwig DEFINE_NAMESPACE_EVENT(xfs_link); 967c59d87c4SChristoph Hellwig DEFINE_NAMESPACE_EVENT(xfs_lookup); 968c59d87c4SChristoph Hellwig DEFINE_NAMESPACE_EVENT(xfs_create); 969c59d87c4SChristoph Hellwig DEFINE_NAMESPACE_EVENT(xfs_symlink); 970c59d87c4SChristoph Hellwig 971c59d87c4SChristoph Hellwig TRACE_EVENT(xfs_rename, 972c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *src_dp, struct xfs_inode *target_dp, 973c59d87c4SChristoph Hellwig struct xfs_name *src_name, struct xfs_name *target_name), 974c59d87c4SChristoph Hellwig TP_ARGS(src_dp, target_dp, src_name, target_name), 975c59d87c4SChristoph Hellwig TP_STRUCT__entry( 976c59d87c4SChristoph Hellwig __field(dev_t, dev) 977c59d87c4SChristoph Hellwig __field(xfs_ino_t, src_dp_ino) 978c59d87c4SChristoph Hellwig __field(xfs_ino_t, target_dp_ino) 979f6161375SChristoph Hellwig __field(int, src_namelen) 980f6161375SChristoph Hellwig __field(int, target_namelen) 981c59d87c4SChristoph Hellwig __dynamic_array(char, src_name, src_name->len) 982c59d87c4SChristoph Hellwig __dynamic_array(char, target_name, target_name->len) 983c59d87c4SChristoph Hellwig ), 984c59d87c4SChristoph Hellwig TP_fast_assign( 985c59d87c4SChristoph Hellwig __entry->dev = VFS_I(src_dp)->i_sb->s_dev; 986c59d87c4SChristoph Hellwig __entry->src_dp_ino = src_dp->i_ino; 987c59d87c4SChristoph Hellwig __entry->target_dp_ino = target_dp->i_ino; 988f6161375SChristoph Hellwig __entry->src_namelen = src_name->len; 989f6161375SChristoph Hellwig __entry->target_namelen = target_name->len; 990c59d87c4SChristoph Hellwig memcpy(__get_str(src_name), src_name->name, src_name->len); 991f6161375SChristoph Hellwig memcpy(__get_str(target_name), target_name->name, 992f6161375SChristoph Hellwig target_name->len); 993c59d87c4SChristoph Hellwig ), 994c59d87c4SChristoph Hellwig TP_printk("dev %d:%d src dp ino 0x%llx target dp ino 0x%llx" 995f6161375SChristoph Hellwig " src name %.*s target name %.*s", 996c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 997c59d87c4SChristoph Hellwig __entry->src_dp_ino, 998c59d87c4SChristoph Hellwig __entry->target_dp_ino, 999f6161375SChristoph Hellwig __entry->src_namelen, 1000c59d87c4SChristoph Hellwig __get_str(src_name), 1001f6161375SChristoph Hellwig __entry->target_namelen, 1002c59d87c4SChristoph Hellwig __get_str(target_name)) 1003c59d87c4SChristoph Hellwig ) 1004c59d87c4SChristoph Hellwig 1005c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_dquot_class, 1006c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_dquot *dqp), 1007c59d87c4SChristoph Hellwig TP_ARGS(dqp), 1008c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1009c59d87c4SChristoph Hellwig __field(dev_t, dev) 1010c59d87c4SChristoph Hellwig __field(u32, id) 10111a7ed271SDarrick J. Wong __field(xfs_dqtype_t, type) 1012c59d87c4SChristoph Hellwig __field(unsigned, flags) 1013c59d87c4SChristoph Hellwig __field(unsigned, nrefs) 1014c59d87c4SChristoph Hellwig __field(unsigned long long, res_bcount) 10152cb91babSDarrick J. Wong __field(unsigned long long, res_rtbcount) 10162cb91babSDarrick J. Wong __field(unsigned long long, res_icount) 10172cb91babSDarrick J. Wong 1018c59d87c4SChristoph Hellwig __field(unsigned long long, bcount) 10192cb91babSDarrick J. Wong __field(unsigned long long, rtbcount) 1020c59d87c4SChristoph Hellwig __field(unsigned long long, icount) 10212cb91babSDarrick J. Wong 1022c59d87c4SChristoph Hellwig __field(unsigned long long, blk_hardlimit) 1023c59d87c4SChristoph Hellwig __field(unsigned long long, blk_softlimit) 10242cb91babSDarrick J. Wong __field(unsigned long long, rtb_hardlimit) 10252cb91babSDarrick J. Wong __field(unsigned long long, rtb_softlimit) 1026c59d87c4SChristoph Hellwig __field(unsigned long long, ino_hardlimit) 1027c59d87c4SChristoph Hellwig __field(unsigned long long, ino_softlimit) 10282cb91babSDarrick J. Wong ), 1029c59d87c4SChristoph Hellwig TP_fast_assign( 1030c59d87c4SChristoph Hellwig __entry->dev = dqp->q_mount->m_super->s_dev; 1031c51df733SDarrick J. Wong __entry->id = dqp->q_id; 10321a7ed271SDarrick J. Wong __entry->type = dqp->q_type; 10331a7ed271SDarrick J. Wong __entry->flags = dqp->q_flags; 1034c59d87c4SChristoph Hellwig __entry->nrefs = dqp->q_nrefs; 10352cb91babSDarrick J. Wong 1036784e80f5SDarrick J. Wong __entry->res_bcount = dqp->q_blk.reserved; 10372cb91babSDarrick J. Wong __entry->res_rtbcount = dqp->q_rtb.reserved; 10382cb91babSDarrick J. Wong __entry->res_icount = dqp->q_ino.reserved; 10392cb91babSDarrick J. Wong 1040be37d40cSDarrick J. Wong __entry->bcount = dqp->q_blk.count; 10412cb91babSDarrick J. Wong __entry->rtbcount = dqp->q_rtb.count; 1042be37d40cSDarrick J. Wong __entry->icount = dqp->q_ino.count; 10432cb91babSDarrick J. Wong 1044d3537cf9SDarrick J. Wong __entry->blk_hardlimit = dqp->q_blk.hardlimit; 1045d3537cf9SDarrick J. Wong __entry->blk_softlimit = dqp->q_blk.softlimit; 10462cb91babSDarrick J. Wong __entry->rtb_hardlimit = dqp->q_rtb.hardlimit; 10472cb91babSDarrick J. Wong __entry->rtb_softlimit = dqp->q_rtb.softlimit; 1048d3537cf9SDarrick J. Wong __entry->ino_hardlimit = dqp->q_ino.hardlimit; 1049d3537cf9SDarrick J. Wong __entry->ino_softlimit = dqp->q_ino.softlimit; 1050c59d87c4SChristoph Hellwig ), 10511a7ed271SDarrick J. Wong TP_printk("dev %d:%d id 0x%x type %s flags %s nrefs %u " 10522cb91babSDarrick J. Wong "res_bc 0x%llx res_rtbc 0x%llx res_ic 0x%llx " 1053c59d87c4SChristoph Hellwig "bcnt 0x%llx bhardlimit 0x%llx bsoftlimit 0x%llx " 10542cb91babSDarrick J. Wong "rtbcnt 0x%llx rtbhardlimit 0x%llx rtbsoftlimit 0x%llx " 1055c59d87c4SChristoph Hellwig "icnt 0x%llx ihardlimit 0x%llx isoftlimit 0x%llx]", 1056c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1057c59d87c4SChristoph Hellwig __entry->id, 10581a7ed271SDarrick J. Wong __print_flags(__entry->type, "|", XFS_DQTYPE_STRINGS), 1059985a78fdSDarrick J. Wong __print_flags(__entry->flags, "|", XFS_DQFLAG_STRINGS), 1060c59d87c4SChristoph Hellwig __entry->nrefs, 1061c59d87c4SChristoph Hellwig __entry->res_bcount, 10622cb91babSDarrick J. Wong __entry->res_rtbcount, 10632cb91babSDarrick J. Wong __entry->res_icount, 1064c59d87c4SChristoph Hellwig __entry->bcount, 1065c59d87c4SChristoph Hellwig __entry->blk_hardlimit, 1066c59d87c4SChristoph Hellwig __entry->blk_softlimit, 10672cb91babSDarrick J. Wong __entry->rtbcount, 10682cb91babSDarrick J. Wong __entry->rtb_hardlimit, 10692cb91babSDarrick J. Wong __entry->rtb_softlimit, 1070c59d87c4SChristoph Hellwig __entry->icount, 1071c59d87c4SChristoph Hellwig __entry->ino_hardlimit, 1072c59d87c4SChristoph Hellwig __entry->ino_softlimit) 1073c59d87c4SChristoph Hellwig ) 1074c59d87c4SChristoph Hellwig 1075c59d87c4SChristoph Hellwig #define DEFINE_DQUOT_EVENT(name) \ 1076c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_dquot_class, name, \ 1077c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_dquot *dqp), \ 1078c59d87c4SChristoph Hellwig TP_ARGS(dqp)) 1079c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqadjust); 1080c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqreclaim_want); 1081c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqreclaim_dirty); 108292b2e5b3SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqreclaim_busy); 108392b2e5b3SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqreclaim_done); 1084c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqattach_found); 1085c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqattach_get); 1086c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqalloc); 1087c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqtobp_read); 1088c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqread); 1089c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqread_fail); 1090c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqget_hit); 1091c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqget_miss); 10929f920f11SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqget_freeing); 10939f920f11SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqget_dup); 1094c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqput); 1095c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqput_free); 1096c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqrele); 1097c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqflush); 1098c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqflush_force); 1099c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqflush_done); 11002cb91babSDarrick J. Wong DEFINE_DQUOT_EVENT(xfs_trans_apply_dquot_deltas_before); 11012cb91babSDarrick J. Wong DEFINE_DQUOT_EVENT(xfs_trans_apply_dquot_deltas_after); 11022cb91babSDarrick J. Wong 11032cb91babSDarrick J. Wong TRACE_EVENT(xfs_trans_mod_dquot, 11042cb91babSDarrick J. Wong TP_PROTO(struct xfs_trans *tp, struct xfs_dquot *dqp, 11052cb91babSDarrick J. Wong unsigned int field, int64_t delta), 11062cb91babSDarrick J. Wong TP_ARGS(tp, dqp, field, delta), 11072cb91babSDarrick J. Wong TP_STRUCT__entry( 11082cb91babSDarrick J. Wong __field(dev_t, dev) 11091a7ed271SDarrick J. Wong __field(xfs_dqtype_t, type) 11102cb91babSDarrick J. Wong __field(unsigned int, flags) 11112cb91babSDarrick J. Wong __field(unsigned int, dqid) 11122cb91babSDarrick J. Wong __field(unsigned int, field) 11132cb91babSDarrick J. Wong __field(int64_t, delta) 11142cb91babSDarrick J. Wong ), 11152cb91babSDarrick J. Wong TP_fast_assign( 11162cb91babSDarrick J. Wong __entry->dev = tp->t_mountp->m_super->s_dev; 11171a7ed271SDarrick J. Wong __entry->type = dqp->q_type; 11181a7ed271SDarrick J. Wong __entry->flags = dqp->q_flags; 11192cb91babSDarrick J. Wong __entry->dqid = dqp->q_id; 11202cb91babSDarrick J. Wong __entry->field = field; 11212cb91babSDarrick J. Wong __entry->delta = delta; 11222cb91babSDarrick J. Wong ), 11231a7ed271SDarrick J. Wong TP_printk("dev %d:%d dquot id 0x%x type %s flags %s field %s delta %lld", 11242cb91babSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 11252cb91babSDarrick J. Wong __entry->dqid, 11261a7ed271SDarrick J. Wong __print_flags(__entry->type, "|", XFS_DQTYPE_STRINGS), 11272cb91babSDarrick J. Wong __print_flags(__entry->flags, "|", XFS_DQFLAG_STRINGS), 11282cb91babSDarrick J. Wong __print_flags(__entry->field, "|", XFS_QMOPT_FLAGS), 11292cb91babSDarrick J. Wong __entry->delta) 11302cb91babSDarrick J. Wong ); 11312cb91babSDarrick J. Wong 11322cb91babSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_dqtrx_class, 11332cb91babSDarrick J. Wong TP_PROTO(struct xfs_dqtrx *qtrx), 11342cb91babSDarrick J. Wong TP_ARGS(qtrx), 11352cb91babSDarrick J. Wong TP_STRUCT__entry( 11362cb91babSDarrick J. Wong __field(dev_t, dev) 11371a7ed271SDarrick J. Wong __field(xfs_dqtype_t, type) 11382cb91babSDarrick J. Wong __field(unsigned int, flags) 11392cb91babSDarrick J. Wong __field(u32, dqid) 11402cb91babSDarrick J. Wong 11412cb91babSDarrick J. Wong __field(uint64_t, blk_res) 11422cb91babSDarrick J. Wong __field(int64_t, bcount_delta) 11432cb91babSDarrick J. Wong __field(int64_t, delbcnt_delta) 11442cb91babSDarrick J. Wong 11452cb91babSDarrick J. Wong __field(uint64_t, rtblk_res) 11462cb91babSDarrick J. Wong __field(uint64_t, rtblk_res_used) 11472cb91babSDarrick J. Wong __field(int64_t, rtbcount_delta) 11482cb91babSDarrick J. Wong __field(int64_t, delrtb_delta) 11492cb91babSDarrick J. Wong 11502cb91babSDarrick J. Wong __field(uint64_t, ino_res) 11512cb91babSDarrick J. Wong __field(uint64_t, ino_res_used) 11522cb91babSDarrick J. Wong __field(int64_t, icount_delta) 11532cb91babSDarrick J. Wong ), 11542cb91babSDarrick J. Wong TP_fast_assign( 11552cb91babSDarrick J. Wong __entry->dev = qtrx->qt_dquot->q_mount->m_super->s_dev; 11561a7ed271SDarrick J. Wong __entry->type = qtrx->qt_dquot->q_type; 11571a7ed271SDarrick J. Wong __entry->flags = qtrx->qt_dquot->q_flags; 11582cb91babSDarrick J. Wong __entry->dqid = qtrx->qt_dquot->q_id; 11592cb91babSDarrick J. Wong 11602cb91babSDarrick J. Wong __entry->blk_res = qtrx->qt_blk_res; 11612cb91babSDarrick J. Wong __entry->bcount_delta = qtrx->qt_bcount_delta; 11622cb91babSDarrick J. Wong __entry->delbcnt_delta = qtrx->qt_delbcnt_delta; 11632cb91babSDarrick J. Wong 11642cb91babSDarrick J. Wong __entry->rtblk_res = qtrx->qt_rtblk_res; 11652cb91babSDarrick J. Wong __entry->rtblk_res_used = qtrx->qt_rtblk_res_used; 11662cb91babSDarrick J. Wong __entry->rtbcount_delta = qtrx->qt_rtbcount_delta; 11672cb91babSDarrick J. Wong __entry->delrtb_delta = qtrx->qt_delrtb_delta; 11682cb91babSDarrick J. Wong 11692cb91babSDarrick J. Wong __entry->ino_res = qtrx->qt_ino_res; 11702cb91babSDarrick J. Wong __entry->ino_res_used = qtrx->qt_ino_res_used; 11712cb91babSDarrick J. Wong __entry->icount_delta = qtrx->qt_icount_delta; 11722cb91babSDarrick J. Wong ), 11731a7ed271SDarrick J. Wong TP_printk("dev %d:%d dquot id 0x%x type %s flags %s " 11742cb91babSDarrick J. Wong "blk_res %llu bcount_delta %lld delbcnt_delta %lld " 11752cb91babSDarrick J. Wong "rtblk_res %llu rtblk_res_used %llu rtbcount_delta %lld delrtb_delta %lld " 11762cb91babSDarrick J. Wong "ino_res %llu ino_res_used %llu icount_delta %lld", 11772cb91babSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 11782cb91babSDarrick J. Wong __entry->dqid, 11791a7ed271SDarrick J. Wong __print_flags(__entry->type, "|", XFS_DQTYPE_STRINGS), 11802cb91babSDarrick J. Wong __print_flags(__entry->flags, "|", XFS_DQFLAG_STRINGS), 11812cb91babSDarrick J. Wong 11822cb91babSDarrick J. Wong __entry->blk_res, 11832cb91babSDarrick J. Wong __entry->bcount_delta, 11842cb91babSDarrick J. Wong __entry->delbcnt_delta, 11852cb91babSDarrick J. Wong 11862cb91babSDarrick J. Wong __entry->rtblk_res, 11872cb91babSDarrick J. Wong __entry->rtblk_res_used, 11882cb91babSDarrick J. Wong __entry->rtbcount_delta, 11892cb91babSDarrick J. Wong __entry->delrtb_delta, 11902cb91babSDarrick J. Wong 11912cb91babSDarrick J. Wong __entry->ino_res, 11922cb91babSDarrick J. Wong __entry->ino_res_used, 11932cb91babSDarrick J. Wong __entry->icount_delta) 11942cb91babSDarrick J. Wong ) 11952cb91babSDarrick J. Wong 11962cb91babSDarrick J. Wong #define DEFINE_DQTRX_EVENT(name) \ 11972cb91babSDarrick J. Wong DEFINE_EVENT(xfs_dqtrx_class, name, \ 11982cb91babSDarrick J. Wong TP_PROTO(struct xfs_dqtrx *qtrx), \ 11992cb91babSDarrick J. Wong TP_ARGS(qtrx)) 12002cb91babSDarrick J. Wong DEFINE_DQTRX_EVENT(xfs_trans_apply_dquot_deltas); 12012cb91babSDarrick J. Wong DEFINE_DQTRX_EVENT(xfs_trans_mod_dquot_before); 12022cb91babSDarrick J. Wong DEFINE_DQTRX_EVENT(xfs_trans_mod_dquot_after); 1203c59d87c4SChristoph Hellwig 1204c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_loggrant_class, 1205ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xlog_ticket *tic), 1206c59d87c4SChristoph Hellwig TP_ARGS(log, tic), 1207c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1208c59d87c4SChristoph Hellwig __field(dev_t, dev) 1209c59d87c4SChristoph Hellwig __field(char, ocnt) 1210c59d87c4SChristoph Hellwig __field(char, cnt) 1211c59d87c4SChristoph Hellwig __field(int, curr_res) 1212c59d87c4SChristoph Hellwig __field(int, unit_res) 1213c59d87c4SChristoph Hellwig __field(unsigned int, flags) 1214c59d87c4SChristoph Hellwig __field(int, reserveq) 1215c59d87c4SChristoph Hellwig __field(int, writeq) 1216c59d87c4SChristoph Hellwig __field(int, grant_reserve_cycle) 1217c59d87c4SChristoph Hellwig __field(int, grant_reserve_bytes) 1218c59d87c4SChristoph Hellwig __field(int, grant_write_cycle) 1219c59d87c4SChristoph Hellwig __field(int, grant_write_bytes) 1220c59d87c4SChristoph Hellwig __field(int, curr_cycle) 1221c59d87c4SChristoph Hellwig __field(int, curr_block) 1222c59d87c4SChristoph Hellwig __field(xfs_lsn_t, tail_lsn) 1223c59d87c4SChristoph Hellwig ), 1224c59d87c4SChristoph Hellwig TP_fast_assign( 1225c59d87c4SChristoph Hellwig __entry->dev = log->l_mp->m_super->s_dev; 1226c59d87c4SChristoph Hellwig __entry->ocnt = tic->t_ocnt; 1227c59d87c4SChristoph Hellwig __entry->cnt = tic->t_cnt; 1228c59d87c4SChristoph Hellwig __entry->curr_res = tic->t_curr_res; 1229c59d87c4SChristoph Hellwig __entry->unit_res = tic->t_unit_res; 1230c59d87c4SChristoph Hellwig __entry->flags = tic->t_flags; 123128496968SChristoph Hellwig __entry->reserveq = list_empty(&log->l_reserve_head.waiters); 123228496968SChristoph Hellwig __entry->writeq = list_empty(&log->l_write_head.waiters); 123328496968SChristoph Hellwig xlog_crack_grant_head(&log->l_reserve_head.grant, 1234c59d87c4SChristoph Hellwig &__entry->grant_reserve_cycle, 1235c59d87c4SChristoph Hellwig &__entry->grant_reserve_bytes); 123628496968SChristoph Hellwig xlog_crack_grant_head(&log->l_write_head.grant, 1237c59d87c4SChristoph Hellwig &__entry->grant_write_cycle, 1238c59d87c4SChristoph Hellwig &__entry->grant_write_bytes); 1239c59d87c4SChristoph Hellwig __entry->curr_cycle = log->l_curr_cycle; 1240c59d87c4SChristoph Hellwig __entry->curr_block = log->l_curr_block; 1241c59d87c4SChristoph Hellwig __entry->tail_lsn = atomic64_read(&log->l_tail_lsn); 1242c59d87c4SChristoph Hellwig ), 1243710b1e2cSChristoph Hellwig TP_printk("dev %d:%d t_ocnt %u t_cnt %u t_curr_res %u " 1244c59d87c4SChristoph Hellwig "t_unit_res %u t_flags %s reserveq %s " 1245c59d87c4SChristoph Hellwig "writeq %s grant_reserve_cycle %d " 1246c59d87c4SChristoph Hellwig "grant_reserve_bytes %d grant_write_cycle %d " 1247c59d87c4SChristoph Hellwig "grant_write_bytes %d curr_cycle %d curr_block %d " 1248c59d87c4SChristoph Hellwig "tail_cycle %d tail_block %d", 1249c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1250c59d87c4SChristoph Hellwig __entry->ocnt, 1251c59d87c4SChristoph Hellwig __entry->cnt, 1252c59d87c4SChristoph Hellwig __entry->curr_res, 1253c59d87c4SChristoph Hellwig __entry->unit_res, 1254c59d87c4SChristoph Hellwig __print_flags(__entry->flags, "|", XLOG_TIC_FLAGS), 1255c59d87c4SChristoph Hellwig __entry->reserveq ? "empty" : "active", 1256c59d87c4SChristoph Hellwig __entry->writeq ? "empty" : "active", 1257c59d87c4SChristoph Hellwig __entry->grant_reserve_cycle, 1258c59d87c4SChristoph Hellwig __entry->grant_reserve_bytes, 1259c59d87c4SChristoph Hellwig __entry->grant_write_cycle, 1260c59d87c4SChristoph Hellwig __entry->grant_write_bytes, 1261c59d87c4SChristoph Hellwig __entry->curr_cycle, 1262c59d87c4SChristoph Hellwig __entry->curr_block, 1263c59d87c4SChristoph Hellwig CYCLE_LSN(__entry->tail_lsn), 1264c59d87c4SChristoph Hellwig BLOCK_LSN(__entry->tail_lsn) 1265c59d87c4SChristoph Hellwig ) 1266c59d87c4SChristoph Hellwig ) 1267c59d87c4SChristoph Hellwig 1268c59d87c4SChristoph Hellwig #define DEFINE_LOGGRANT_EVENT(name) \ 1269c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_loggrant_class, name, \ 1270ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xlog_ticket *tic), \ 1271c59d87c4SChristoph Hellwig TP_ARGS(log, tic)) 1272c59d87c4SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_umount_write); 12739f9c19ecSChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep); 12749f9c19ecSChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake); 1275c59d87c4SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake_up); 12769006fb91SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_reserve); 12779006fb91SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_reserve_exit); 12789006fb91SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_regrant); 12799006fb91SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_regrant_exit); 12808b41e3f9SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant); 12818b41e3f9SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant_exit); 12828b41e3f9SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant_sub); 12838b41e3f9SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_ticket_ungrant); 12848b41e3f9SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_ticket_ungrant_sub); 12858b41e3f9SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_ticket_ungrant_exit); 12860e7ab7efSDave Chinner DEFINE_LOGGRANT_EVENT(xfs_log_cil_wait); 1287c59d87c4SChristoph Hellwig 12889e4c109aSChristoph Hellwig DECLARE_EVENT_CLASS(xfs_log_item_class, 12899e4c109aSChristoph Hellwig TP_PROTO(struct xfs_log_item *lip), 12909e4c109aSChristoph Hellwig TP_ARGS(lip), 12919e4c109aSChristoph Hellwig TP_STRUCT__entry( 12929e4c109aSChristoph Hellwig __field(dev_t, dev) 12939e4c109aSChristoph Hellwig __field(void *, lip) 12949e4c109aSChristoph Hellwig __field(uint, type) 129522525c17SDave Chinner __field(unsigned long, flags) 12969e4c109aSChristoph Hellwig __field(xfs_lsn_t, lsn) 12979e4c109aSChristoph Hellwig ), 12989e4c109aSChristoph Hellwig TP_fast_assign( 1299d86142ddSDave Chinner __entry->dev = lip->li_log->l_mp->m_super->s_dev; 13009e4c109aSChristoph Hellwig __entry->lip = lip; 13019e4c109aSChristoph Hellwig __entry->type = lip->li_type; 13029e4c109aSChristoph Hellwig __entry->flags = lip->li_flags; 13039e4c109aSChristoph Hellwig __entry->lsn = lip->li_lsn; 13049e4c109aSChristoph Hellwig ), 13053d170aa2SDarrick J. Wong TP_printk("dev %d:%d lip %p lsn %d/%d type %s flags %s", 13069e4c109aSChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 13079e4c109aSChristoph Hellwig __entry->lip, 13089e4c109aSChristoph Hellwig CYCLE_LSN(__entry->lsn), BLOCK_LSN(__entry->lsn), 13099e4c109aSChristoph Hellwig __print_symbolic(__entry->type, XFS_LI_TYPE_DESC), 13109e4c109aSChristoph Hellwig __print_flags(__entry->flags, "|", XFS_LI_FLAGS)) 13119e4c109aSChristoph Hellwig ) 13129e4c109aSChristoph Hellwig 131314c26c6aSDave Chinner TRACE_EVENT(xfs_log_force, 13149f27889fSCarlos Maiolino TP_PROTO(struct xfs_mount *mp, xfs_lsn_t lsn, unsigned long caller_ip), 13159f27889fSCarlos Maiolino TP_ARGS(mp, lsn, caller_ip), 131614c26c6aSDave Chinner TP_STRUCT__entry( 131714c26c6aSDave Chinner __field(dev_t, dev) 131814c26c6aSDave Chinner __field(xfs_lsn_t, lsn) 13199f27889fSCarlos Maiolino __field(unsigned long, caller_ip) 132014c26c6aSDave Chinner ), 132114c26c6aSDave Chinner TP_fast_assign( 132214c26c6aSDave Chinner __entry->dev = mp->m_super->s_dev; 132314c26c6aSDave Chinner __entry->lsn = lsn; 13249f27889fSCarlos Maiolino __entry->caller_ip = caller_ip; 132514c26c6aSDave Chinner ), 1326aff68a55SDarrick J. Wong TP_printk("dev %d:%d lsn 0x%llx caller %pS", 132714c26c6aSDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 13289f27889fSCarlos Maiolino __entry->lsn, (void *)__entry->caller_ip) 132914c26c6aSDave Chinner ) 133014c26c6aSDave Chinner 13319e4c109aSChristoph Hellwig #define DEFINE_LOG_ITEM_EVENT(name) \ 13329e4c109aSChristoph Hellwig DEFINE_EVENT(xfs_log_item_class, name, \ 13339e4c109aSChristoph Hellwig TP_PROTO(struct xfs_log_item *lip), \ 13349e4c109aSChristoph Hellwig TP_ARGS(lip)) 13359e4c109aSChristoph Hellwig DEFINE_LOG_ITEM_EVENT(xfs_ail_push); 13369e4c109aSChristoph Hellwig DEFINE_LOG_ITEM_EVENT(xfs_ail_pinned); 13379e4c109aSChristoph Hellwig DEFINE_LOG_ITEM_EVENT(xfs_ail_locked); 133843ff2122SChristoph Hellwig DEFINE_LOG_ITEM_EVENT(xfs_ail_flushing); 13390d227466SDave Chinner DEFINE_LOG_ITEM_EVENT(xfs_cil_whiteout_mark); 13400d227466SDave Chinner DEFINE_LOG_ITEM_EVENT(xfs_cil_whiteout_skip); 13410d227466SDave Chinner DEFINE_LOG_ITEM_EVENT(xfs_cil_whiteout_unpin); 13429e4c109aSChristoph Hellwig 1343750b9c90SDave Chinner DECLARE_EVENT_CLASS(xfs_ail_class, 1344750b9c90SDave Chinner TP_PROTO(struct xfs_log_item *lip, xfs_lsn_t old_lsn, xfs_lsn_t new_lsn), 1345750b9c90SDave Chinner TP_ARGS(lip, old_lsn, new_lsn), 1346750b9c90SDave Chinner TP_STRUCT__entry( 1347750b9c90SDave Chinner __field(dev_t, dev) 1348750b9c90SDave Chinner __field(void *, lip) 1349750b9c90SDave Chinner __field(uint, type) 135022525c17SDave Chinner __field(unsigned long, flags) 1351750b9c90SDave Chinner __field(xfs_lsn_t, old_lsn) 1352750b9c90SDave Chinner __field(xfs_lsn_t, new_lsn) 1353750b9c90SDave Chinner ), 1354750b9c90SDave Chinner TP_fast_assign( 1355d86142ddSDave Chinner __entry->dev = lip->li_log->l_mp->m_super->s_dev; 1356750b9c90SDave Chinner __entry->lip = lip; 1357750b9c90SDave Chinner __entry->type = lip->li_type; 1358750b9c90SDave Chinner __entry->flags = lip->li_flags; 1359750b9c90SDave Chinner __entry->old_lsn = old_lsn; 1360750b9c90SDave Chinner __entry->new_lsn = new_lsn; 1361750b9c90SDave Chinner ), 13623d170aa2SDarrick J. Wong TP_printk("dev %d:%d lip %p old lsn %d/%d new lsn %d/%d type %s flags %s", 1363750b9c90SDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 1364750b9c90SDave Chinner __entry->lip, 1365750b9c90SDave Chinner CYCLE_LSN(__entry->old_lsn), BLOCK_LSN(__entry->old_lsn), 1366750b9c90SDave Chinner CYCLE_LSN(__entry->new_lsn), BLOCK_LSN(__entry->new_lsn), 1367750b9c90SDave Chinner __print_symbolic(__entry->type, XFS_LI_TYPE_DESC), 1368750b9c90SDave Chinner __print_flags(__entry->flags, "|", XFS_LI_FLAGS)) 1369750b9c90SDave Chinner ) 1370750b9c90SDave Chinner 1371750b9c90SDave Chinner #define DEFINE_AIL_EVENT(name) \ 1372750b9c90SDave Chinner DEFINE_EVENT(xfs_ail_class, name, \ 1373750b9c90SDave Chinner TP_PROTO(struct xfs_log_item *lip, xfs_lsn_t old_lsn, xfs_lsn_t new_lsn), \ 1374750b9c90SDave Chinner TP_ARGS(lip, old_lsn, new_lsn)) 1375750b9c90SDave Chinner DEFINE_AIL_EVENT(xfs_ail_insert); 1376750b9c90SDave Chinner DEFINE_AIL_EVENT(xfs_ail_move); 1377750b9c90SDave Chinner DEFINE_AIL_EVENT(xfs_ail_delete); 1378750b9c90SDave Chinner 1379750b9c90SDave Chinner TRACE_EVENT(xfs_log_assign_tail_lsn, 1380750b9c90SDave Chinner TP_PROTO(struct xlog *log, xfs_lsn_t new_lsn), 1381750b9c90SDave Chinner TP_ARGS(log, new_lsn), 1382750b9c90SDave Chinner TP_STRUCT__entry( 1383750b9c90SDave Chinner __field(dev_t, dev) 1384750b9c90SDave Chinner __field(xfs_lsn_t, new_lsn) 1385750b9c90SDave Chinner __field(xfs_lsn_t, old_lsn) 1386750b9c90SDave Chinner __field(xfs_lsn_t, last_sync_lsn) 1387750b9c90SDave Chinner ), 1388750b9c90SDave Chinner TP_fast_assign( 1389750b9c90SDave Chinner __entry->dev = log->l_mp->m_super->s_dev; 1390750b9c90SDave Chinner __entry->new_lsn = new_lsn; 1391750b9c90SDave Chinner __entry->old_lsn = atomic64_read(&log->l_tail_lsn); 1392750b9c90SDave Chinner __entry->last_sync_lsn = atomic64_read(&log->l_last_sync_lsn); 1393750b9c90SDave Chinner ), 1394750b9c90SDave Chinner TP_printk("dev %d:%d new tail lsn %d/%d, old lsn %d/%d, last sync %d/%d", 1395750b9c90SDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 1396750b9c90SDave Chinner CYCLE_LSN(__entry->new_lsn), BLOCK_LSN(__entry->new_lsn), 1397750b9c90SDave Chinner CYCLE_LSN(__entry->old_lsn), BLOCK_LSN(__entry->old_lsn), 1398750b9c90SDave Chinner CYCLE_LSN(__entry->last_sync_lsn), BLOCK_LSN(__entry->last_sync_lsn)) 1399750b9c90SDave Chinner ) 14009e4c109aSChristoph Hellwig 1401c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_file_class, 14023e40b13cSChristoph Hellwig TP_PROTO(struct kiocb *iocb, struct iov_iter *iter), 14033e40b13cSChristoph Hellwig TP_ARGS(iocb, iter), 1404c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1405c59d87c4SChristoph Hellwig __field(dev_t, dev) 1406c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1407c59d87c4SChristoph Hellwig __field(xfs_fsize_t, size) 1408c59d87c4SChristoph Hellwig __field(loff_t, offset) 1409c59d87c4SChristoph Hellwig __field(size_t, count) 1410c59d87c4SChristoph Hellwig ), 1411c59d87c4SChristoph Hellwig TP_fast_assign( 14123e40b13cSChristoph Hellwig __entry->dev = file_inode(iocb->ki_filp)->i_sb->s_dev; 14133e40b13cSChristoph Hellwig __entry->ino = XFS_I(file_inode(iocb->ki_filp))->i_ino; 141413d2c10bSChristoph Hellwig __entry->size = XFS_I(file_inode(iocb->ki_filp))->i_disk_size; 14153e40b13cSChristoph Hellwig __entry->offset = iocb->ki_pos; 14163e40b13cSChristoph Hellwig __entry->count = iov_iter_count(iter); 1417c59d87c4SChristoph Hellwig ), 1418c23460ebSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx disize 0x%llx pos 0x%llx bytecount 0x%zx", 1419c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1420c59d87c4SChristoph Hellwig __entry->ino, 1421c59d87c4SChristoph Hellwig __entry->size, 1422c59d87c4SChristoph Hellwig __entry->offset, 14233176c3e0SChristoph Hellwig __entry->count) 1424c59d87c4SChristoph Hellwig ) 1425c59d87c4SChristoph Hellwig 1426c59d87c4SChristoph Hellwig #define DEFINE_RW_EVENT(name) \ 1427c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_file_class, name, \ 14283e40b13cSChristoph Hellwig TP_PROTO(struct kiocb *iocb, struct iov_iter *iter), \ 14293e40b13cSChristoph Hellwig TP_ARGS(iocb, iter)) 14303176c3e0SChristoph Hellwig DEFINE_RW_EVENT(xfs_file_buffered_read); 14313176c3e0SChristoph Hellwig DEFINE_RW_EVENT(xfs_file_direct_read); 143216d4d435SChristoph Hellwig DEFINE_RW_EVENT(xfs_file_dax_read); 1433c59d87c4SChristoph Hellwig DEFINE_RW_EVENT(xfs_file_buffered_write); 1434c59d87c4SChristoph Hellwig DEFINE_RW_EVENT(xfs_file_direct_write); 143516d4d435SChristoph Hellwig DEFINE_RW_EVENT(xfs_file_dax_write); 1436896f72d0SChristoph Hellwig DEFINE_RW_EVENT(xfs_reflink_bounce_dio_write); 1437896f72d0SChristoph Hellwig 1438c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_imap_class, 1439c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count, 1440be225fecSChristoph Hellwig int whichfork, struct xfs_bmbt_irec *irec), 1441be225fecSChristoph Hellwig TP_ARGS(ip, offset, count, whichfork, irec), 1442c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1443c59d87c4SChristoph Hellwig __field(dev_t, dev) 1444c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1445c59d87c4SChristoph Hellwig __field(loff_t, size) 1446c59d87c4SChristoph Hellwig __field(loff_t, offset) 1447c59d87c4SChristoph Hellwig __field(size_t, count) 1448be225fecSChristoph Hellwig __field(int, whichfork) 1449c59d87c4SChristoph Hellwig __field(xfs_fileoff_t, startoff) 1450c59d87c4SChristoph Hellwig __field(xfs_fsblock_t, startblock) 1451c59d87c4SChristoph Hellwig __field(xfs_filblks_t, blockcount) 1452c59d87c4SChristoph Hellwig ), 1453c59d87c4SChristoph Hellwig TP_fast_assign( 1454c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 1455c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 145613d2c10bSChristoph Hellwig __entry->size = ip->i_disk_size; 1457c59d87c4SChristoph Hellwig __entry->offset = offset; 1458c59d87c4SChristoph Hellwig __entry->count = count; 1459be225fecSChristoph Hellwig __entry->whichfork = whichfork; 1460c59d87c4SChristoph Hellwig __entry->startoff = irec ? irec->br_startoff : 0; 1461c59d87c4SChristoph Hellwig __entry->startblock = irec ? irec->br_startblock : 0; 1462c59d87c4SChristoph Hellwig __entry->blockcount = irec ? irec->br_blockcount : 0; 1463c59d87c4SChristoph Hellwig ), 1464c23460ebSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx disize 0x%llx pos 0x%llx bytecount 0x%zx " 14657989acccSDarrick J. Wong "fork %s startoff 0x%llx startblock 0x%llx fsbcount 0x%llx", 1466c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1467c59d87c4SChristoph Hellwig __entry->ino, 1468c59d87c4SChristoph Hellwig __entry->size, 1469c59d87c4SChristoph Hellwig __entry->offset, 1470c59d87c4SChristoph Hellwig __entry->count, 1471f93f85f7SDarrick J. Wong __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS), 1472c59d87c4SChristoph Hellwig __entry->startoff, 1473c8ce540dSDarrick J. Wong (int64_t)__entry->startblock, 1474c59d87c4SChristoph Hellwig __entry->blockcount) 1475c59d87c4SChristoph Hellwig ) 1476c59d87c4SChristoph Hellwig 1477be225fecSChristoph Hellwig #define DEFINE_IMAP_EVENT(name) \ 1478c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_imap_class, name, \ 1479c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count, \ 1480be225fecSChristoph Hellwig int whichfork, struct xfs_bmbt_irec *irec), \ 1481be225fecSChristoph Hellwig TP_ARGS(ip, offset, count, whichfork, irec)) 1482be225fecSChristoph Hellwig DEFINE_IMAP_EVENT(xfs_map_blocks_found); 1483be225fecSChristoph Hellwig DEFINE_IMAP_EVENT(xfs_map_blocks_alloc); 1484be225fecSChristoph Hellwig DEFINE_IMAP_EVENT(xfs_iomap_alloc); 1485be225fecSChristoph Hellwig DEFINE_IMAP_EVENT(xfs_iomap_found); 1486c59d87c4SChristoph Hellwig 1487c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_simple_io_class, 1488c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count), 1489c59d87c4SChristoph Hellwig TP_ARGS(ip, offset, count), 1490c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1491c59d87c4SChristoph Hellwig __field(dev_t, dev) 1492c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1493c59d87c4SChristoph Hellwig __field(loff_t, isize) 1494c59d87c4SChristoph Hellwig __field(loff_t, disize) 1495c59d87c4SChristoph Hellwig __field(loff_t, offset) 1496c59d87c4SChristoph Hellwig __field(size_t, count) 1497c59d87c4SChristoph Hellwig ), 1498c59d87c4SChristoph Hellwig TP_fast_assign( 1499c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 1500c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 1501ce7ae151SChristoph Hellwig __entry->isize = VFS_I(ip)->i_size; 150213d2c10bSChristoph Hellwig __entry->disize = ip->i_disk_size; 1503c59d87c4SChristoph Hellwig __entry->offset = offset; 1504c59d87c4SChristoph Hellwig __entry->count = count; 1505c59d87c4SChristoph Hellwig ), 15062813d682SChristoph Hellwig TP_printk("dev %d:%d ino 0x%llx isize 0x%llx disize 0x%llx " 1507d538cf24SDarrick J. Wong "pos 0x%llx bytecount 0x%zx", 1508c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1509c59d87c4SChristoph Hellwig __entry->ino, 1510c59d87c4SChristoph Hellwig __entry->isize, 1511c59d87c4SChristoph Hellwig __entry->disize, 1512c59d87c4SChristoph Hellwig __entry->offset, 1513c59d87c4SChristoph Hellwig __entry->count) 1514c59d87c4SChristoph Hellwig ); 1515c59d87c4SChristoph Hellwig 1516c59d87c4SChristoph Hellwig #define DEFINE_SIMPLE_IO_EVENT(name) \ 1517c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_simple_io_class, name, \ 1518c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count), \ 1519c59d87c4SChristoph Hellwig TP_ARGS(ip, offset, count)) 1520c59d87c4SChristoph Hellwig DEFINE_SIMPLE_IO_EVENT(xfs_delalloc_enospc); 1521c59d87c4SChristoph Hellwig DEFINE_SIMPLE_IO_EVENT(xfs_unwritten_convert); 1522c59d87c4SChristoph Hellwig DEFINE_SIMPLE_IO_EVENT(xfs_setfilesize); 15230a50f162SBrian Foster DEFINE_SIMPLE_IO_EVENT(xfs_zero_eof); 1524273dda76SChristoph Hellwig DEFINE_SIMPLE_IO_EVENT(xfs_end_io_direct_write); 1525273dda76SChristoph Hellwig DEFINE_SIMPLE_IO_EVENT(xfs_end_io_direct_write_unwritten); 1526273dda76SChristoph Hellwig DEFINE_SIMPLE_IO_EVENT(xfs_end_io_direct_write_append); 152754919f94SDavid Howells DEFINE_SIMPLE_IO_EVENT(xfs_file_splice_read); 1528c59d87c4SChristoph Hellwig 1529c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_itrunc_class, 1530c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), 1531c59d87c4SChristoph Hellwig TP_ARGS(ip, new_size), 1532c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1533c59d87c4SChristoph Hellwig __field(dev_t, dev) 1534c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1535c59d87c4SChristoph Hellwig __field(xfs_fsize_t, size) 1536c59d87c4SChristoph Hellwig __field(xfs_fsize_t, new_size) 1537c59d87c4SChristoph Hellwig ), 1538c59d87c4SChristoph Hellwig TP_fast_assign( 1539c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 1540c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 154113d2c10bSChristoph Hellwig __entry->size = ip->i_disk_size; 1542c59d87c4SChristoph Hellwig __entry->new_size = new_size; 1543c59d87c4SChristoph Hellwig ), 1544c23460ebSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx disize 0x%llx new_size 0x%llx", 1545c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1546c59d87c4SChristoph Hellwig __entry->ino, 1547c59d87c4SChristoph Hellwig __entry->size, 1548c59d87c4SChristoph Hellwig __entry->new_size) 1549c59d87c4SChristoph Hellwig ) 1550c59d87c4SChristoph Hellwig 1551c59d87c4SChristoph Hellwig #define DEFINE_ITRUNC_EVENT(name) \ 1552c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_itrunc_class, name, \ 1553c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), \ 1554c59d87c4SChristoph Hellwig TP_ARGS(ip, new_size)) 1555673e8e59SChristoph Hellwig DEFINE_ITRUNC_EVENT(xfs_itruncate_extents_start); 1556673e8e59SChristoph Hellwig DEFINE_ITRUNC_EVENT(xfs_itruncate_extents_end); 1557c59d87c4SChristoph Hellwig 1558c59d87c4SChristoph Hellwig TRACE_EVENT(xfs_pagecache_inval, 1559c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_off_t start, xfs_off_t finish), 1560c59d87c4SChristoph Hellwig TP_ARGS(ip, start, finish), 1561c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1562c59d87c4SChristoph Hellwig __field(dev_t, dev) 1563c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1564c59d87c4SChristoph Hellwig __field(xfs_fsize_t, size) 1565c59d87c4SChristoph Hellwig __field(xfs_off_t, start) 1566c59d87c4SChristoph Hellwig __field(xfs_off_t, finish) 1567c59d87c4SChristoph Hellwig ), 1568c59d87c4SChristoph Hellwig TP_fast_assign( 1569c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 1570c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 157113d2c10bSChristoph Hellwig __entry->size = ip->i_disk_size; 1572c59d87c4SChristoph Hellwig __entry->start = start; 1573c59d87c4SChristoph Hellwig __entry->finish = finish; 1574c59d87c4SChristoph Hellwig ), 1575c23460ebSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx disize 0x%llx start 0x%llx finish 0x%llx", 1576c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1577c59d87c4SChristoph Hellwig __entry->ino, 1578c59d87c4SChristoph Hellwig __entry->size, 1579c59d87c4SChristoph Hellwig __entry->start, 1580c59d87c4SChristoph Hellwig __entry->finish) 1581c59d87c4SChristoph Hellwig ); 1582c59d87c4SChristoph Hellwig 1583c59d87c4SChristoph Hellwig TRACE_EVENT(xfs_bunmap, 15846f25b211SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, xfs_fileoff_t fileoff, xfs_filblks_t len, 1585c59d87c4SChristoph Hellwig int flags, unsigned long caller_ip), 15866f25b211SDarrick J. Wong TP_ARGS(ip, fileoff, len, flags, caller_ip), 1587c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1588c59d87c4SChristoph Hellwig __field(dev_t, dev) 1589c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1590c59d87c4SChristoph Hellwig __field(xfs_fsize_t, size) 15916f25b211SDarrick J. Wong __field(xfs_fileoff_t, fileoff) 1592c59d87c4SChristoph Hellwig __field(xfs_filblks_t, len) 1593c59d87c4SChristoph Hellwig __field(unsigned long, caller_ip) 1594c59d87c4SChristoph Hellwig __field(int, flags) 1595c59d87c4SChristoph Hellwig ), 1596c59d87c4SChristoph Hellwig TP_fast_assign( 1597c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 1598c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 159913d2c10bSChristoph Hellwig __entry->size = ip->i_disk_size; 16006f25b211SDarrick J. Wong __entry->fileoff = fileoff; 1601c59d87c4SChristoph Hellwig __entry->len = len; 1602c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 1603c59d87c4SChristoph Hellwig __entry->flags = flags; 1604c59d87c4SChristoph Hellwig ), 1605c23460ebSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx disize 0x%llx fileoff 0x%llx fsbcount 0x%llx " 1606aff68a55SDarrick J. Wong "flags %s caller %pS", 1607c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1608c59d87c4SChristoph Hellwig __entry->ino, 1609c59d87c4SChristoph Hellwig __entry->size, 16106f25b211SDarrick J. Wong __entry->fileoff, 1611c59d87c4SChristoph Hellwig __entry->len, 1612c59d87c4SChristoph Hellwig __print_flags(__entry->flags, "|", XFS_BMAPI_FLAGS), 1613c59d87c4SChristoph Hellwig (void *)__entry->caller_ip) 1614c59d87c4SChristoph Hellwig 1615c59d87c4SChristoph Hellwig ); 1616c59d87c4SChristoph Hellwig 16174ecbfe63SDave Chinner DECLARE_EVENT_CLASS(xfs_extent_busy_class, 1618c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 1619c59d87c4SChristoph Hellwig xfs_agblock_t agbno, xfs_extlen_t len), 1620c59d87c4SChristoph Hellwig TP_ARGS(mp, agno, agbno, len), 1621c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1622c59d87c4SChristoph Hellwig __field(dev_t, dev) 1623c59d87c4SChristoph Hellwig __field(xfs_agnumber_t, agno) 1624c59d87c4SChristoph Hellwig __field(xfs_agblock_t, agbno) 1625c59d87c4SChristoph Hellwig __field(xfs_extlen_t, len) 1626c59d87c4SChristoph Hellwig ), 1627c59d87c4SChristoph Hellwig TP_fast_assign( 1628c59d87c4SChristoph Hellwig __entry->dev = mp->m_super->s_dev; 1629c59d87c4SChristoph Hellwig __entry->agno = agno; 1630c59d87c4SChristoph Hellwig __entry->agbno = agbno; 1631c59d87c4SChristoph Hellwig __entry->len = len; 1632c59d87c4SChristoph Hellwig ), 16337989acccSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x", 1634c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1635c59d87c4SChristoph Hellwig __entry->agno, 1636c59d87c4SChristoph Hellwig __entry->agbno, 1637c59d87c4SChristoph Hellwig __entry->len) 1638c59d87c4SChristoph Hellwig ); 1639c59d87c4SChristoph Hellwig #define DEFINE_BUSY_EVENT(name) \ 16404ecbfe63SDave Chinner DEFINE_EVENT(xfs_extent_busy_class, name, \ 1641c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 1642c59d87c4SChristoph Hellwig xfs_agblock_t agbno, xfs_extlen_t len), \ 1643c59d87c4SChristoph Hellwig TP_ARGS(mp, agno, agbno, len)) 16444ecbfe63SDave Chinner DEFINE_BUSY_EVENT(xfs_extent_busy); 16454ecbfe63SDave Chinner DEFINE_BUSY_EVENT(xfs_extent_busy_enomem); 16464ecbfe63SDave Chinner DEFINE_BUSY_EVENT(xfs_extent_busy_force); 16474ecbfe63SDave Chinner DEFINE_BUSY_EVENT(xfs_extent_busy_reuse); 16484ecbfe63SDave Chinner DEFINE_BUSY_EVENT(xfs_extent_busy_clear); 1649c59d87c4SChristoph Hellwig 16504ecbfe63SDave Chinner TRACE_EVENT(xfs_extent_busy_trim, 1651c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 1652c59d87c4SChristoph Hellwig xfs_agblock_t agbno, xfs_extlen_t len, 1653c59d87c4SChristoph Hellwig xfs_agblock_t tbno, xfs_extlen_t tlen), 1654c59d87c4SChristoph Hellwig TP_ARGS(mp, agno, agbno, len, tbno, tlen), 1655c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1656c59d87c4SChristoph Hellwig __field(dev_t, dev) 1657c59d87c4SChristoph Hellwig __field(xfs_agnumber_t, agno) 1658c59d87c4SChristoph Hellwig __field(xfs_agblock_t, agbno) 1659c59d87c4SChristoph Hellwig __field(xfs_extlen_t, len) 1660c59d87c4SChristoph Hellwig __field(xfs_agblock_t, tbno) 1661c59d87c4SChristoph Hellwig __field(xfs_extlen_t, tlen) 1662c59d87c4SChristoph Hellwig ), 1663c59d87c4SChristoph Hellwig TP_fast_assign( 1664c59d87c4SChristoph Hellwig __entry->dev = mp->m_super->s_dev; 1665c59d87c4SChristoph Hellwig __entry->agno = agno; 1666c59d87c4SChristoph Hellwig __entry->agbno = agbno; 1667c59d87c4SChristoph Hellwig __entry->len = len; 1668c59d87c4SChristoph Hellwig __entry->tbno = tbno; 1669c59d87c4SChristoph Hellwig __entry->tlen = tlen; 1670c59d87c4SChristoph Hellwig ), 16717989acccSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x found_agbno 0x%x found_fsbcount 0x%x", 1672c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1673c59d87c4SChristoph Hellwig __entry->agno, 1674c59d87c4SChristoph Hellwig __entry->agbno, 1675c59d87c4SChristoph Hellwig __entry->len, 1676c59d87c4SChristoph Hellwig __entry->tbno, 1677c59d87c4SChristoph Hellwig __entry->tlen) 1678c59d87c4SChristoph Hellwig ); 1679c59d87c4SChristoph Hellwig 1680a27ba260SBrian Foster DECLARE_EVENT_CLASS(xfs_agf_class, 1681c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, struct xfs_agf *agf, int flags, 1682c59d87c4SChristoph Hellwig unsigned long caller_ip), 1683c59d87c4SChristoph Hellwig TP_ARGS(mp, agf, flags, caller_ip), 1684c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1685c59d87c4SChristoph Hellwig __field(dev_t, dev) 1686c59d87c4SChristoph Hellwig __field(xfs_agnumber_t, agno) 1687c59d87c4SChristoph Hellwig __field(int, flags) 1688c59d87c4SChristoph Hellwig __field(__u32, length) 1689c59d87c4SChristoph Hellwig __field(__u32, bno_root) 1690c59d87c4SChristoph Hellwig __field(__u32, cnt_root) 1691c59d87c4SChristoph Hellwig __field(__u32, bno_level) 1692c59d87c4SChristoph Hellwig __field(__u32, cnt_level) 1693c59d87c4SChristoph Hellwig __field(__u32, flfirst) 1694c59d87c4SChristoph Hellwig __field(__u32, fllast) 1695c59d87c4SChristoph Hellwig __field(__u32, flcount) 1696c59d87c4SChristoph Hellwig __field(__u32, freeblks) 1697c59d87c4SChristoph Hellwig __field(__u32, longest) 1698c59d87c4SChristoph Hellwig __field(unsigned long, caller_ip) 1699c59d87c4SChristoph Hellwig ), 1700c59d87c4SChristoph Hellwig TP_fast_assign( 1701c59d87c4SChristoph Hellwig __entry->dev = mp->m_super->s_dev; 1702c59d87c4SChristoph Hellwig __entry->agno = be32_to_cpu(agf->agf_seqno), 1703c59d87c4SChristoph Hellwig __entry->flags = flags; 1704c59d87c4SChristoph Hellwig __entry->length = be32_to_cpu(agf->agf_length), 1705c59d87c4SChristoph Hellwig __entry->bno_root = be32_to_cpu(agf->agf_roots[XFS_BTNUM_BNO]), 1706c59d87c4SChristoph Hellwig __entry->cnt_root = be32_to_cpu(agf->agf_roots[XFS_BTNUM_CNT]), 1707c59d87c4SChristoph Hellwig __entry->bno_level = 1708c59d87c4SChristoph Hellwig be32_to_cpu(agf->agf_levels[XFS_BTNUM_BNO]), 1709c59d87c4SChristoph Hellwig __entry->cnt_level = 1710c59d87c4SChristoph Hellwig be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNT]), 1711c59d87c4SChristoph Hellwig __entry->flfirst = be32_to_cpu(agf->agf_flfirst), 1712c59d87c4SChristoph Hellwig __entry->fllast = be32_to_cpu(agf->agf_fllast), 1713c59d87c4SChristoph Hellwig __entry->flcount = be32_to_cpu(agf->agf_flcount), 1714c59d87c4SChristoph Hellwig __entry->freeblks = be32_to_cpu(agf->agf_freeblks), 1715c59d87c4SChristoph Hellwig __entry->longest = be32_to_cpu(agf->agf_longest); 1716c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 1717c59d87c4SChristoph Hellwig ), 17189febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x flags %s length %u roots b %u c %u " 1719c59d87c4SChristoph Hellwig "levels b %u c %u flfirst %u fllast %u flcount %u " 1720aff68a55SDarrick J. Wong "freeblks %u longest %u caller %pS", 1721c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1722c59d87c4SChristoph Hellwig __entry->agno, 1723c59d87c4SChristoph Hellwig __print_flags(__entry->flags, "|", XFS_AGF_FLAGS), 1724c59d87c4SChristoph Hellwig __entry->length, 1725c59d87c4SChristoph Hellwig __entry->bno_root, 1726c59d87c4SChristoph Hellwig __entry->cnt_root, 1727c59d87c4SChristoph Hellwig __entry->bno_level, 1728c59d87c4SChristoph Hellwig __entry->cnt_level, 1729c59d87c4SChristoph Hellwig __entry->flfirst, 1730c59d87c4SChristoph Hellwig __entry->fllast, 1731c59d87c4SChristoph Hellwig __entry->flcount, 1732c59d87c4SChristoph Hellwig __entry->freeblks, 1733c59d87c4SChristoph Hellwig __entry->longest, 1734c59d87c4SChristoph Hellwig (void *)__entry->caller_ip) 1735c59d87c4SChristoph Hellwig ); 1736a27ba260SBrian Foster #define DEFINE_AGF_EVENT(name) \ 1737a27ba260SBrian Foster DEFINE_EVENT(xfs_agf_class, name, \ 1738a27ba260SBrian Foster TP_PROTO(struct xfs_mount *mp, struct xfs_agf *agf, int flags, \ 1739a27ba260SBrian Foster unsigned long caller_ip), \ 1740a27ba260SBrian Foster TP_ARGS(mp, agf, flags, caller_ip)) 1741a27ba260SBrian Foster DEFINE_AGF_EVENT(xfs_agf); 1742a27ba260SBrian Foster DEFINE_AGF_EVENT(xfs_agfl_reset); 1743c59d87c4SChristoph Hellwig 1744c59d87c4SChristoph Hellwig TRACE_EVENT(xfs_free_extent, 1745c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno, 17463fd129b6SDarrick J. Wong xfs_extlen_t len, enum xfs_ag_resv_type resv, int haveleft, 17473fd129b6SDarrick J. Wong int haveright), 17483fd129b6SDarrick J. Wong TP_ARGS(mp, agno, agbno, len, resv, haveleft, haveright), 1749c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1750c59d87c4SChristoph Hellwig __field(dev_t, dev) 1751c59d87c4SChristoph Hellwig __field(xfs_agnumber_t, agno) 1752c59d87c4SChristoph Hellwig __field(xfs_agblock_t, agbno) 1753c59d87c4SChristoph Hellwig __field(xfs_extlen_t, len) 17543fd129b6SDarrick J. Wong __field(int, resv) 1755c59d87c4SChristoph Hellwig __field(int, haveleft) 1756c59d87c4SChristoph Hellwig __field(int, haveright) 1757c59d87c4SChristoph Hellwig ), 1758c59d87c4SChristoph Hellwig TP_fast_assign( 1759c59d87c4SChristoph Hellwig __entry->dev = mp->m_super->s_dev; 1760c59d87c4SChristoph Hellwig __entry->agno = agno; 1761c59d87c4SChristoph Hellwig __entry->agbno = agbno; 1762c59d87c4SChristoph Hellwig __entry->len = len; 17633fd129b6SDarrick J. Wong __entry->resv = resv; 1764c59d87c4SChristoph Hellwig __entry->haveleft = haveleft; 1765c59d87c4SChristoph Hellwig __entry->haveright = haveright; 1766c59d87c4SChristoph Hellwig ), 17677989acccSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x resv %d %s", 1768c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1769c59d87c4SChristoph Hellwig __entry->agno, 1770c59d87c4SChristoph Hellwig __entry->agbno, 1771c59d87c4SChristoph Hellwig __entry->len, 17723fd129b6SDarrick J. Wong __entry->resv, 1773c59d87c4SChristoph Hellwig __entry->haveleft ? 1774c59d87c4SChristoph Hellwig (__entry->haveright ? "both" : "left") : 1775c59d87c4SChristoph Hellwig (__entry->haveright ? "right" : "none")) 1776c59d87c4SChristoph Hellwig 1777c59d87c4SChristoph Hellwig ); 1778c59d87c4SChristoph Hellwig 1779c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_alloc_class, 1780c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_alloc_arg *args), 1781c59d87c4SChristoph Hellwig TP_ARGS(args), 1782c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1783c59d87c4SChristoph Hellwig __field(dev_t, dev) 1784c59d87c4SChristoph Hellwig __field(xfs_agnumber_t, agno) 1785c59d87c4SChristoph Hellwig __field(xfs_agblock_t, agbno) 1786c59d87c4SChristoph Hellwig __field(xfs_extlen_t, minlen) 1787c59d87c4SChristoph Hellwig __field(xfs_extlen_t, maxlen) 1788c59d87c4SChristoph Hellwig __field(xfs_extlen_t, mod) 1789c59d87c4SChristoph Hellwig __field(xfs_extlen_t, prod) 1790c59d87c4SChristoph Hellwig __field(xfs_extlen_t, minleft) 1791c59d87c4SChristoph Hellwig __field(xfs_extlen_t, total) 1792c59d87c4SChristoph Hellwig __field(xfs_extlen_t, alignment) 1793c59d87c4SChristoph Hellwig __field(xfs_extlen_t, minalignslop) 1794c59d87c4SChristoph Hellwig __field(xfs_extlen_t, len) 1795c59d87c4SChristoph Hellwig __field(char, wasdel) 1796c59d87c4SChristoph Hellwig __field(char, wasfromfl) 17973fd129b6SDarrick J. Wong __field(int, resv) 1798292378edSDave Chinner __field(int, datatype) 1799692b6cddSDave Chinner __field(xfs_agnumber_t, highest_agno) 1800c59d87c4SChristoph Hellwig ), 1801c59d87c4SChristoph Hellwig TP_fast_assign( 1802c59d87c4SChristoph Hellwig __entry->dev = args->mp->m_super->s_dev; 1803c59d87c4SChristoph Hellwig __entry->agno = args->agno; 1804c59d87c4SChristoph Hellwig __entry->agbno = args->agbno; 1805c59d87c4SChristoph Hellwig __entry->minlen = args->minlen; 1806c59d87c4SChristoph Hellwig __entry->maxlen = args->maxlen; 1807c59d87c4SChristoph Hellwig __entry->mod = args->mod; 1808c59d87c4SChristoph Hellwig __entry->prod = args->prod; 1809c59d87c4SChristoph Hellwig __entry->minleft = args->minleft; 1810c59d87c4SChristoph Hellwig __entry->total = args->total; 1811c59d87c4SChristoph Hellwig __entry->alignment = args->alignment; 1812c59d87c4SChristoph Hellwig __entry->minalignslop = args->minalignslop; 1813c59d87c4SChristoph Hellwig __entry->len = args->len; 1814c59d87c4SChristoph Hellwig __entry->wasdel = args->wasdel; 1815c59d87c4SChristoph Hellwig __entry->wasfromfl = args->wasfromfl; 18163fd129b6SDarrick J. Wong __entry->resv = args->resv; 1817292378edSDave Chinner __entry->datatype = args->datatype; 1818692b6cddSDave Chinner __entry->highest_agno = args->tp->t_highest_agno; 1819c59d87c4SChristoph Hellwig ), 1820f7b08163SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x minlen %u maxlen %u mod %u " 1821c59d87c4SChristoph Hellwig "prod %u minleft %u total %u alignment %u minalignslop %u " 1822230e8fe8SDave Chinner "len %u wasdel %d wasfromfl %d resv %d " 1823692b6cddSDave Chinner "datatype 0x%x highest_agno 0x%x", 1824c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1825c59d87c4SChristoph Hellwig __entry->agno, 1826c59d87c4SChristoph Hellwig __entry->agbno, 1827c59d87c4SChristoph Hellwig __entry->minlen, 1828c59d87c4SChristoph Hellwig __entry->maxlen, 1829c59d87c4SChristoph Hellwig __entry->mod, 1830c59d87c4SChristoph Hellwig __entry->prod, 1831c59d87c4SChristoph Hellwig __entry->minleft, 1832c59d87c4SChristoph Hellwig __entry->total, 1833c59d87c4SChristoph Hellwig __entry->alignment, 1834c59d87c4SChristoph Hellwig __entry->minalignslop, 1835c59d87c4SChristoph Hellwig __entry->len, 1836c59d87c4SChristoph Hellwig __entry->wasdel, 1837c59d87c4SChristoph Hellwig __entry->wasfromfl, 18383fd129b6SDarrick J. Wong __entry->resv, 1839292378edSDave Chinner __entry->datatype, 1840692b6cddSDave Chinner __entry->highest_agno) 1841c59d87c4SChristoph Hellwig ) 1842c59d87c4SChristoph Hellwig 1843c59d87c4SChristoph Hellwig #define DEFINE_ALLOC_EVENT(name) \ 1844c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_alloc_class, name, \ 1845c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_alloc_arg *args), \ 1846c59d87c4SChristoph Hellwig TP_ARGS(args)) 1847c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_exact_done); 1848c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_exact_notfound); 1849c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_exact_error); 1850c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_near_nominleft); 1851c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_near_first); 1852d2968825SBrian Foster DEFINE_ALLOC_EVENT(xfs_alloc_cur); 1853fec0afdaSBrian Foster DEFINE_ALLOC_EVENT(xfs_alloc_cur_right); 1854fec0afdaSBrian Foster DEFINE_ALLOC_EVENT(xfs_alloc_cur_left); 1855dc8e69bdSBrian Foster DEFINE_ALLOC_EVENT(xfs_alloc_cur_lookup); 1856dc8e69bdSBrian Foster DEFINE_ALLOC_EVENT(xfs_alloc_cur_lookup_done); 1857c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_near_error); 1858c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_near_noentry); 1859c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_near_busy); 1860c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_size_neither); 1861c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_size_noentry); 1862c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_size_nominleft); 1863c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_size_done); 1864c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_size_error); 1865c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_size_busy); 1866c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_small_freelist); 1867c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_small_notenough); 1868c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_small_done); 1869c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_small_error); 1870c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_vextent_badargs); 18711dd0510fSDave Chinner DEFINE_ALLOC_EVENT(xfs_alloc_vextent_skip_deadlock); 1872c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_vextent_nofix); 1873c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_vextent_noagbp); 1874c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_vextent_loopfailed); 1875c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_vextent_allfailed); 1876c59d87c4SChristoph Hellwig 1877e6fbb716SDarrick J. Wong DEFINE_ALLOC_EVENT(xfs_alloc_vextent_this_ag); 1878e6fbb716SDarrick J. Wong DEFINE_ALLOC_EVENT(xfs_alloc_vextent_start_ag); 1879e6fbb716SDarrick J. Wong DEFINE_ALLOC_EVENT(xfs_alloc_vextent_first_ag); 1880e6fbb716SDarrick J. Wong DEFINE_ALLOC_EVENT(xfs_alloc_vextent_exact_bno); 1881e6fbb716SDarrick J. Wong DEFINE_ALLOC_EVENT(xfs_alloc_vextent_near_bno); 1882e6fbb716SDarrick J. Wong DEFINE_ALLOC_EVENT(xfs_alloc_vextent_finish); 1883e6fbb716SDarrick J. Wong 1884396bbf3cSBrian Foster TRACE_EVENT(xfs_alloc_cur_check, 1885396bbf3cSBrian Foster TP_PROTO(struct xfs_mount *mp, xfs_btnum_t btnum, xfs_agblock_t bno, 1886396bbf3cSBrian Foster xfs_extlen_t len, xfs_extlen_t diff, bool new), 1887396bbf3cSBrian Foster TP_ARGS(mp, btnum, bno, len, diff, new), 1888396bbf3cSBrian Foster TP_STRUCT__entry( 1889396bbf3cSBrian Foster __field(dev_t, dev) 1890396bbf3cSBrian Foster __field(xfs_btnum_t, btnum) 1891396bbf3cSBrian Foster __field(xfs_agblock_t, bno) 1892396bbf3cSBrian Foster __field(xfs_extlen_t, len) 1893396bbf3cSBrian Foster __field(xfs_extlen_t, diff) 1894396bbf3cSBrian Foster __field(bool, new) 1895396bbf3cSBrian Foster ), 1896396bbf3cSBrian Foster TP_fast_assign( 1897396bbf3cSBrian Foster __entry->dev = mp->m_super->s_dev; 1898396bbf3cSBrian Foster __entry->btnum = btnum; 1899396bbf3cSBrian Foster __entry->bno = bno; 1900396bbf3cSBrian Foster __entry->len = len; 1901396bbf3cSBrian Foster __entry->diff = diff; 1902396bbf3cSBrian Foster __entry->new = new; 1903396bbf3cSBrian Foster ), 19047989acccSDarrick J. Wong TP_printk("dev %d:%d btree %s agbno 0x%x fsbcount 0x%x diff 0x%x new %d", 1905396bbf3cSBrian Foster MAJOR(__entry->dev), MINOR(__entry->dev), 1906396bbf3cSBrian Foster __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 1907396bbf3cSBrian Foster __entry->bno, __entry->len, __entry->diff, __entry->new) 1908396bbf3cSBrian Foster ) 1909396bbf3cSBrian Foster 19105a5881cdSDave Chinner DECLARE_EVENT_CLASS(xfs_da_class, 1911c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_da_args *args), 1912c59d87c4SChristoph Hellwig TP_ARGS(args), 1913c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1914c59d87c4SChristoph Hellwig __field(dev_t, dev) 1915c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1916c59d87c4SChristoph Hellwig __dynamic_array(char, name, args->namelen) 1917c59d87c4SChristoph Hellwig __field(int, namelen) 1918c59d87c4SChristoph Hellwig __field(xfs_dahash_t, hashval) 1919c59d87c4SChristoph Hellwig __field(xfs_ino_t, inumber) 19203402d931SDave Chinner __field(uint32_t, op_flags) 1921c59d87c4SChristoph Hellwig ), 1922c59d87c4SChristoph Hellwig TP_fast_assign( 1923c59d87c4SChristoph Hellwig __entry->dev = VFS_I(args->dp)->i_sb->s_dev; 1924c59d87c4SChristoph Hellwig __entry->ino = args->dp->i_ino; 1925c59d87c4SChristoph Hellwig if (args->namelen) 1926c59d87c4SChristoph Hellwig memcpy(__get_str(name), args->name, args->namelen); 1927c59d87c4SChristoph Hellwig __entry->namelen = args->namelen; 1928c59d87c4SChristoph Hellwig __entry->hashval = args->hashval; 1929c59d87c4SChristoph Hellwig __entry->inumber = args->inumber; 1930c59d87c4SChristoph Hellwig __entry->op_flags = args->op_flags; 1931c59d87c4SChristoph Hellwig ), 1932c59d87c4SChristoph Hellwig TP_printk("dev %d:%d ino 0x%llx name %.*s namelen %d hashval 0x%x " 1933c59d87c4SChristoph Hellwig "inumber 0x%llx op_flags %s", 1934c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1935c59d87c4SChristoph Hellwig __entry->ino, 1936c59d87c4SChristoph Hellwig __entry->namelen, 1937c59d87c4SChristoph Hellwig __entry->namelen ? __get_str(name) : NULL, 1938c59d87c4SChristoph Hellwig __entry->namelen, 1939c59d87c4SChristoph Hellwig __entry->hashval, 1940c59d87c4SChristoph Hellwig __entry->inumber, 1941c59d87c4SChristoph Hellwig __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS)) 1942c59d87c4SChristoph Hellwig ) 1943c59d87c4SChristoph Hellwig 1944c59d87c4SChristoph Hellwig #define DEFINE_DIR2_EVENT(name) \ 19455a5881cdSDave Chinner DEFINE_EVENT(xfs_da_class, name, \ 1946c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_da_args *args), \ 1947c59d87c4SChristoph Hellwig TP_ARGS(args)) 1948c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_addname); 1949c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_create); 1950c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_lookup); 1951c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_replace); 1952c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_removename); 1953c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_toino4); 1954c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_toino8); 1955c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_to_block); 1956c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_block_addname); 1957c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_block_lookup); 1958c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_block_replace); 1959c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_block_removename); 1960c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_block_to_sf); 1961c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_block_to_leaf); 1962c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_leaf_addname); 1963c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_leaf_lookup); 1964c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_leaf_replace); 1965c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_leaf_removename); 1966c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_leaf_to_block); 1967c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_leaf_to_node); 1968c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_node_addname); 1969c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_node_lookup); 1970c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_node_replace); 1971c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_node_removename); 1972c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_node_to_leaf); 1973c59d87c4SChristoph Hellwig 1974ee73259bSDave Chinner DECLARE_EVENT_CLASS(xfs_attr_class, 1975ee73259bSDave Chinner TP_PROTO(struct xfs_da_args *args), 1976ee73259bSDave Chinner TP_ARGS(args), 1977ee73259bSDave Chinner TP_STRUCT__entry( 1978ee73259bSDave Chinner __field(dev_t, dev) 1979ee73259bSDave Chinner __field(xfs_ino_t, ino) 1980ee73259bSDave Chinner __dynamic_array(char, name, args->namelen) 1981ee73259bSDave Chinner __field(int, namelen) 1982ee73259bSDave Chinner __field(int, valuelen) 1983ee73259bSDave Chinner __field(xfs_dahash_t, hashval) 1984d5f0f49aSChristoph Hellwig __field(unsigned int, attr_filter) 1985d5f0f49aSChristoph Hellwig __field(unsigned int, attr_flags) 19863402d931SDave Chinner __field(uint32_t, op_flags) 1987ee73259bSDave Chinner ), 1988ee73259bSDave Chinner TP_fast_assign( 1989ee73259bSDave Chinner __entry->dev = VFS_I(args->dp)->i_sb->s_dev; 1990ee73259bSDave Chinner __entry->ino = args->dp->i_ino; 1991ee73259bSDave Chinner if (args->namelen) 1992ee73259bSDave Chinner memcpy(__get_str(name), args->name, args->namelen); 1993ee73259bSDave Chinner __entry->namelen = args->namelen; 1994ee73259bSDave Chinner __entry->valuelen = args->valuelen; 1995ee73259bSDave Chinner __entry->hashval = args->hashval; 1996d5f0f49aSChristoph Hellwig __entry->attr_filter = args->attr_filter; 1997d5f0f49aSChristoph Hellwig __entry->attr_flags = args->attr_flags; 1998ee73259bSDave Chinner __entry->op_flags = args->op_flags; 1999ee73259bSDave Chinner ), 2000ee73259bSDave Chinner TP_printk("dev %d:%d ino 0x%llx name %.*s namelen %d valuelen %d " 2001d5f0f49aSChristoph Hellwig "hashval 0x%x filter %s flags %s op_flags %s", 2002ee73259bSDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 2003ee73259bSDave Chinner __entry->ino, 2004ee73259bSDave Chinner __entry->namelen, 2005ee73259bSDave Chinner __entry->namelen ? __get_str(name) : NULL, 2006ee73259bSDave Chinner __entry->namelen, 2007ee73259bSDave Chinner __entry->valuelen, 2008ee73259bSDave Chinner __entry->hashval, 2009d5f0f49aSChristoph Hellwig __print_flags(__entry->attr_filter, "|", 2010d5f0f49aSChristoph Hellwig XFS_ATTR_FILTER_FLAGS), 2011d5f0f49aSChristoph Hellwig __print_flags(__entry->attr_flags, "|", 2012d5f0f49aSChristoph Hellwig { XATTR_CREATE, "CREATE" }, 2013d5f0f49aSChristoph Hellwig { XATTR_REPLACE, "REPLACE" }), 2014ee73259bSDave Chinner __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS)) 2015ee73259bSDave Chinner ) 2016ee73259bSDave Chinner 20175a5881cdSDave Chinner #define DEFINE_ATTR_EVENT(name) \ 2018ee73259bSDave Chinner DEFINE_EVENT(xfs_attr_class, name, \ 20195a5881cdSDave Chinner TP_PROTO(struct xfs_da_args *args), \ 20205a5881cdSDave Chinner TP_ARGS(args)) 20215a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_sf_add); 20225a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_sf_addname); 20235a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_sf_create); 20245a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_sf_lookup); 20255a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_sf_remove); 20265a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_sf_to_leaf); 20275a5881cdSDave Chinner 20285a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_add); 20295a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_add_old); 20305a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_add_new); 2031ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_add_work); 20325a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_create); 2033ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_compact); 2034ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_get); 20355a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_lookup); 20365a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_replace); 2037ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_remove); 20385a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_removename); 20395a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_split); 20405a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_split_before); 20415a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_split_after); 20425a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_clearflag); 20435a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_setflag); 20445a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_flipflags); 20455a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_to_sf); 20465a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_to_node); 20475a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_rebalance); 20485a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_unbalance); 2049ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_toosmall); 20505a5881cdSDave Chinner 20515a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_node_addname); 2052ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_node_get); 20535a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_node_replace); 20545a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_node_removename); 20555a5881cdSDave Chinner 2056ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_fillstate); 2057ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_refillstate); 2058ee73259bSDave Chinner 2059ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_rmtval_get); 2060ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_rmtval_set); 2061ee73259bSDave Chinner 20625a5881cdSDave Chinner #define DEFINE_DA_EVENT(name) \ 20635a5881cdSDave Chinner DEFINE_EVENT(xfs_da_class, name, \ 20645a5881cdSDave Chinner TP_PROTO(struct xfs_da_args *args), \ 20655a5881cdSDave Chinner TP_ARGS(args)) 20665a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_split); 20675a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_join); 20685a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_link_before); 20695a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_link_after); 20705a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_unlink_back); 20715a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_unlink_forward); 20725a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_root_split); 20735a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_root_join); 20745a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_node_add); 20755a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_node_create); 20765a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_node_split); 20775a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_node_remove); 20785a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_node_rebalance); 20795a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_node_unbalance); 2080ee73259bSDave Chinner DEFINE_DA_EVENT(xfs_da_node_toosmall); 20815a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_swap_lastblock); 20825a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_grow_inode); 20835a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_shrink_inode); 2084ee73259bSDave Chinner DEFINE_DA_EVENT(xfs_da_fixhashpath); 2085ee73259bSDave Chinner DEFINE_DA_EVENT(xfs_da_path_shift); 20865a5881cdSDave Chinner 2087c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_dir2_space_class, 2088c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_da_args *args, int idx), 2089c59d87c4SChristoph Hellwig TP_ARGS(args, idx), 2090c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2091c59d87c4SChristoph Hellwig __field(dev_t, dev) 2092c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 20933402d931SDave Chinner __field(uint32_t, op_flags) 2094c59d87c4SChristoph Hellwig __field(int, idx) 2095c59d87c4SChristoph Hellwig ), 2096c59d87c4SChristoph Hellwig TP_fast_assign( 2097c59d87c4SChristoph Hellwig __entry->dev = VFS_I(args->dp)->i_sb->s_dev; 2098c59d87c4SChristoph Hellwig __entry->ino = args->dp->i_ino; 2099c59d87c4SChristoph Hellwig __entry->op_flags = args->op_flags; 2100c59d87c4SChristoph Hellwig __entry->idx = idx; 2101c59d87c4SChristoph Hellwig ), 2102c59d87c4SChristoph Hellwig TP_printk("dev %d:%d ino 0x%llx op_flags %s index %d", 2103c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2104c59d87c4SChristoph Hellwig __entry->ino, 2105c59d87c4SChristoph Hellwig __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS), 2106c59d87c4SChristoph Hellwig __entry->idx) 2107c59d87c4SChristoph Hellwig ) 2108c59d87c4SChristoph Hellwig 2109c59d87c4SChristoph Hellwig #define DEFINE_DIR2_SPACE_EVENT(name) \ 2110c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_dir2_space_class, name, \ 2111c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_da_args *args, int idx), \ 2112c59d87c4SChristoph Hellwig TP_ARGS(args, idx)) 2113c59d87c4SChristoph Hellwig DEFINE_DIR2_SPACE_EVENT(xfs_dir2_leafn_add); 2114c59d87c4SChristoph Hellwig DEFINE_DIR2_SPACE_EVENT(xfs_dir2_leafn_remove); 2115c59d87c4SChristoph Hellwig DEFINE_DIR2_SPACE_EVENT(xfs_dir2_grow_inode); 2116c59d87c4SChristoph Hellwig DEFINE_DIR2_SPACE_EVENT(xfs_dir2_shrink_inode); 2117c59d87c4SChristoph Hellwig 2118c59d87c4SChristoph Hellwig TRACE_EVENT(xfs_dir2_leafn_moveents, 2119c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_da_args *args, int src_idx, int dst_idx, int count), 2120c59d87c4SChristoph Hellwig TP_ARGS(args, src_idx, dst_idx, count), 2121c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2122c59d87c4SChristoph Hellwig __field(dev_t, dev) 2123c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 21243402d931SDave Chinner __field(uint32_t, op_flags) 2125c59d87c4SChristoph Hellwig __field(int, src_idx) 2126c59d87c4SChristoph Hellwig __field(int, dst_idx) 2127c59d87c4SChristoph Hellwig __field(int, count) 2128c59d87c4SChristoph Hellwig ), 2129c59d87c4SChristoph Hellwig TP_fast_assign( 2130c59d87c4SChristoph Hellwig __entry->dev = VFS_I(args->dp)->i_sb->s_dev; 2131c59d87c4SChristoph Hellwig __entry->ino = args->dp->i_ino; 2132c59d87c4SChristoph Hellwig __entry->op_flags = args->op_flags; 2133c59d87c4SChristoph Hellwig __entry->src_idx = src_idx; 2134c59d87c4SChristoph Hellwig __entry->dst_idx = dst_idx; 2135c59d87c4SChristoph Hellwig __entry->count = count; 2136c59d87c4SChristoph Hellwig ), 2137c59d87c4SChristoph Hellwig TP_printk("dev %d:%d ino 0x%llx op_flags %s " 2138c59d87c4SChristoph Hellwig "src_idx %d dst_idx %d count %d", 2139c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2140c59d87c4SChristoph Hellwig __entry->ino, 2141c59d87c4SChristoph Hellwig __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS), 2142c59d87c4SChristoph Hellwig __entry->src_idx, 2143c59d87c4SChristoph Hellwig __entry->dst_idx, 2144c59d87c4SChristoph Hellwig __entry->count) 2145c59d87c4SChristoph Hellwig ); 2146c59d87c4SChristoph Hellwig 2147c59d87c4SChristoph Hellwig #define XFS_SWAPEXT_INODES \ 2148c59d87c4SChristoph Hellwig { 0, "target" }, \ 2149c59d87c4SChristoph Hellwig { 1, "temp" } 2150c59d87c4SChristoph Hellwig 21510357d21aSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_DINODE_FMT_DEV); 21520357d21aSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_DINODE_FMT_LOCAL); 21530357d21aSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_DINODE_FMT_EXTENTS); 21540357d21aSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_DINODE_FMT_BTREE); 21550357d21aSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_DINODE_FMT_UUID); 2156c59d87c4SChristoph Hellwig 2157c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_swap_extent_class, 2158c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, int which), 2159c59d87c4SChristoph Hellwig TP_ARGS(ip, which), 2160c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2161c59d87c4SChristoph Hellwig __field(dev_t, dev) 2162c59d87c4SChristoph Hellwig __field(int, which) 2163c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 2164c59d87c4SChristoph Hellwig __field(int, format) 2165bb1d5049SChandan Babu R __field(xfs_extnum_t, nex) 2166c59d87c4SChristoph Hellwig __field(int, broot_size) 2167c59d87c4SChristoph Hellwig __field(int, fork_off) 2168c59d87c4SChristoph Hellwig ), 2169c59d87c4SChristoph Hellwig TP_fast_assign( 2170c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 2171c59d87c4SChristoph Hellwig __entry->which = which; 2172c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 2173f7e67b20SChristoph Hellwig __entry->format = ip->i_df.if_format; 2174daf83964SChristoph Hellwig __entry->nex = ip->i_df.if_nextents; 2175c59d87c4SChristoph Hellwig __entry->broot_size = ip->i_df.if_broot_bytes; 2176c01147d9SDarrick J. Wong __entry->fork_off = xfs_inode_fork_boff(ip); 2177c59d87c4SChristoph Hellwig ), 2178755c38ffSChandan Babu R TP_printk("dev %d:%d ino 0x%llx (%s), %s format, num_extents %llu, " 217949e68c91SDarrick J. Wong "broot size %d, forkoff 0x%x", 2180c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2181c59d87c4SChristoph Hellwig __entry->ino, 2182c59d87c4SChristoph Hellwig __print_symbolic(__entry->which, XFS_SWAPEXT_INODES), 2183c59d87c4SChristoph Hellwig __print_symbolic(__entry->format, XFS_INODE_FORMAT_STR), 2184c59d87c4SChristoph Hellwig __entry->nex, 2185c59d87c4SChristoph Hellwig __entry->broot_size, 2186c59d87c4SChristoph Hellwig __entry->fork_off) 2187c59d87c4SChristoph Hellwig ) 2188c59d87c4SChristoph Hellwig 2189c59d87c4SChristoph Hellwig #define DEFINE_SWAPEXT_EVENT(name) \ 2190c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_swap_extent_class, name, \ 2191c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, int which), \ 2192c59d87c4SChristoph Hellwig TP_ARGS(ip, which)) 2193c59d87c4SChristoph Hellwig 2194c59d87c4SChristoph Hellwig DEFINE_SWAPEXT_EVENT(xfs_swap_extent_before); 2195c59d87c4SChristoph Hellwig DEFINE_SWAPEXT_EVENT(xfs_swap_extent_after); 2196c59d87c4SChristoph Hellwig 2197e67d3d42SBrian Foster TRACE_EVENT(xfs_log_recover, 2198e67d3d42SBrian Foster TP_PROTO(struct xlog *log, xfs_daddr_t headblk, xfs_daddr_t tailblk), 2199e67d3d42SBrian Foster TP_ARGS(log, headblk, tailblk), 2200e67d3d42SBrian Foster TP_STRUCT__entry( 2201e67d3d42SBrian Foster __field(dev_t, dev) 2202e67d3d42SBrian Foster __field(xfs_daddr_t, headblk) 2203e67d3d42SBrian Foster __field(xfs_daddr_t, tailblk) 2204e67d3d42SBrian Foster ), 2205e67d3d42SBrian Foster TP_fast_assign( 2206e67d3d42SBrian Foster __entry->dev = log->l_mp->m_super->s_dev; 2207e67d3d42SBrian Foster __entry->headblk = headblk; 2208e67d3d42SBrian Foster __entry->tailblk = tailblk; 2209e67d3d42SBrian Foster ), 2210e67d3d42SBrian Foster TP_printk("dev %d:%d headblk 0x%llx tailblk 0x%llx", 2211e67d3d42SBrian Foster MAJOR(__entry->dev), MINOR(__entry->dev), __entry->headblk, 2212e67d3d42SBrian Foster __entry->tailblk) 2213e67d3d42SBrian Foster ) 2214e67d3d42SBrian Foster 22155cd9cee9SBrian Foster TRACE_EVENT(xfs_log_recover_record, 22165cd9cee9SBrian Foster TP_PROTO(struct xlog *log, struct xlog_rec_header *rhead, int pass), 22175cd9cee9SBrian Foster TP_ARGS(log, rhead, pass), 22185cd9cee9SBrian Foster TP_STRUCT__entry( 22195cd9cee9SBrian Foster __field(dev_t, dev) 22205cd9cee9SBrian Foster __field(xfs_lsn_t, lsn) 22215cd9cee9SBrian Foster __field(int, len) 22225cd9cee9SBrian Foster __field(int, num_logops) 22235cd9cee9SBrian Foster __field(int, pass) 22245cd9cee9SBrian Foster ), 22255cd9cee9SBrian Foster TP_fast_assign( 22265cd9cee9SBrian Foster __entry->dev = log->l_mp->m_super->s_dev; 22275cd9cee9SBrian Foster __entry->lsn = be64_to_cpu(rhead->h_lsn); 22285cd9cee9SBrian Foster __entry->len = be32_to_cpu(rhead->h_len); 22295cd9cee9SBrian Foster __entry->num_logops = be32_to_cpu(rhead->h_num_logops); 22305cd9cee9SBrian Foster __entry->pass = pass; 22315cd9cee9SBrian Foster ), 22325cd9cee9SBrian Foster TP_printk("dev %d:%d lsn 0x%llx len 0x%x num_logops 0x%x pass %d", 22335cd9cee9SBrian Foster MAJOR(__entry->dev), MINOR(__entry->dev), 22345cd9cee9SBrian Foster __entry->lsn, __entry->len, __entry->num_logops, 22355cd9cee9SBrian Foster __entry->pass) 22365cd9cee9SBrian Foster ) 22375cd9cee9SBrian Foster 2238c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_log_recover_item_class, 2239ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xlog_recover *trans, 2240c59d87c4SChristoph Hellwig struct xlog_recover_item *item, int pass), 2241c59d87c4SChristoph Hellwig TP_ARGS(log, trans, item, pass), 2242c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2243c59d87c4SChristoph Hellwig __field(dev_t, dev) 2244c59d87c4SChristoph Hellwig __field(unsigned long, item) 2245c59d87c4SChristoph Hellwig __field(xlog_tid_t, tid) 22465cd9cee9SBrian Foster __field(xfs_lsn_t, lsn) 2247c59d87c4SChristoph Hellwig __field(int, type) 2248c59d87c4SChristoph Hellwig __field(int, pass) 2249c59d87c4SChristoph Hellwig __field(int, count) 2250c59d87c4SChristoph Hellwig __field(int, total) 2251c59d87c4SChristoph Hellwig ), 2252c59d87c4SChristoph Hellwig TP_fast_assign( 2253c59d87c4SChristoph Hellwig __entry->dev = log->l_mp->m_super->s_dev; 2254c59d87c4SChristoph Hellwig __entry->item = (unsigned long)item; 2255c59d87c4SChristoph Hellwig __entry->tid = trans->r_log_tid; 22565cd9cee9SBrian Foster __entry->lsn = trans->r_lsn; 2257c59d87c4SChristoph Hellwig __entry->type = ITEM_TYPE(item); 2258c59d87c4SChristoph Hellwig __entry->pass = pass; 2259c59d87c4SChristoph Hellwig __entry->count = item->ri_cnt; 2260c59d87c4SChristoph Hellwig __entry->total = item->ri_total; 2261c59d87c4SChristoph Hellwig ), 22623d170aa2SDarrick J. Wong TP_printk("dev %d:%d tid 0x%x lsn 0x%llx, pass %d, item %p, " 22635cd9cee9SBrian Foster "item type %s item region count/total %d/%d", 2264c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2265c59d87c4SChristoph Hellwig __entry->tid, 22665cd9cee9SBrian Foster __entry->lsn, 2267c59d87c4SChristoph Hellwig __entry->pass, 2268c59d87c4SChristoph Hellwig (void *)__entry->item, 2269c59d87c4SChristoph Hellwig __print_symbolic(__entry->type, XFS_LI_TYPE_DESC), 2270c59d87c4SChristoph Hellwig __entry->count, 2271c59d87c4SChristoph Hellwig __entry->total) 2272c59d87c4SChristoph Hellwig ) 2273c59d87c4SChristoph Hellwig 2274c59d87c4SChristoph Hellwig #define DEFINE_LOG_RECOVER_ITEM(name) \ 2275c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_log_recover_item_class, name, \ 2276ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xlog_recover *trans, \ 2277c59d87c4SChristoph Hellwig struct xlog_recover_item *item, int pass), \ 2278c59d87c4SChristoph Hellwig TP_ARGS(log, trans, item, pass)) 2279c59d87c4SChristoph Hellwig 2280c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_add); 2281c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_add_cont); 2282c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_reorder_head); 2283c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_reorder_tail); 2284c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_recover); 2285c59d87c4SChristoph Hellwig 2286c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_log_recover_buf_item_class, 2287ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xfs_buf_log_format *buf_f), 2288c59d87c4SChristoph Hellwig TP_ARGS(log, buf_f), 2289c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2290c59d87c4SChristoph Hellwig __field(dev_t, dev) 2291c8ce540dSDarrick J. Wong __field(int64_t, blkno) 2292c59d87c4SChristoph Hellwig __field(unsigned short, len) 2293c59d87c4SChristoph Hellwig __field(unsigned short, flags) 2294c59d87c4SChristoph Hellwig __field(unsigned short, size) 2295c59d87c4SChristoph Hellwig __field(unsigned int, map_size) 2296c59d87c4SChristoph Hellwig ), 2297c59d87c4SChristoph Hellwig TP_fast_assign( 2298c59d87c4SChristoph Hellwig __entry->dev = log->l_mp->m_super->s_dev; 2299c59d87c4SChristoph Hellwig __entry->blkno = buf_f->blf_blkno; 2300c59d87c4SChristoph Hellwig __entry->len = buf_f->blf_len; 2301c59d87c4SChristoph Hellwig __entry->flags = buf_f->blf_flags; 2302c59d87c4SChristoph Hellwig __entry->size = buf_f->blf_size; 2303c59d87c4SChristoph Hellwig __entry->map_size = buf_f->blf_map_size; 2304c59d87c4SChristoph Hellwig ), 23057989acccSDarrick J. Wong TP_printk("dev %d:%d daddr 0x%llx, bbcount 0x%x, flags 0x%x, size %d, " 2306c59d87c4SChristoph Hellwig "map_size %d", 2307c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2308c59d87c4SChristoph Hellwig __entry->blkno, 2309c59d87c4SChristoph Hellwig __entry->len, 2310c59d87c4SChristoph Hellwig __entry->flags, 2311c59d87c4SChristoph Hellwig __entry->size, 2312c59d87c4SChristoph Hellwig __entry->map_size) 2313c59d87c4SChristoph Hellwig ) 2314c59d87c4SChristoph Hellwig 2315c59d87c4SChristoph Hellwig #define DEFINE_LOG_RECOVER_BUF_ITEM(name) \ 2316c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_log_recover_buf_item_class, name, \ 2317ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xfs_buf_log_format *buf_f), \ 2318c59d87c4SChristoph Hellwig TP_ARGS(log, buf_f)) 2319c59d87c4SChristoph Hellwig 2320c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_not_cancel); 2321c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_cancel); 2322c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_cancel_add); 2323c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_cancel_ref_inc); 2324c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_recover); 23255cd9cee9SBrian Foster DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_skip); 2326c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_inode_buf); 2327c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_reg_buf); 2328c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_dquot_buf); 2329c59d87c4SChristoph Hellwig 2330c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_log_recover_ino_item_class, 2331ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xfs_inode_log_format *in_f), 2332c59d87c4SChristoph Hellwig TP_ARGS(log, in_f), 2333c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2334c59d87c4SChristoph Hellwig __field(dev_t, dev) 2335c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 2336c59d87c4SChristoph Hellwig __field(unsigned short, size) 2337c59d87c4SChristoph Hellwig __field(int, fields) 2338c59d87c4SChristoph Hellwig __field(unsigned short, asize) 2339c59d87c4SChristoph Hellwig __field(unsigned short, dsize) 2340c8ce540dSDarrick J. Wong __field(int64_t, blkno) 2341c59d87c4SChristoph Hellwig __field(int, len) 2342c59d87c4SChristoph Hellwig __field(int, boffset) 2343c59d87c4SChristoph Hellwig ), 2344c59d87c4SChristoph Hellwig TP_fast_assign( 2345c59d87c4SChristoph Hellwig __entry->dev = log->l_mp->m_super->s_dev; 2346c59d87c4SChristoph Hellwig __entry->ino = in_f->ilf_ino; 2347c59d87c4SChristoph Hellwig __entry->size = in_f->ilf_size; 2348c59d87c4SChristoph Hellwig __entry->fields = in_f->ilf_fields; 2349c59d87c4SChristoph Hellwig __entry->asize = in_f->ilf_asize; 2350c59d87c4SChristoph Hellwig __entry->dsize = in_f->ilf_dsize; 2351c59d87c4SChristoph Hellwig __entry->blkno = in_f->ilf_blkno; 2352c59d87c4SChristoph Hellwig __entry->len = in_f->ilf_len; 2353c59d87c4SChristoph Hellwig __entry->boffset = in_f->ilf_boffset; 2354c59d87c4SChristoph Hellwig ), 2355c59d87c4SChristoph Hellwig TP_printk("dev %d:%d ino 0x%llx, size %u, fields 0x%x, asize %d, " 23567989acccSDarrick J. Wong "dsize %d, daddr 0x%llx, bbcount 0x%x, boffset %d", 2357c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2358c59d87c4SChristoph Hellwig __entry->ino, 2359c59d87c4SChristoph Hellwig __entry->size, 2360c59d87c4SChristoph Hellwig __entry->fields, 2361c59d87c4SChristoph Hellwig __entry->asize, 2362c59d87c4SChristoph Hellwig __entry->dsize, 2363c59d87c4SChristoph Hellwig __entry->blkno, 2364c59d87c4SChristoph Hellwig __entry->len, 2365c59d87c4SChristoph Hellwig __entry->boffset) 2366c59d87c4SChristoph Hellwig ) 2367c59d87c4SChristoph Hellwig #define DEFINE_LOG_RECOVER_INO_ITEM(name) \ 2368c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_log_recover_ino_item_class, name, \ 2369ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xfs_inode_log_format *in_f), \ 2370c59d87c4SChristoph Hellwig TP_ARGS(log, in_f)) 2371c59d87c4SChristoph Hellwig 2372c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_INO_ITEM(xfs_log_recover_inode_recover); 2373c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_INO_ITEM(xfs_log_recover_inode_cancel); 2374c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_INO_ITEM(xfs_log_recover_inode_skip); 2375c59d87c4SChristoph Hellwig 237678d57e45SBrian Foster DECLARE_EVENT_CLASS(xfs_log_recover_icreate_item_class, 237778d57e45SBrian Foster TP_PROTO(struct xlog *log, struct xfs_icreate_log *in_f), 237878d57e45SBrian Foster TP_ARGS(log, in_f), 237978d57e45SBrian Foster TP_STRUCT__entry( 238078d57e45SBrian Foster __field(dev_t, dev) 238178d57e45SBrian Foster __field(xfs_agnumber_t, agno) 238278d57e45SBrian Foster __field(xfs_agblock_t, agbno) 238378d57e45SBrian Foster __field(unsigned int, count) 238478d57e45SBrian Foster __field(unsigned int, isize) 238578d57e45SBrian Foster __field(xfs_agblock_t, length) 238678d57e45SBrian Foster __field(unsigned int, gen) 238778d57e45SBrian Foster ), 238878d57e45SBrian Foster TP_fast_assign( 238978d57e45SBrian Foster __entry->dev = log->l_mp->m_super->s_dev; 239078d57e45SBrian Foster __entry->agno = be32_to_cpu(in_f->icl_ag); 239178d57e45SBrian Foster __entry->agbno = be32_to_cpu(in_f->icl_agbno); 239278d57e45SBrian Foster __entry->count = be32_to_cpu(in_f->icl_count); 239378d57e45SBrian Foster __entry->isize = be32_to_cpu(in_f->icl_isize); 239478d57e45SBrian Foster __entry->length = be32_to_cpu(in_f->icl_length); 239578d57e45SBrian Foster __entry->gen = be32_to_cpu(in_f->icl_gen); 239678d57e45SBrian Foster ), 2397b641851cSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x ireccount %u isize %u gen 0x%x", 23987989acccSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 23997989acccSDarrick J. Wong __entry->agno, 24007989acccSDarrick J. Wong __entry->agbno, 24017989acccSDarrick J. Wong __entry->length, 24027989acccSDarrick J. Wong __entry->count, 24037989acccSDarrick J. Wong __entry->isize, 24047989acccSDarrick J. Wong __entry->gen) 240578d57e45SBrian Foster ) 240678d57e45SBrian Foster #define DEFINE_LOG_RECOVER_ICREATE_ITEM(name) \ 240778d57e45SBrian Foster DEFINE_EVENT(xfs_log_recover_icreate_item_class, name, \ 240878d57e45SBrian Foster TP_PROTO(struct xlog *log, struct xfs_icreate_log *in_f), \ 240978d57e45SBrian Foster TP_ARGS(log, in_f)) 241078d57e45SBrian Foster 241178d57e45SBrian Foster DEFINE_LOG_RECOVER_ICREATE_ITEM(xfs_log_recover_icreate_cancel); 241278d57e45SBrian Foster DEFINE_LOG_RECOVER_ICREATE_ITEM(xfs_log_recover_icreate_recover); 241378d57e45SBrian Foster 2414c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_discard_class, 2415c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 2416c59d87c4SChristoph Hellwig xfs_agblock_t agbno, xfs_extlen_t len), 2417c59d87c4SChristoph Hellwig TP_ARGS(mp, agno, agbno, len), 2418c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2419c59d87c4SChristoph Hellwig __field(dev_t, dev) 2420c59d87c4SChristoph Hellwig __field(xfs_agnumber_t, agno) 2421c59d87c4SChristoph Hellwig __field(xfs_agblock_t, agbno) 2422c59d87c4SChristoph Hellwig __field(xfs_extlen_t, len) 2423c59d87c4SChristoph Hellwig ), 2424c59d87c4SChristoph Hellwig TP_fast_assign( 2425c59d87c4SChristoph Hellwig __entry->dev = mp->m_super->s_dev; 2426c59d87c4SChristoph Hellwig __entry->agno = agno; 2427c59d87c4SChristoph Hellwig __entry->agbno = agbno; 2428c59d87c4SChristoph Hellwig __entry->len = len; 2429c59d87c4SChristoph Hellwig ), 24307989acccSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x", 2431c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2432c59d87c4SChristoph Hellwig __entry->agno, 2433c59d87c4SChristoph Hellwig __entry->agbno, 2434c59d87c4SChristoph Hellwig __entry->len) 2435c59d87c4SChristoph Hellwig ) 2436c59d87c4SChristoph Hellwig 2437c59d87c4SChristoph Hellwig #define DEFINE_DISCARD_EVENT(name) \ 2438c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_discard_class, name, \ 2439c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 2440c59d87c4SChristoph Hellwig xfs_agblock_t agbno, xfs_extlen_t len), \ 2441c59d87c4SChristoph Hellwig TP_ARGS(mp, agno, agbno, len)) 2442c59d87c4SChristoph Hellwig DEFINE_DISCARD_EVENT(xfs_discard_extent); 2443c59d87c4SChristoph Hellwig DEFINE_DISCARD_EVENT(xfs_discard_toosmall); 2444c59d87c4SChristoph Hellwig DEFINE_DISCARD_EVENT(xfs_discard_exclude); 2445c59d87c4SChristoph Hellwig DEFINE_DISCARD_EVENT(xfs_discard_busy); 2446c59d87c4SChristoph Hellwig 24472c813ad6SDarrick J. Wong /* btree cursor events */ 2448c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_BNOi); 2449c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_CNTi); 2450c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_BMAPi); 2451c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_INOi); 2452c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_FINOi); 2453c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_RMAPi); 2454c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_REFCi); 2455c494213fSDarrick J. Wong 24562c813ad6SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_btree_cur_class, 24572c813ad6SDarrick J. Wong TP_PROTO(struct xfs_btree_cur *cur, int level, struct xfs_buf *bp), 24582c813ad6SDarrick J. Wong TP_ARGS(cur, level, bp), 24592c813ad6SDarrick J. Wong TP_STRUCT__entry( 24602c813ad6SDarrick J. Wong __field(dev_t, dev) 24612c813ad6SDarrick J. Wong __field(xfs_btnum_t, btnum) 24622c813ad6SDarrick J. Wong __field(int, level) 24632c813ad6SDarrick J. Wong __field(int, nlevels) 24642c813ad6SDarrick J. Wong __field(int, ptr) 24652c813ad6SDarrick J. Wong __field(xfs_daddr_t, daddr) 24662c813ad6SDarrick J. Wong ), 24672c813ad6SDarrick J. Wong TP_fast_assign( 24682c813ad6SDarrick J. Wong __entry->dev = cur->bc_mp->m_super->s_dev; 24692c813ad6SDarrick J. Wong __entry->btnum = cur->bc_btnum; 24702c813ad6SDarrick J. Wong __entry->level = level; 24712c813ad6SDarrick J. Wong __entry->nlevels = cur->bc_nlevels; 24726ca444cfSDarrick J. Wong __entry->ptr = cur->bc_levels[level].ptr; 24739343ee76SDave Chinner __entry->daddr = bp ? xfs_buf_daddr(bp) : -1; 24742c813ad6SDarrick J. Wong ), 2475c494213fSDarrick J. Wong TP_printk("dev %d:%d btree %s level %d/%d ptr %d daddr 0x%llx", 24762c813ad6SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2477c494213fSDarrick J. Wong __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 24782c813ad6SDarrick J. Wong __entry->level, 24792c813ad6SDarrick J. Wong __entry->nlevels, 24802c813ad6SDarrick J. Wong __entry->ptr, 24812c813ad6SDarrick J. Wong (unsigned long long)__entry->daddr) 24822c813ad6SDarrick J. Wong ) 24832c813ad6SDarrick J. Wong 24842c813ad6SDarrick J. Wong #define DEFINE_BTREE_CUR_EVENT(name) \ 24852c813ad6SDarrick J. Wong DEFINE_EVENT(xfs_btree_cur_class, name, \ 24862c813ad6SDarrick J. Wong TP_PROTO(struct xfs_btree_cur *cur, int level, struct xfs_buf *bp), \ 24872c813ad6SDarrick J. Wong TP_ARGS(cur, level, bp)) 24882c813ad6SDarrick J. Wong DEFINE_BTREE_CUR_EVENT(xfs_btree_updkeys); 2489105f7d83SDarrick J. Wong DEFINE_BTREE_CUR_EVENT(xfs_btree_overlapped_query_range); 24902c813ad6SDarrick J. Wong 24913cd48abcSDarrick J. Wong /* deferred ops */ 24923cd48abcSDarrick J. Wong struct xfs_defer_pending; 24933cd48abcSDarrick J. Wong 24943cd48abcSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_defer_class, 24959d9e6233SBrian Foster TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip), 24969d9e6233SBrian Foster TP_ARGS(tp, caller_ip), 24973cd48abcSDarrick J. Wong TP_STRUCT__entry( 24983cd48abcSDarrick J. Wong __field(dev_t, dev) 24999d9e6233SBrian Foster __field(struct xfs_trans *, tp) 25003f88a15aSChristoph Hellwig __field(char, committed) 2501e632a569SDave Chinner __field(unsigned long, caller_ip) 25023cd48abcSDarrick J. Wong ), 25033cd48abcSDarrick J. Wong TP_fast_assign( 25049d9e6233SBrian Foster __entry->dev = tp->t_mountp->m_super->s_dev; 25059d9e6233SBrian Foster __entry->tp = tp; 2506e632a569SDave Chinner __entry->caller_ip = caller_ip; 25073cd48abcSDarrick J. Wong ), 25089d9e6233SBrian Foster TP_printk("dev %d:%d tp %p caller %pS", 25093cd48abcSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 25109d9e6233SBrian Foster __entry->tp, 2511e632a569SDave Chinner (char *)__entry->caller_ip) 25123cd48abcSDarrick J. Wong ) 25133cd48abcSDarrick J. Wong #define DEFINE_DEFER_EVENT(name) \ 25143cd48abcSDarrick J. Wong DEFINE_EVENT(xfs_defer_class, name, \ 25159d9e6233SBrian Foster TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip), \ 25169d9e6233SBrian Foster TP_ARGS(tp, caller_ip)) 25173cd48abcSDarrick J. Wong 25183cd48abcSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_defer_error_class, 25199d9e6233SBrian Foster TP_PROTO(struct xfs_trans *tp, int error), 25209d9e6233SBrian Foster TP_ARGS(tp, error), 25213cd48abcSDarrick J. Wong TP_STRUCT__entry( 25223cd48abcSDarrick J. Wong __field(dev_t, dev) 25239d9e6233SBrian Foster __field(struct xfs_trans *, tp) 25243f88a15aSChristoph Hellwig __field(char, committed) 25253cd48abcSDarrick J. Wong __field(int, error) 25263cd48abcSDarrick J. Wong ), 25273cd48abcSDarrick J. Wong TP_fast_assign( 25289d9e6233SBrian Foster __entry->dev = tp->t_mountp->m_super->s_dev; 25299d9e6233SBrian Foster __entry->tp = tp; 25303cd48abcSDarrick J. Wong __entry->error = error; 25313cd48abcSDarrick J. Wong ), 25329d9e6233SBrian Foster TP_printk("dev %d:%d tp %p err %d", 25333cd48abcSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 25349d9e6233SBrian Foster __entry->tp, 25353cd48abcSDarrick J. Wong __entry->error) 25363cd48abcSDarrick J. Wong ) 25373cd48abcSDarrick J. Wong #define DEFINE_DEFER_ERROR_EVENT(name) \ 25383cd48abcSDarrick J. Wong DEFINE_EVENT(xfs_defer_error_class, name, \ 25399d9e6233SBrian Foster TP_PROTO(struct xfs_trans *tp, int error), \ 25409d9e6233SBrian Foster TP_ARGS(tp, error)) 25413cd48abcSDarrick J. Wong 25423cd48abcSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_defer_pending_class, 25433cd48abcSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_defer_pending *dfp), 25443cd48abcSDarrick J. Wong TP_ARGS(mp, dfp), 25453cd48abcSDarrick J. Wong TP_STRUCT__entry( 25463cd48abcSDarrick J. Wong __field(dev_t, dev) 25473cd48abcSDarrick J. Wong __field(int, type) 25483cd48abcSDarrick J. Wong __field(void *, intent) 25493f88a15aSChristoph Hellwig __field(char, committed) 25503cd48abcSDarrick J. Wong __field(int, nr) 25513cd48abcSDarrick J. Wong ), 25523cd48abcSDarrick J. Wong TP_fast_assign( 25533cd48abcSDarrick J. Wong __entry->dev = mp ? mp->m_super->s_dev : 0; 255402b100fbSDarrick J. Wong __entry->type = dfp->dfp_type; 25553cd48abcSDarrick J. Wong __entry->intent = dfp->dfp_intent; 2556ea78d808SDarrick J. Wong __entry->committed = dfp->dfp_done != NULL; 25573cd48abcSDarrick J. Wong __entry->nr = dfp->dfp_count; 25583cd48abcSDarrick J. Wong ), 255942bf9dbaSHou Tao TP_printk("dev %d:%d optype %d intent %p committed %d nr %d", 25603cd48abcSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 25613cd48abcSDarrick J. Wong __entry->type, 25623cd48abcSDarrick J. Wong __entry->intent, 25633cd48abcSDarrick J. Wong __entry->committed, 25643cd48abcSDarrick J. Wong __entry->nr) 25653cd48abcSDarrick J. Wong ) 25663cd48abcSDarrick J. Wong #define DEFINE_DEFER_PENDING_EVENT(name) \ 25673cd48abcSDarrick J. Wong DEFINE_EVENT(xfs_defer_pending_class, name, \ 25683cd48abcSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_defer_pending *dfp), \ 25693cd48abcSDarrick J. Wong TP_ARGS(mp, dfp)) 25703cd48abcSDarrick J. Wong 25713cd48abcSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_phys_extent_deferred_class, 25723cd48abcSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 25733cd48abcSDarrick J. Wong int type, xfs_agblock_t agbno, xfs_extlen_t len), 25743cd48abcSDarrick J. Wong TP_ARGS(mp, agno, type, agbno, len), 25753cd48abcSDarrick J. Wong TP_STRUCT__entry( 25763cd48abcSDarrick J. Wong __field(dev_t, dev) 25773cd48abcSDarrick J. Wong __field(xfs_agnumber_t, agno) 25783cd48abcSDarrick J. Wong __field(int, type) 25793cd48abcSDarrick J. Wong __field(xfs_agblock_t, agbno) 25803cd48abcSDarrick J. Wong __field(xfs_extlen_t, len) 25813cd48abcSDarrick J. Wong ), 25823cd48abcSDarrick J. Wong TP_fast_assign( 25833cd48abcSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 25843cd48abcSDarrick J. Wong __entry->agno = agno; 25853cd48abcSDarrick J. Wong __entry->type = type; 25863cd48abcSDarrick J. Wong __entry->agbno = agbno; 25873cd48abcSDarrick J. Wong __entry->len = len; 25883cd48abcSDarrick J. Wong ), 25897989acccSDarrick J. Wong TP_printk("dev %d:%d op %d agno 0x%x agbno 0x%x fsbcount 0x%x", 25903cd48abcSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 25913cd48abcSDarrick J. Wong __entry->type, 25923cd48abcSDarrick J. Wong __entry->agno, 25933cd48abcSDarrick J. Wong __entry->agbno, 25943cd48abcSDarrick J. Wong __entry->len) 25953cd48abcSDarrick J. Wong ); 25963cd48abcSDarrick J. Wong #define DEFINE_PHYS_EXTENT_DEFERRED_EVENT(name) \ 25973cd48abcSDarrick J. Wong DEFINE_EVENT(xfs_phys_extent_deferred_class, name, \ 25983cd48abcSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 25993cd48abcSDarrick J. Wong int type, \ 26003cd48abcSDarrick J. Wong xfs_agblock_t bno, \ 26013cd48abcSDarrick J. Wong xfs_extlen_t len), \ 26023cd48abcSDarrick J. Wong TP_ARGS(mp, agno, type, bno, len)) 26033cd48abcSDarrick J. Wong 26043cd48abcSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_map_extent_deferred_class, 26053cd48abcSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 26063cd48abcSDarrick J. Wong int op, 26073cd48abcSDarrick J. Wong xfs_agblock_t agbno, 26083cd48abcSDarrick J. Wong xfs_ino_t ino, 26093cd48abcSDarrick J. Wong int whichfork, 26103cd48abcSDarrick J. Wong xfs_fileoff_t offset, 26113cd48abcSDarrick J. Wong xfs_filblks_t len, 26123cd48abcSDarrick J. Wong xfs_exntst_t state), 26133cd48abcSDarrick J. Wong TP_ARGS(mp, agno, op, agbno, ino, whichfork, offset, len, state), 26143cd48abcSDarrick J. Wong TP_STRUCT__entry( 26153cd48abcSDarrick J. Wong __field(dev_t, dev) 26163cd48abcSDarrick J. Wong __field(xfs_agnumber_t, agno) 26173cd48abcSDarrick J. Wong __field(xfs_ino_t, ino) 26183cd48abcSDarrick J. Wong __field(xfs_agblock_t, agbno) 26193cd48abcSDarrick J. Wong __field(int, whichfork) 26203cd48abcSDarrick J. Wong __field(xfs_fileoff_t, l_loff) 26213cd48abcSDarrick J. Wong __field(xfs_filblks_t, l_len) 26223cd48abcSDarrick J. Wong __field(xfs_exntst_t, l_state) 26233cd48abcSDarrick J. Wong __field(int, op) 26243cd48abcSDarrick J. Wong ), 26253cd48abcSDarrick J. Wong TP_fast_assign( 26263cd48abcSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 26273cd48abcSDarrick J. Wong __entry->agno = agno; 26283cd48abcSDarrick J. Wong __entry->ino = ino; 26293cd48abcSDarrick J. Wong __entry->agbno = agbno; 26303cd48abcSDarrick J. Wong __entry->whichfork = whichfork; 26313cd48abcSDarrick J. Wong __entry->l_loff = offset; 26323cd48abcSDarrick J. Wong __entry->l_len = len; 26333cd48abcSDarrick J. Wong __entry->l_state = state; 26343cd48abcSDarrick J. Wong __entry->op = op; 26353cd48abcSDarrick J. Wong ), 26367989acccSDarrick J. Wong TP_printk("dev %d:%d op %d agno 0x%x agbno 0x%x owner 0x%llx %s fileoff 0x%llx fsbcount 0x%llx state %d", 26373cd48abcSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 26383cd48abcSDarrick J. Wong __entry->op, 26393cd48abcSDarrick J. Wong __entry->agno, 26403cd48abcSDarrick J. Wong __entry->agbno, 26413cd48abcSDarrick J. Wong __entry->ino, 2642f93f85f7SDarrick J. Wong __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS), 26433cd48abcSDarrick J. Wong __entry->l_loff, 26443cd48abcSDarrick J. Wong __entry->l_len, 26453cd48abcSDarrick J. Wong __entry->l_state) 26463cd48abcSDarrick J. Wong ); 26473cd48abcSDarrick J. Wong #define DEFINE_MAP_EXTENT_DEFERRED_EVENT(name) \ 26483cd48abcSDarrick J. Wong DEFINE_EVENT(xfs_map_extent_deferred_class, name, \ 26493cd48abcSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 26503cd48abcSDarrick J. Wong int op, \ 26513cd48abcSDarrick J. Wong xfs_agblock_t agbno, \ 26523cd48abcSDarrick J. Wong xfs_ino_t ino, \ 26533cd48abcSDarrick J. Wong int whichfork, \ 26543cd48abcSDarrick J. Wong xfs_fileoff_t offset, \ 26553cd48abcSDarrick J. Wong xfs_filblks_t len, \ 26563cd48abcSDarrick J. Wong xfs_exntst_t state), \ 26573cd48abcSDarrick J. Wong TP_ARGS(mp, agno, op, agbno, ino, whichfork, offset, len, state)) 26583cd48abcSDarrick J. Wong 26593cd48abcSDarrick J. Wong DEFINE_DEFER_EVENT(xfs_defer_cancel); 26603cd48abcSDarrick J. Wong DEFINE_DEFER_EVENT(xfs_defer_trans_roll); 26613cd48abcSDarrick J. Wong DEFINE_DEFER_EVENT(xfs_defer_trans_abort); 26623cd48abcSDarrick J. Wong DEFINE_DEFER_EVENT(xfs_defer_finish); 26633cd48abcSDarrick J. Wong DEFINE_DEFER_EVENT(xfs_defer_finish_done); 26643cd48abcSDarrick J. Wong 26653cd48abcSDarrick J. Wong DEFINE_DEFER_ERROR_EVENT(xfs_defer_trans_roll_error); 26663cd48abcSDarrick J. Wong DEFINE_DEFER_ERROR_EVENT(xfs_defer_finish_error); 26673cd48abcSDarrick J. Wong 26681ae093cbSBrian Foster DEFINE_DEFER_PENDING_EVENT(xfs_defer_create_intent); 26691ae093cbSBrian Foster DEFINE_DEFER_PENDING_EVENT(xfs_defer_cancel_list); 26703cd48abcSDarrick J. Wong DEFINE_DEFER_PENDING_EVENT(xfs_defer_pending_finish); 26713cd48abcSDarrick J. Wong DEFINE_DEFER_PENDING_EVENT(xfs_defer_pending_abort); 26724e919af7SDarrick J. Wong DEFINE_DEFER_PENDING_EVENT(xfs_defer_relog_intent); 26733cd48abcSDarrick J. Wong 2674ba9e7802SDarrick J. Wong #define DEFINE_BMAP_FREE_DEFERRED_EVENT DEFINE_PHYS_EXTENT_DEFERRED_EVENT 2675ba9e7802SDarrick J. Wong DEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_bmap_free_defer); 2676ba9e7802SDarrick J. Wong DEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_bmap_free_deferred); 2677f8f2835aSBrian Foster DEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_agfl_free_defer); 2678f8f2835aSBrian Foster DEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_agfl_free_deferred); 2679ba9e7802SDarrick J. Wong 2680d5c88131SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_defer_pending_item_class, 2681d5c88131SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_defer_pending *dfp, 2682d5c88131SDarrick J. Wong void *item), 2683d5c88131SDarrick J. Wong TP_ARGS(mp, dfp, item), 2684d5c88131SDarrick J. Wong TP_STRUCT__entry( 2685d5c88131SDarrick J. Wong __field(dev_t, dev) 2686d5c88131SDarrick J. Wong __field(int, type) 2687d5c88131SDarrick J. Wong __field(void *, intent) 2688d5c88131SDarrick J. Wong __field(void *, item) 2689d5c88131SDarrick J. Wong __field(char, committed) 2690d5c88131SDarrick J. Wong __field(int, nr) 2691d5c88131SDarrick J. Wong ), 2692d5c88131SDarrick J. Wong TP_fast_assign( 2693d5c88131SDarrick J. Wong __entry->dev = mp ? mp->m_super->s_dev : 0; 2694d5c88131SDarrick J. Wong __entry->type = dfp->dfp_type; 2695d5c88131SDarrick J. Wong __entry->intent = dfp->dfp_intent; 2696d5c88131SDarrick J. Wong __entry->item = item; 2697d5c88131SDarrick J. Wong __entry->committed = dfp->dfp_done != NULL; 2698d5c88131SDarrick J. Wong __entry->nr = dfp->dfp_count; 2699d5c88131SDarrick J. Wong ), 2700d5c88131SDarrick J. Wong TP_printk("dev %d:%d optype %d intent %p item %p committed %d nr %d", 2701d5c88131SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2702d5c88131SDarrick J. Wong __entry->type, 2703d5c88131SDarrick J. Wong __entry->intent, 2704d5c88131SDarrick J. Wong __entry->item, 2705d5c88131SDarrick J. Wong __entry->committed, 2706d5c88131SDarrick J. Wong __entry->nr) 2707d5c88131SDarrick J. Wong ) 2708d5c88131SDarrick J. Wong #define DEFINE_DEFER_PENDING_ITEM_EVENT(name) \ 2709d5c88131SDarrick J. Wong DEFINE_EVENT(xfs_defer_pending_item_class, name, \ 2710d5c88131SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_defer_pending *dfp, \ 2711d5c88131SDarrick J. Wong void *item), \ 2712d5c88131SDarrick J. Wong TP_ARGS(mp, dfp, item)) 2713d5c88131SDarrick J. Wong 2714d5c88131SDarrick J. Wong DEFINE_DEFER_PENDING_ITEM_EVENT(xfs_defer_add_item); 2715d5c88131SDarrick J. Wong DEFINE_DEFER_PENDING_ITEM_EVENT(xfs_defer_cancel_item); 2716d5c88131SDarrick J. Wong DEFINE_DEFER_PENDING_ITEM_EVENT(xfs_defer_finish_item); 2717d5c88131SDarrick J. Wong 2718673930c3SDarrick J. Wong /* rmap tracepoints */ 2719673930c3SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_rmap_class, 2720673930c3SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 2721673930c3SDarrick J. Wong xfs_agblock_t agbno, xfs_extlen_t len, bool unwritten, 272266e3237eSDarrick J. Wong const struct xfs_owner_info *oinfo), 2723673930c3SDarrick J. Wong TP_ARGS(mp, agno, agbno, len, unwritten, oinfo), 2724673930c3SDarrick J. Wong TP_STRUCT__entry( 2725673930c3SDarrick J. Wong __field(dev_t, dev) 2726673930c3SDarrick J. Wong __field(xfs_agnumber_t, agno) 2727673930c3SDarrick J. Wong __field(xfs_agblock_t, agbno) 2728673930c3SDarrick J. Wong __field(xfs_extlen_t, len) 2729673930c3SDarrick J. Wong __field(uint64_t, owner) 2730673930c3SDarrick J. Wong __field(uint64_t, offset) 2731673930c3SDarrick J. Wong __field(unsigned long, flags) 2732673930c3SDarrick J. Wong ), 2733673930c3SDarrick J. Wong TP_fast_assign( 2734673930c3SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 2735673930c3SDarrick J. Wong __entry->agno = agno; 2736673930c3SDarrick J. Wong __entry->agbno = agbno; 2737673930c3SDarrick J. Wong __entry->len = len; 2738673930c3SDarrick J. Wong __entry->owner = oinfo->oi_owner; 2739673930c3SDarrick J. Wong __entry->offset = oinfo->oi_offset; 2740673930c3SDarrick J. Wong __entry->flags = oinfo->oi_flags; 2741035e00acSDarrick J. Wong if (unwritten) 2742035e00acSDarrick J. Wong __entry->flags |= XFS_RMAP_UNWRITTEN; 2743673930c3SDarrick J. Wong ), 27447989acccSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x owner 0x%llx fileoff 0x%llx flags 0x%lx", 2745673930c3SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2746673930c3SDarrick J. Wong __entry->agno, 2747673930c3SDarrick J. Wong __entry->agbno, 2748673930c3SDarrick J. Wong __entry->len, 2749673930c3SDarrick J. Wong __entry->owner, 2750673930c3SDarrick J. Wong __entry->offset, 2751673930c3SDarrick J. Wong __entry->flags) 2752673930c3SDarrick J. Wong ); 2753673930c3SDarrick J. Wong #define DEFINE_RMAP_EVENT(name) \ 2754673930c3SDarrick J. Wong DEFINE_EVENT(xfs_rmap_class, name, \ 2755673930c3SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 2756673930c3SDarrick J. Wong xfs_agblock_t agbno, xfs_extlen_t len, bool unwritten, \ 275766e3237eSDarrick J. Wong const struct xfs_owner_info *oinfo), \ 2758673930c3SDarrick J. Wong TP_ARGS(mp, agno, agbno, len, unwritten, oinfo)) 2759673930c3SDarrick J. Wong 2760673930c3SDarrick J. Wong /* simple AG-based error/%ip tracepoint class */ 2761673930c3SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_ag_error_class, 2762673930c3SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, int error, 2763673930c3SDarrick J. Wong unsigned long caller_ip), 2764673930c3SDarrick J. Wong TP_ARGS(mp, agno, error, caller_ip), 2765673930c3SDarrick J. Wong TP_STRUCT__entry( 2766673930c3SDarrick J. Wong __field(dev_t, dev) 2767673930c3SDarrick J. Wong __field(xfs_agnumber_t, agno) 2768673930c3SDarrick J. Wong __field(int, error) 2769673930c3SDarrick J. Wong __field(unsigned long, caller_ip) 2770673930c3SDarrick J. Wong ), 2771673930c3SDarrick J. Wong TP_fast_assign( 2772673930c3SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 2773673930c3SDarrick J. Wong __entry->agno = agno; 2774673930c3SDarrick J. Wong __entry->error = error; 2775673930c3SDarrick J. Wong __entry->caller_ip = caller_ip; 2776673930c3SDarrick J. Wong ), 27779febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x error %d caller %pS", 2778673930c3SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2779673930c3SDarrick J. Wong __entry->agno, 2780673930c3SDarrick J. Wong __entry->error, 2781673930c3SDarrick J. Wong (char *)__entry->caller_ip) 2782673930c3SDarrick J. Wong ); 2783673930c3SDarrick J. Wong 2784673930c3SDarrick J. Wong #define DEFINE_AG_ERROR_EVENT(name) \ 2785673930c3SDarrick J. Wong DEFINE_EVENT(xfs_ag_error_class, name, \ 2786673930c3SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, int error, \ 2787673930c3SDarrick J. Wong unsigned long caller_ip), \ 2788673930c3SDarrick J. Wong TP_ARGS(mp, agno, error, caller_ip)) 2789673930c3SDarrick J. Wong 2790673930c3SDarrick J. Wong DEFINE_RMAP_EVENT(xfs_rmap_unmap); 2791673930c3SDarrick J. Wong DEFINE_RMAP_EVENT(xfs_rmap_unmap_done); 2792673930c3SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_unmap_error); 2793673930c3SDarrick J. Wong DEFINE_RMAP_EVENT(xfs_rmap_map); 2794673930c3SDarrick J. Wong DEFINE_RMAP_EVENT(xfs_rmap_map_done); 2795673930c3SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_map_error); 2796fb7d9267SDarrick J. Wong DEFINE_RMAP_EVENT(xfs_rmap_convert); 2797fb7d9267SDarrick J. Wong DEFINE_RMAP_EVENT(xfs_rmap_convert_done); 2798fb7d9267SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_convert_error); 2799fb7d9267SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_convert_state); 2800673930c3SDarrick J. Wong 2801aa966d84SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_rmapbt_class, 2802aa966d84SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 2803aa966d84SDarrick J. Wong xfs_agblock_t agbno, xfs_extlen_t len, 2804aa966d84SDarrick J. Wong uint64_t owner, uint64_t offset, unsigned int flags), 2805aa966d84SDarrick J. Wong TP_ARGS(mp, agno, agbno, len, owner, offset, flags), 2806aa966d84SDarrick J. Wong TP_STRUCT__entry( 2807aa966d84SDarrick J. Wong __field(dev_t, dev) 2808aa966d84SDarrick J. Wong __field(xfs_agnumber_t, agno) 2809aa966d84SDarrick J. Wong __field(xfs_agblock_t, agbno) 2810aa966d84SDarrick J. Wong __field(xfs_extlen_t, len) 2811aa966d84SDarrick J. Wong __field(uint64_t, owner) 2812aa966d84SDarrick J. Wong __field(uint64_t, offset) 2813aa966d84SDarrick J. Wong __field(unsigned int, flags) 2814aa966d84SDarrick J. Wong ), 2815aa966d84SDarrick J. Wong TP_fast_assign( 2816aa966d84SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 2817aa966d84SDarrick J. Wong __entry->agno = agno; 2818aa966d84SDarrick J. Wong __entry->agbno = agbno; 2819aa966d84SDarrick J. Wong __entry->len = len; 2820aa966d84SDarrick J. Wong __entry->owner = owner; 2821aa966d84SDarrick J. Wong __entry->offset = offset; 2822aa966d84SDarrick J. Wong __entry->flags = flags; 2823aa966d84SDarrick J. Wong ), 28247989acccSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x owner 0x%llx fileoff 0x%llx flags 0x%x", 2825aa966d84SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2826aa966d84SDarrick J. Wong __entry->agno, 2827aa966d84SDarrick J. Wong __entry->agbno, 2828aa966d84SDarrick J. Wong __entry->len, 2829aa966d84SDarrick J. Wong __entry->owner, 2830aa966d84SDarrick J. Wong __entry->offset, 2831aa966d84SDarrick J. Wong __entry->flags) 2832aa966d84SDarrick J. Wong ); 2833aa966d84SDarrick J. Wong #define DEFINE_RMAPBT_EVENT(name) \ 2834aa966d84SDarrick J. Wong DEFINE_EVENT(xfs_rmapbt_class, name, \ 2835aa966d84SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 2836aa966d84SDarrick J. Wong xfs_agblock_t agbno, xfs_extlen_t len, \ 2837aa966d84SDarrick J. Wong uint64_t owner, uint64_t offset, unsigned int flags), \ 2838aa966d84SDarrick J. Wong TP_ARGS(mp, agno, agbno, len, owner, offset, flags)) 2839aa966d84SDarrick J. Wong 2840aa966d84SDarrick J. Wong #define DEFINE_RMAP_DEFERRED_EVENT DEFINE_MAP_EXTENT_DEFERRED_EVENT 2841aa966d84SDarrick J. Wong DEFINE_RMAP_DEFERRED_EVENT(xfs_rmap_defer); 2842aa966d84SDarrick J. Wong DEFINE_RMAP_DEFERRED_EVENT(xfs_rmap_deferred); 2843aa966d84SDarrick J. Wong 28444b8ed677SDarrick J. Wong DEFINE_BUSY_EVENT(xfs_rmapbt_alloc_block); 28454b8ed677SDarrick J. Wong DEFINE_BUSY_EVENT(xfs_rmapbt_free_block); 2846aa966d84SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_update); 2847aa966d84SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_insert); 2848aa966d84SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_delete); 2849aa966d84SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_insert_error); 2850aa966d84SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_delete_error); 2851aa966d84SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_update_error); 2852ceeb9c83SDarrick J. Wong 2853ceeb9c83SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_find_left_neighbor_candidate); 2854ceeb9c83SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_find_left_neighbor_query); 2855ceeb9c83SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_lookup_le_range_candidate); 2856ceeb9c83SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_lookup_le_range); 28570a1b0b38SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_lookup_le_range_result); 28580a1b0b38SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_find_right_neighbor_result); 2859fb7d9267SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_find_left_neighbor_result); 28604b8ed677SDarrick J. Wong 28619f3afb57SDarrick J. Wong /* deferred bmbt updates */ 28629f3afb57SDarrick J. Wong #define DEFINE_BMAP_DEFERRED_EVENT DEFINE_RMAP_DEFERRED_EVENT 28639f3afb57SDarrick J. Wong DEFINE_BMAP_DEFERRED_EVENT(xfs_bmap_defer); 28649f3afb57SDarrick J. Wong DEFINE_BMAP_DEFERRED_EVENT(xfs_bmap_deferred); 28659f3afb57SDarrick J. Wong 28663fd129b6SDarrick J. Wong /* per-AG reservation */ 28673fd129b6SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_ag_resv_class, 28683fd129b6SDarrick J. Wong TP_PROTO(struct xfs_perag *pag, enum xfs_ag_resv_type resv, 28693fd129b6SDarrick J. Wong xfs_extlen_t len), 28703fd129b6SDarrick J. Wong TP_ARGS(pag, resv, len), 28713fd129b6SDarrick J. Wong TP_STRUCT__entry( 28723fd129b6SDarrick J. Wong __field(dev_t, dev) 28733fd129b6SDarrick J. Wong __field(xfs_agnumber_t, agno) 28743fd129b6SDarrick J. Wong __field(int, resv) 28753fd129b6SDarrick J. Wong __field(xfs_extlen_t, freeblks) 28763fd129b6SDarrick J. Wong __field(xfs_extlen_t, flcount) 28773fd129b6SDarrick J. Wong __field(xfs_extlen_t, reserved) 28783fd129b6SDarrick J. Wong __field(xfs_extlen_t, asked) 28793fd129b6SDarrick J. Wong __field(xfs_extlen_t, len) 28803fd129b6SDarrick J. Wong ), 28813fd129b6SDarrick J. Wong TP_fast_assign( 28823fd129b6SDarrick J. Wong struct xfs_ag_resv *r = xfs_perag_resv(pag, resv); 28833fd129b6SDarrick J. Wong 28843fd129b6SDarrick J. Wong __entry->dev = pag->pag_mount->m_super->s_dev; 28853fd129b6SDarrick J. Wong __entry->agno = pag->pag_agno; 28863fd129b6SDarrick J. Wong __entry->resv = resv; 28873fd129b6SDarrick J. Wong __entry->freeblks = pag->pagf_freeblks; 28883fd129b6SDarrick J. Wong __entry->flcount = pag->pagf_flcount; 28893fd129b6SDarrick J. Wong __entry->reserved = r ? r->ar_reserved : 0; 28903fd129b6SDarrick J. Wong __entry->asked = r ? r->ar_asked : 0; 28913fd129b6SDarrick J. Wong __entry->len = len; 28923fd129b6SDarrick J. Wong ), 28939febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x resv %d freeblks %u flcount %u " 289442bf9dbaSHou Tao "resv %u ask %u len %u", 28953fd129b6SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 28963fd129b6SDarrick J. Wong __entry->agno, 28973fd129b6SDarrick J. Wong __entry->resv, 28983fd129b6SDarrick J. Wong __entry->freeblks, 28993fd129b6SDarrick J. Wong __entry->flcount, 29003fd129b6SDarrick J. Wong __entry->reserved, 29013fd129b6SDarrick J. Wong __entry->asked, 29023fd129b6SDarrick J. Wong __entry->len) 29033fd129b6SDarrick J. Wong ) 29043fd129b6SDarrick J. Wong #define DEFINE_AG_RESV_EVENT(name) \ 29053fd129b6SDarrick J. Wong DEFINE_EVENT(xfs_ag_resv_class, name, \ 29063fd129b6SDarrick J. Wong TP_PROTO(struct xfs_perag *pag, enum xfs_ag_resv_type type, \ 29073fd129b6SDarrick J. Wong xfs_extlen_t len), \ 29083fd129b6SDarrick J. Wong TP_ARGS(pag, type, len)) 29093fd129b6SDarrick J. Wong 29103fd129b6SDarrick J. Wong /* per-AG reservation tracepoints */ 29113fd129b6SDarrick J. Wong DEFINE_AG_RESV_EVENT(xfs_ag_resv_init); 29123fd129b6SDarrick J. Wong DEFINE_AG_RESV_EVENT(xfs_ag_resv_free); 29133fd129b6SDarrick J. Wong DEFINE_AG_RESV_EVENT(xfs_ag_resv_alloc_extent); 29143fd129b6SDarrick J. Wong DEFINE_AG_RESV_EVENT(xfs_ag_resv_free_extent); 29153fd129b6SDarrick J. Wong DEFINE_AG_RESV_EVENT(xfs_ag_resv_critical); 29163fd129b6SDarrick J. Wong DEFINE_AG_RESV_EVENT(xfs_ag_resv_needed); 29173fd129b6SDarrick J. Wong 29183fd129b6SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_ag_resv_free_error); 29193fd129b6SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_ag_resv_init_error); 29203fd129b6SDarrick J. Wong 2921c75c752dSDarrick J. Wong /* refcount tracepoint classes */ 2922c75c752dSDarrick J. Wong 2923c75c752dSDarrick J. Wong /* reuse the discard trace class for agbno/aglen-based traces */ 2924c75c752dSDarrick J. Wong #define DEFINE_AG_EXTENT_EVENT(name) DEFINE_DISCARD_EVENT(name) 2925c75c752dSDarrick J. Wong 2926c75c752dSDarrick J. Wong /* ag btree lookup tracepoint class */ 292785f8dff0SDarrick J. Wong TRACE_DEFINE_ENUM(XFS_LOOKUP_EQi); 292885f8dff0SDarrick J. Wong TRACE_DEFINE_ENUM(XFS_LOOKUP_LEi); 292985f8dff0SDarrick J. Wong TRACE_DEFINE_ENUM(XFS_LOOKUP_GEi); 2930c75c752dSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_ag_btree_lookup_class, 2931c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 2932c75c752dSDarrick J. Wong xfs_agblock_t agbno, xfs_lookup_t dir), 2933c75c752dSDarrick J. Wong TP_ARGS(mp, agno, agbno, dir), 2934c75c752dSDarrick J. Wong TP_STRUCT__entry( 2935c75c752dSDarrick J. Wong __field(dev_t, dev) 2936c75c752dSDarrick J. Wong __field(xfs_agnumber_t, agno) 2937c75c752dSDarrick J. Wong __field(xfs_agblock_t, agbno) 2938c75c752dSDarrick J. Wong __field(xfs_lookup_t, dir) 2939c75c752dSDarrick J. Wong ), 2940c75c752dSDarrick J. Wong TP_fast_assign( 2941c75c752dSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 2942c75c752dSDarrick J. Wong __entry->agno = agno; 2943c75c752dSDarrick J. Wong __entry->agbno = agbno; 2944c75c752dSDarrick J. Wong __entry->dir = dir; 2945c75c752dSDarrick J. Wong ), 2946f7b08163SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x cmp %s(%d)", 2947c75c752dSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2948c75c752dSDarrick J. Wong __entry->agno, 2949c75c752dSDarrick J. Wong __entry->agbno, 2950c75c752dSDarrick J. Wong __print_symbolic(__entry->dir, XFS_AG_BTREE_CMP_FORMAT_STR), 2951c75c752dSDarrick J. Wong __entry->dir) 2952c75c752dSDarrick J. Wong ) 2953c75c752dSDarrick J. Wong 2954c75c752dSDarrick J. Wong #define DEFINE_AG_BTREE_LOOKUP_EVENT(name) \ 2955c75c752dSDarrick J. Wong DEFINE_EVENT(xfs_ag_btree_lookup_class, name, \ 2956c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 2957c75c752dSDarrick J. Wong xfs_agblock_t agbno, xfs_lookup_t dir), \ 2958c75c752dSDarrick J. Wong TP_ARGS(mp, agno, agbno, dir)) 2959c75c752dSDarrick J. Wong 2960c75c752dSDarrick J. Wong /* single-rcext tracepoint class */ 2961c75c752dSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_refcount_extent_class, 2962c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 2963c75c752dSDarrick J. Wong struct xfs_refcount_irec *irec), 2964c75c752dSDarrick J. Wong TP_ARGS(mp, agno, irec), 2965c75c752dSDarrick J. Wong TP_STRUCT__entry( 2966c75c752dSDarrick J. Wong __field(dev_t, dev) 2967c75c752dSDarrick J. Wong __field(xfs_agnumber_t, agno) 2968571423a1SDarrick J. Wong __field(enum xfs_refc_domain, domain) 2969c75c752dSDarrick J. Wong __field(xfs_agblock_t, startblock) 2970c75c752dSDarrick J. Wong __field(xfs_extlen_t, blockcount) 2971c75c752dSDarrick J. Wong __field(xfs_nlink_t, refcount) 2972c75c752dSDarrick J. Wong ), 2973c75c752dSDarrick J. Wong TP_fast_assign( 2974c75c752dSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 2975c75c752dSDarrick J. Wong __entry->agno = agno; 2976571423a1SDarrick J. Wong __entry->domain = irec->rc_domain; 2977c75c752dSDarrick J. Wong __entry->startblock = irec->rc_startblock; 2978c75c752dSDarrick J. Wong __entry->blockcount = irec->rc_blockcount; 2979c75c752dSDarrick J. Wong __entry->refcount = irec->rc_refcount; 2980c75c752dSDarrick J. Wong ), 2981571423a1SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u", 2982c75c752dSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2983c75c752dSDarrick J. Wong __entry->agno, 2984571423a1SDarrick J. Wong __print_symbolic(__entry->domain, XFS_REFC_DOMAIN_STRINGS), 2985c75c752dSDarrick J. Wong __entry->startblock, 2986c75c752dSDarrick J. Wong __entry->blockcount, 2987c75c752dSDarrick J. Wong __entry->refcount) 2988c75c752dSDarrick J. Wong ) 2989c75c752dSDarrick J. Wong 2990c75c752dSDarrick J. Wong #define DEFINE_REFCOUNT_EXTENT_EVENT(name) \ 2991c75c752dSDarrick J. Wong DEFINE_EVENT(xfs_refcount_extent_class, name, \ 2992c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 2993c75c752dSDarrick J. Wong struct xfs_refcount_irec *irec), \ 2994c75c752dSDarrick J. Wong TP_ARGS(mp, agno, irec)) 2995c75c752dSDarrick J. Wong 2996c75c752dSDarrick J. Wong /* single-rcext and an agbno tracepoint class */ 2997c75c752dSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_refcount_extent_at_class, 2998c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 2999c75c752dSDarrick J. Wong struct xfs_refcount_irec *irec, xfs_agblock_t agbno), 3000c75c752dSDarrick J. Wong TP_ARGS(mp, agno, irec, agbno), 3001c75c752dSDarrick J. Wong TP_STRUCT__entry( 3002c75c752dSDarrick J. Wong __field(dev_t, dev) 3003c75c752dSDarrick J. Wong __field(xfs_agnumber_t, agno) 3004571423a1SDarrick J. Wong __field(enum xfs_refc_domain, domain) 3005c75c752dSDarrick J. Wong __field(xfs_agblock_t, startblock) 3006c75c752dSDarrick J. Wong __field(xfs_extlen_t, blockcount) 3007c75c752dSDarrick J. Wong __field(xfs_nlink_t, refcount) 3008c75c752dSDarrick J. Wong __field(xfs_agblock_t, agbno) 3009c75c752dSDarrick J. Wong ), 3010c75c752dSDarrick J. Wong TP_fast_assign( 3011c75c752dSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3012c75c752dSDarrick J. Wong __entry->agno = agno; 3013571423a1SDarrick J. Wong __entry->domain = irec->rc_domain; 3014c75c752dSDarrick J. Wong __entry->startblock = irec->rc_startblock; 3015c75c752dSDarrick J. Wong __entry->blockcount = irec->rc_blockcount; 3016c75c752dSDarrick J. Wong __entry->refcount = irec->rc_refcount; 3017c75c752dSDarrick J. Wong __entry->agbno = agbno; 3018c75c752dSDarrick J. Wong ), 3019571423a1SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u @ agbno 0x%x", 3020c75c752dSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3021c75c752dSDarrick J. Wong __entry->agno, 3022571423a1SDarrick J. Wong __print_symbolic(__entry->domain, XFS_REFC_DOMAIN_STRINGS), 3023c75c752dSDarrick J. Wong __entry->startblock, 3024c75c752dSDarrick J. Wong __entry->blockcount, 3025c75c752dSDarrick J. Wong __entry->refcount, 3026c75c752dSDarrick J. Wong __entry->agbno) 3027c75c752dSDarrick J. Wong ) 3028c75c752dSDarrick J. Wong 3029c75c752dSDarrick J. Wong #define DEFINE_REFCOUNT_EXTENT_AT_EVENT(name) \ 3030c75c752dSDarrick J. Wong DEFINE_EVENT(xfs_refcount_extent_at_class, name, \ 3031c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 3032c75c752dSDarrick J. Wong struct xfs_refcount_irec *irec, xfs_agblock_t agbno), \ 3033c75c752dSDarrick J. Wong TP_ARGS(mp, agno, irec, agbno)) 3034c75c752dSDarrick J. Wong 3035c75c752dSDarrick J. Wong /* double-rcext tracepoint class */ 3036c75c752dSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_refcount_double_extent_class, 3037c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 3038c75c752dSDarrick J. Wong struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2), 3039c75c752dSDarrick J. Wong TP_ARGS(mp, agno, i1, i2), 3040c75c752dSDarrick J. Wong TP_STRUCT__entry( 3041c75c752dSDarrick J. Wong __field(dev_t, dev) 3042c75c752dSDarrick J. Wong __field(xfs_agnumber_t, agno) 3043571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i1_domain) 3044c75c752dSDarrick J. Wong __field(xfs_agblock_t, i1_startblock) 3045c75c752dSDarrick J. Wong __field(xfs_extlen_t, i1_blockcount) 3046c75c752dSDarrick J. Wong __field(xfs_nlink_t, i1_refcount) 3047571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i2_domain) 3048c75c752dSDarrick J. Wong __field(xfs_agblock_t, i2_startblock) 3049c75c752dSDarrick J. Wong __field(xfs_extlen_t, i2_blockcount) 3050c75c752dSDarrick J. Wong __field(xfs_nlink_t, i2_refcount) 3051c75c752dSDarrick J. Wong ), 3052c75c752dSDarrick J. Wong TP_fast_assign( 3053c75c752dSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3054c75c752dSDarrick J. Wong __entry->agno = agno; 3055571423a1SDarrick J. Wong __entry->i1_domain = i1->rc_domain; 3056c75c752dSDarrick J. Wong __entry->i1_startblock = i1->rc_startblock; 3057c75c752dSDarrick J. Wong __entry->i1_blockcount = i1->rc_blockcount; 3058c75c752dSDarrick J. Wong __entry->i1_refcount = i1->rc_refcount; 3059571423a1SDarrick J. Wong __entry->i2_domain = i2->rc_domain; 3060c75c752dSDarrick J. Wong __entry->i2_startblock = i2->rc_startblock; 3061c75c752dSDarrick J. Wong __entry->i2_blockcount = i2->rc_blockcount; 3062c75c752dSDarrick J. Wong __entry->i2_refcount = i2->rc_refcount; 3063c75c752dSDarrick J. Wong ), 3064571423a1SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u -- " 3065571423a1SDarrick J. Wong "dom %s agbno 0x%x fsbcount 0x%x refcount %u", 3066c75c752dSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3067c75c752dSDarrick J. Wong __entry->agno, 3068571423a1SDarrick J. Wong __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS), 3069c75c752dSDarrick J. Wong __entry->i1_startblock, 3070c75c752dSDarrick J. Wong __entry->i1_blockcount, 3071c75c752dSDarrick J. Wong __entry->i1_refcount, 3072571423a1SDarrick J. Wong __print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS), 3073c75c752dSDarrick J. Wong __entry->i2_startblock, 3074c75c752dSDarrick J. Wong __entry->i2_blockcount, 3075c75c752dSDarrick J. Wong __entry->i2_refcount) 3076c75c752dSDarrick J. Wong ) 3077c75c752dSDarrick J. Wong 3078c75c752dSDarrick J. Wong #define DEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(name) \ 3079c75c752dSDarrick J. Wong DEFINE_EVENT(xfs_refcount_double_extent_class, name, \ 3080c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 3081c75c752dSDarrick J. Wong struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2), \ 3082c75c752dSDarrick J. Wong TP_ARGS(mp, agno, i1, i2)) 3083c75c752dSDarrick J. Wong 3084c75c752dSDarrick J. Wong /* double-rcext and an agbno tracepoint class */ 3085c75c752dSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_refcount_double_extent_at_class, 3086c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 3087c75c752dSDarrick J. Wong struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, 3088c75c752dSDarrick J. Wong xfs_agblock_t agbno), 3089c75c752dSDarrick J. Wong TP_ARGS(mp, agno, i1, i2, agbno), 3090c75c752dSDarrick J. Wong TP_STRUCT__entry( 3091c75c752dSDarrick J. Wong __field(dev_t, dev) 3092c75c752dSDarrick J. Wong __field(xfs_agnumber_t, agno) 3093571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i1_domain) 3094c75c752dSDarrick J. Wong __field(xfs_agblock_t, i1_startblock) 3095c75c752dSDarrick J. Wong __field(xfs_extlen_t, i1_blockcount) 3096c75c752dSDarrick J. Wong __field(xfs_nlink_t, i1_refcount) 3097571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i2_domain) 3098c75c752dSDarrick J. Wong __field(xfs_agblock_t, i2_startblock) 3099c75c752dSDarrick J. Wong __field(xfs_extlen_t, i2_blockcount) 3100c75c752dSDarrick J. Wong __field(xfs_nlink_t, i2_refcount) 3101c75c752dSDarrick J. Wong __field(xfs_agblock_t, agbno) 3102c75c752dSDarrick J. Wong ), 3103c75c752dSDarrick J. Wong TP_fast_assign( 3104c75c752dSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3105c75c752dSDarrick J. Wong __entry->agno = agno; 3106571423a1SDarrick J. Wong __entry->i1_domain = i1->rc_domain; 3107c75c752dSDarrick J. Wong __entry->i1_startblock = i1->rc_startblock; 3108c75c752dSDarrick J. Wong __entry->i1_blockcount = i1->rc_blockcount; 3109c75c752dSDarrick J. Wong __entry->i1_refcount = i1->rc_refcount; 3110571423a1SDarrick J. Wong __entry->i2_domain = i2->rc_domain; 3111c75c752dSDarrick J. Wong __entry->i2_startblock = i2->rc_startblock; 3112c75c752dSDarrick J. Wong __entry->i2_blockcount = i2->rc_blockcount; 3113c75c752dSDarrick J. Wong __entry->i2_refcount = i2->rc_refcount; 3114c75c752dSDarrick J. Wong __entry->agbno = agbno; 3115c75c752dSDarrick J. Wong ), 3116571423a1SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u -- " 3117571423a1SDarrick J. Wong "dom %s agbno 0x%x fsbcount 0x%x refcount %u @ agbno 0x%x", 3118c75c752dSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3119c75c752dSDarrick J. Wong __entry->agno, 3120571423a1SDarrick J. Wong __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS), 3121c75c752dSDarrick J. Wong __entry->i1_startblock, 3122c75c752dSDarrick J. Wong __entry->i1_blockcount, 3123c75c752dSDarrick J. Wong __entry->i1_refcount, 3124571423a1SDarrick J. Wong __print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS), 3125c75c752dSDarrick J. Wong __entry->i2_startblock, 3126c75c752dSDarrick J. Wong __entry->i2_blockcount, 3127c75c752dSDarrick J. Wong __entry->i2_refcount, 3128c75c752dSDarrick J. Wong __entry->agbno) 3129c75c752dSDarrick J. Wong ) 3130c75c752dSDarrick J. Wong 3131c75c752dSDarrick J. Wong #define DEFINE_REFCOUNT_DOUBLE_EXTENT_AT_EVENT(name) \ 3132c75c752dSDarrick J. Wong DEFINE_EVENT(xfs_refcount_double_extent_at_class, name, \ 3133c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 3134c75c752dSDarrick J. Wong struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, \ 3135c75c752dSDarrick J. Wong xfs_agblock_t agbno), \ 3136c75c752dSDarrick J. Wong TP_ARGS(mp, agno, i1, i2, agbno)) 3137c75c752dSDarrick J. Wong 3138c75c752dSDarrick J. Wong /* triple-rcext tracepoint class */ 3139c75c752dSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_refcount_triple_extent_class, 3140c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 3141c75c752dSDarrick J. Wong struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, 3142c75c752dSDarrick J. Wong struct xfs_refcount_irec *i3), 3143c75c752dSDarrick J. Wong TP_ARGS(mp, agno, i1, i2, i3), 3144c75c752dSDarrick J. Wong TP_STRUCT__entry( 3145c75c752dSDarrick J. Wong __field(dev_t, dev) 3146c75c752dSDarrick J. Wong __field(xfs_agnumber_t, agno) 3147571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i1_domain) 3148c75c752dSDarrick J. Wong __field(xfs_agblock_t, i1_startblock) 3149c75c752dSDarrick J. Wong __field(xfs_extlen_t, i1_blockcount) 3150c75c752dSDarrick J. Wong __field(xfs_nlink_t, i1_refcount) 3151571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i2_domain) 3152c75c752dSDarrick J. Wong __field(xfs_agblock_t, i2_startblock) 3153c75c752dSDarrick J. Wong __field(xfs_extlen_t, i2_blockcount) 3154c75c752dSDarrick J. Wong __field(xfs_nlink_t, i2_refcount) 3155571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i3_domain) 3156c75c752dSDarrick J. Wong __field(xfs_agblock_t, i3_startblock) 3157c75c752dSDarrick J. Wong __field(xfs_extlen_t, i3_blockcount) 3158c75c752dSDarrick J. Wong __field(xfs_nlink_t, i3_refcount) 3159c75c752dSDarrick J. Wong ), 3160c75c752dSDarrick J. Wong TP_fast_assign( 3161c75c752dSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3162c75c752dSDarrick J. Wong __entry->agno = agno; 3163571423a1SDarrick J. Wong __entry->i1_domain = i1->rc_domain; 3164c75c752dSDarrick J. Wong __entry->i1_startblock = i1->rc_startblock; 3165c75c752dSDarrick J. Wong __entry->i1_blockcount = i1->rc_blockcount; 3166c75c752dSDarrick J. Wong __entry->i1_refcount = i1->rc_refcount; 3167571423a1SDarrick J. Wong __entry->i2_domain = i2->rc_domain; 3168c75c752dSDarrick J. Wong __entry->i2_startblock = i2->rc_startblock; 3169c75c752dSDarrick J. Wong __entry->i2_blockcount = i2->rc_blockcount; 3170c75c752dSDarrick J. Wong __entry->i2_refcount = i2->rc_refcount; 3171571423a1SDarrick J. Wong __entry->i3_domain = i3->rc_domain; 3172c75c752dSDarrick J. Wong __entry->i3_startblock = i3->rc_startblock; 3173c75c752dSDarrick J. Wong __entry->i3_blockcount = i3->rc_blockcount; 3174c75c752dSDarrick J. Wong __entry->i3_refcount = i3->rc_refcount; 3175c75c752dSDarrick J. Wong ), 3176571423a1SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u -- " 3177571423a1SDarrick J. Wong "dom %s agbno 0x%x fsbcount 0x%x refcount %u -- " 3178571423a1SDarrick J. Wong "dom %s agbno 0x%x fsbcount 0x%x refcount %u", 3179c75c752dSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3180c75c752dSDarrick J. Wong __entry->agno, 3181571423a1SDarrick J. Wong __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS), 3182c75c752dSDarrick J. Wong __entry->i1_startblock, 3183c75c752dSDarrick J. Wong __entry->i1_blockcount, 3184c75c752dSDarrick J. Wong __entry->i1_refcount, 3185571423a1SDarrick J. Wong __print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS), 3186c75c752dSDarrick J. Wong __entry->i2_startblock, 3187c75c752dSDarrick J. Wong __entry->i2_blockcount, 3188c75c752dSDarrick J. Wong __entry->i2_refcount, 3189571423a1SDarrick J. Wong __print_symbolic(__entry->i3_domain, XFS_REFC_DOMAIN_STRINGS), 3190c75c752dSDarrick J. Wong __entry->i3_startblock, 3191c75c752dSDarrick J. Wong __entry->i3_blockcount, 3192c75c752dSDarrick J. Wong __entry->i3_refcount) 3193c75c752dSDarrick J. Wong ); 3194c75c752dSDarrick J. Wong 3195c75c752dSDarrick J. Wong #define DEFINE_REFCOUNT_TRIPLE_EXTENT_EVENT(name) \ 3196c75c752dSDarrick J. Wong DEFINE_EVENT(xfs_refcount_triple_extent_class, name, \ 3197c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 3198c75c752dSDarrick J. Wong struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, \ 3199c75c752dSDarrick J. Wong struct xfs_refcount_irec *i3), \ 3200c75c752dSDarrick J. Wong TP_ARGS(mp, agno, i1, i2, i3)) 3201c75c752dSDarrick J. Wong 3202c75c752dSDarrick J. Wong /* refcount btree tracepoints */ 3203c75c752dSDarrick J. Wong DEFINE_BUSY_EVENT(xfs_refcountbt_alloc_block); 3204c75c752dSDarrick J. Wong DEFINE_BUSY_EVENT(xfs_refcountbt_free_block); 3205c75c752dSDarrick J. Wong DEFINE_AG_BTREE_LOOKUP_EVENT(xfs_refcount_lookup); 3206c75c752dSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_get); 3207c75c752dSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_update); 3208c75c752dSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_insert); 3209c75c752dSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_delete); 3210c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_insert_error); 3211c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_delete_error); 3212c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_update_error); 3213c75c752dSDarrick J. Wong 3214c75c752dSDarrick J. Wong /* refcount adjustment tracepoints */ 3215c75c752dSDarrick J. Wong DEFINE_AG_EXTENT_EVENT(xfs_refcount_increase); 3216c75c752dSDarrick J. Wong DEFINE_AG_EXTENT_EVENT(xfs_refcount_decrease); 3217174edb0eSDarrick J. Wong DEFINE_AG_EXTENT_EVENT(xfs_refcount_cow_increase); 3218174edb0eSDarrick J. Wong DEFINE_AG_EXTENT_EVENT(xfs_refcount_cow_decrease); 3219c75c752dSDarrick J. Wong DEFINE_REFCOUNT_TRIPLE_EXTENT_EVENT(xfs_refcount_merge_center_extents); 3220c75c752dSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_modify_extent); 3221174edb0eSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_recover_extent); 3222c75c752dSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_AT_EVENT(xfs_refcount_split_extent); 3223c75c752dSDarrick J. Wong DEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(xfs_refcount_merge_left_extent); 3224c75c752dSDarrick J. Wong DEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(xfs_refcount_merge_right_extent); 3225c75c752dSDarrick J. Wong DEFINE_REFCOUNT_DOUBLE_EXTENT_AT_EVENT(xfs_refcount_find_left_extent); 3226c75c752dSDarrick J. Wong DEFINE_REFCOUNT_DOUBLE_EXTENT_AT_EVENT(xfs_refcount_find_right_extent); 3227c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_adjust_error); 3228174edb0eSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_adjust_cow_error); 3229c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_merge_center_extents_error); 3230c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_modify_extent_error); 3231c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_split_extent_error); 3232c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_merge_left_extent_error); 3233c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_merge_right_extent_error); 3234c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_find_left_extent_error); 3235c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_find_right_extent_error); 3236c75c752dSDarrick J. Wong 3237c75c752dSDarrick J. Wong /* reflink helpers */ 3238c75c752dSDarrick J. Wong DEFINE_AG_EXTENT_EVENT(xfs_refcount_find_shared); 3239c75c752dSDarrick J. Wong DEFINE_AG_EXTENT_EVENT(xfs_refcount_find_shared_result); 3240c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_find_shared_error); 324133ba6129SDarrick J. Wong #define DEFINE_REFCOUNT_DEFERRED_EVENT DEFINE_PHYS_EXTENT_DEFERRED_EVENT 324233ba6129SDarrick J. Wong DEFINE_REFCOUNT_DEFERRED_EVENT(xfs_refcount_defer); 324333ba6129SDarrick J. Wong DEFINE_REFCOUNT_DEFERRED_EVENT(xfs_refcount_deferred); 3244c75c752dSDarrick J. Wong 3245f997ee21SDarrick J. Wong TRACE_EVENT(xfs_refcount_finish_one_leftover, 3246f997ee21SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 32470b11553eSDarrick J. Wong int type, xfs_agblock_t agbno, xfs_extlen_t len), 32480b11553eSDarrick J. Wong TP_ARGS(mp, agno, type, agbno, len), 3249f997ee21SDarrick J. Wong TP_STRUCT__entry( 3250f997ee21SDarrick J. Wong __field(dev_t, dev) 3251f997ee21SDarrick J. Wong __field(xfs_agnumber_t, agno) 3252f997ee21SDarrick J. Wong __field(int, type) 3253f997ee21SDarrick J. Wong __field(xfs_agblock_t, agbno) 3254f997ee21SDarrick J. Wong __field(xfs_extlen_t, len) 3255f997ee21SDarrick J. Wong ), 3256f997ee21SDarrick J. Wong TP_fast_assign( 3257f997ee21SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3258f997ee21SDarrick J. Wong __entry->agno = agno; 3259f997ee21SDarrick J. Wong __entry->type = type; 3260f997ee21SDarrick J. Wong __entry->agbno = agbno; 3261f997ee21SDarrick J. Wong __entry->len = len; 3262f997ee21SDarrick J. Wong ), 32630b11553eSDarrick J. Wong TP_printk("dev %d:%d type %d agno 0x%x agbno 0x%x fsbcount 0x%x", 3264f997ee21SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3265f997ee21SDarrick J. Wong __entry->type, 3266f997ee21SDarrick J. Wong __entry->agno, 3267f997ee21SDarrick J. Wong __entry->agbno, 32680b11553eSDarrick J. Wong __entry->len) 3269f997ee21SDarrick J. Wong ); 3270f997ee21SDarrick J. Wong 3271f65306eaSDarrick J. Wong /* simple inode-based error/%ip tracepoint class */ 3272f65306eaSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_inode_error_class, 3273f65306eaSDarrick J. Wong TP_PROTO(struct xfs_inode *ip, int error, unsigned long caller_ip), 3274f65306eaSDarrick J. Wong TP_ARGS(ip, error, caller_ip), 3275f65306eaSDarrick J. Wong TP_STRUCT__entry( 3276f65306eaSDarrick J. Wong __field(dev_t, dev) 3277f65306eaSDarrick J. Wong __field(xfs_ino_t, ino) 3278f65306eaSDarrick J. Wong __field(int, error) 3279f65306eaSDarrick J. Wong __field(unsigned long, caller_ip) 3280f65306eaSDarrick J. Wong ), 3281f65306eaSDarrick J. Wong TP_fast_assign( 3282f65306eaSDarrick J. Wong __entry->dev = VFS_I(ip)->i_sb->s_dev; 3283f65306eaSDarrick J. Wong __entry->ino = ip->i_ino; 3284f65306eaSDarrick J. Wong __entry->error = error; 3285f65306eaSDarrick J. Wong __entry->caller_ip = caller_ip; 3286f65306eaSDarrick J. Wong ), 3287af6265a0SDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx error %d caller %pS", 3288f65306eaSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3289f65306eaSDarrick J. Wong __entry->ino, 3290f65306eaSDarrick J. Wong __entry->error, 3291f65306eaSDarrick J. Wong (char *)__entry->caller_ip) 3292f65306eaSDarrick J. Wong ); 3293f65306eaSDarrick J. Wong 3294f65306eaSDarrick J. Wong #define DEFINE_INODE_ERROR_EVENT(name) \ 3295f65306eaSDarrick J. Wong DEFINE_EVENT(xfs_inode_error_class, name, \ 3296f65306eaSDarrick J. Wong TP_PROTO(struct xfs_inode *ip, int error, \ 3297f65306eaSDarrick J. Wong unsigned long caller_ip), \ 3298f65306eaSDarrick J. Wong TP_ARGS(ip, error, caller_ip)) 3299f65306eaSDarrick J. Wong 330053aa1c34SDarrick J. Wong /* reflink tracepoint classes */ 330153aa1c34SDarrick J. Wong 330253aa1c34SDarrick J. Wong /* two-file io tracepoint class */ 330353aa1c34SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_double_io_class, 330453aa1c34SDarrick J. Wong TP_PROTO(struct xfs_inode *src, xfs_off_t soffset, xfs_off_t len, 330553aa1c34SDarrick J. Wong struct xfs_inode *dest, xfs_off_t doffset), 330653aa1c34SDarrick J. Wong TP_ARGS(src, soffset, len, dest, doffset), 330753aa1c34SDarrick J. Wong TP_STRUCT__entry( 330853aa1c34SDarrick J. Wong __field(dev_t, dev) 330953aa1c34SDarrick J. Wong __field(xfs_ino_t, src_ino) 331053aa1c34SDarrick J. Wong __field(loff_t, src_isize) 331153aa1c34SDarrick J. Wong __field(loff_t, src_disize) 331253aa1c34SDarrick J. Wong __field(loff_t, src_offset) 3313d538cf24SDarrick J. Wong __field(long long, len) 331453aa1c34SDarrick J. Wong __field(xfs_ino_t, dest_ino) 331553aa1c34SDarrick J. Wong __field(loff_t, dest_isize) 331653aa1c34SDarrick J. Wong __field(loff_t, dest_disize) 331753aa1c34SDarrick J. Wong __field(loff_t, dest_offset) 331853aa1c34SDarrick J. Wong ), 331953aa1c34SDarrick J. Wong TP_fast_assign( 332053aa1c34SDarrick J. Wong __entry->dev = VFS_I(src)->i_sb->s_dev; 332153aa1c34SDarrick J. Wong __entry->src_ino = src->i_ino; 332253aa1c34SDarrick J. Wong __entry->src_isize = VFS_I(src)->i_size; 332313d2c10bSChristoph Hellwig __entry->src_disize = src->i_disk_size; 332453aa1c34SDarrick J. Wong __entry->src_offset = soffset; 332553aa1c34SDarrick J. Wong __entry->len = len; 332653aa1c34SDarrick J. Wong __entry->dest_ino = dest->i_ino; 332753aa1c34SDarrick J. Wong __entry->dest_isize = VFS_I(dest)->i_size; 332813d2c10bSChristoph Hellwig __entry->dest_disize = dest->i_disk_size; 332953aa1c34SDarrick J. Wong __entry->dest_offset = doffset; 333053aa1c34SDarrick J. Wong ), 3331d538cf24SDarrick J. Wong TP_printk("dev %d:%d bytecount 0x%llx " 333249e68c91SDarrick J. Wong "ino 0x%llx isize 0x%llx disize 0x%llx pos 0x%llx -> " 333349e68c91SDarrick J. Wong "ino 0x%llx isize 0x%llx disize 0x%llx pos 0x%llx", 333453aa1c34SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 333553aa1c34SDarrick J. Wong __entry->len, 333653aa1c34SDarrick J. Wong __entry->src_ino, 333753aa1c34SDarrick J. Wong __entry->src_isize, 333853aa1c34SDarrick J. Wong __entry->src_disize, 333953aa1c34SDarrick J. Wong __entry->src_offset, 334053aa1c34SDarrick J. Wong __entry->dest_ino, 334153aa1c34SDarrick J. Wong __entry->dest_isize, 334253aa1c34SDarrick J. Wong __entry->dest_disize, 334353aa1c34SDarrick J. Wong __entry->dest_offset) 334453aa1c34SDarrick J. Wong ) 334553aa1c34SDarrick J. Wong 334653aa1c34SDarrick J. Wong #define DEFINE_DOUBLE_IO_EVENT(name) \ 334753aa1c34SDarrick J. Wong DEFINE_EVENT(xfs_double_io_class, name, \ 334853aa1c34SDarrick J. Wong TP_PROTO(struct xfs_inode *src, xfs_off_t soffset, xfs_off_t len, \ 334953aa1c34SDarrick J. Wong struct xfs_inode *dest, xfs_off_t doffset), \ 335053aa1c34SDarrick J. Wong TP_ARGS(src, soffset, len, dest, doffset)) 335153aa1c34SDarrick J. Wong 335253aa1c34SDarrick J. Wong /* inode/irec events */ 335353aa1c34SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_inode_irec_class, 335453aa1c34SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, struct xfs_bmbt_irec *irec), 335553aa1c34SDarrick J. Wong TP_ARGS(ip, irec), 335653aa1c34SDarrick J. Wong TP_STRUCT__entry( 335753aa1c34SDarrick J. Wong __field(dev_t, dev) 335853aa1c34SDarrick J. Wong __field(xfs_ino_t, ino) 335953aa1c34SDarrick J. Wong __field(xfs_fileoff_t, lblk) 336053aa1c34SDarrick J. Wong __field(xfs_extlen_t, len) 336153aa1c34SDarrick J. Wong __field(xfs_fsblock_t, pblk) 33625eda4300SDarrick J. Wong __field(int, state) 336353aa1c34SDarrick J. Wong ), 336453aa1c34SDarrick J. Wong TP_fast_assign( 336553aa1c34SDarrick J. Wong __entry->dev = VFS_I(ip)->i_sb->s_dev; 336653aa1c34SDarrick J. Wong __entry->ino = ip->i_ino; 336753aa1c34SDarrick J. Wong __entry->lblk = irec->br_startoff; 336853aa1c34SDarrick J. Wong __entry->len = irec->br_blockcount; 336953aa1c34SDarrick J. Wong __entry->pblk = irec->br_startblock; 33705eda4300SDarrick J. Wong __entry->state = irec->br_state; 337153aa1c34SDarrick J. Wong ), 33727989acccSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx fileoff 0x%llx fsbcount 0x%x startblock 0x%llx st %d", 337353aa1c34SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 337453aa1c34SDarrick J. Wong __entry->ino, 337553aa1c34SDarrick J. Wong __entry->lblk, 337653aa1c34SDarrick J. Wong __entry->len, 33775eda4300SDarrick J. Wong __entry->pblk, 33785eda4300SDarrick J. Wong __entry->state) 337953aa1c34SDarrick J. Wong ); 338053aa1c34SDarrick J. Wong #define DEFINE_INODE_IREC_EVENT(name) \ 338153aa1c34SDarrick J. Wong DEFINE_EVENT(xfs_inode_irec_class, name, \ 338253aa1c34SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, struct xfs_bmbt_irec *irec), \ 338353aa1c34SDarrick J. Wong TP_ARGS(ip, irec)) 338453aa1c34SDarrick J. Wong 3385c2beff99SDarrick J. Wong /* inode iomap invalidation events */ 3386c2beff99SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_wb_invalid_class, 3387c2beff99SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, const struct iomap *iomap, unsigned int wpcseq, int whichfork), 3388c2beff99SDarrick J. Wong TP_ARGS(ip, iomap, wpcseq, whichfork), 3389c2beff99SDarrick J. Wong TP_STRUCT__entry( 3390c2beff99SDarrick J. Wong __field(dev_t, dev) 3391c2beff99SDarrick J. Wong __field(xfs_ino_t, ino) 3392c2beff99SDarrick J. Wong __field(u64, addr) 3393c2beff99SDarrick J. Wong __field(loff_t, pos) 3394c2beff99SDarrick J. Wong __field(u64, len) 3395c2beff99SDarrick J. Wong __field(u16, type) 3396c2beff99SDarrick J. Wong __field(u16, flags) 3397c2beff99SDarrick J. Wong __field(u32, wpcseq) 3398c2beff99SDarrick J. Wong __field(u32, forkseq) 3399c2beff99SDarrick J. Wong ), 3400c2beff99SDarrick J. Wong TP_fast_assign( 3401c2beff99SDarrick J. Wong __entry->dev = VFS_I(ip)->i_sb->s_dev; 3402c2beff99SDarrick J. Wong __entry->ino = ip->i_ino; 3403c2beff99SDarrick J. Wong __entry->addr = iomap->addr; 3404c2beff99SDarrick J. Wong __entry->pos = iomap->offset; 3405c2beff99SDarrick J. Wong __entry->len = iomap->length; 3406c2beff99SDarrick J. Wong __entry->type = iomap->type; 3407c2beff99SDarrick J. Wong __entry->flags = iomap->flags; 3408c2beff99SDarrick J. Wong __entry->wpcseq = wpcseq; 3409c2beff99SDarrick J. Wong __entry->forkseq = READ_ONCE(xfs_ifork_ptr(ip, whichfork)->if_seq); 3410c2beff99SDarrick J. Wong ), 3411c2beff99SDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx pos 0x%llx addr 0x%llx bytecount 0x%llx type 0x%x flags 0x%x wpcseq 0x%x forkseq 0x%x", 3412c2beff99SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3413c2beff99SDarrick J. Wong __entry->ino, 3414c2beff99SDarrick J. Wong __entry->pos, 3415c2beff99SDarrick J. Wong __entry->addr, 3416c2beff99SDarrick J. Wong __entry->len, 3417c2beff99SDarrick J. Wong __entry->type, 3418c2beff99SDarrick J. Wong __entry->flags, 3419c2beff99SDarrick J. Wong __entry->wpcseq, 3420c2beff99SDarrick J. Wong __entry->forkseq) 3421c2beff99SDarrick J. Wong ); 3422c2beff99SDarrick J. Wong #define DEFINE_WB_INVALID_EVENT(name) \ 3423c2beff99SDarrick J. Wong DEFINE_EVENT(xfs_wb_invalid_class, name, \ 3424c2beff99SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, const struct iomap *iomap, unsigned int wpcseq, int whichfork), \ 3425c2beff99SDarrick J. Wong TP_ARGS(ip, iomap, wpcseq, whichfork)) 3426c2beff99SDarrick J. Wong DEFINE_WB_INVALID_EVENT(xfs_wb_cow_iomap_invalid); 3427c2beff99SDarrick J. Wong DEFINE_WB_INVALID_EVENT(xfs_wb_data_iomap_invalid); 3428c2beff99SDarrick J. Wong 3429254e3459SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_iomap_invalid_class, 3430254e3459SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, const struct iomap *iomap), 3431254e3459SDarrick J. Wong TP_ARGS(ip, iomap), 3432254e3459SDarrick J. Wong TP_STRUCT__entry( 3433254e3459SDarrick J. Wong __field(dev_t, dev) 3434254e3459SDarrick J. Wong __field(xfs_ino_t, ino) 3435254e3459SDarrick J. Wong __field(u64, addr) 3436254e3459SDarrick J. Wong __field(loff_t, pos) 3437254e3459SDarrick J. Wong __field(u64, len) 3438254e3459SDarrick J. Wong __field(u64, validity_cookie) 3439254e3459SDarrick J. Wong __field(u64, inodeseq) 3440254e3459SDarrick J. Wong __field(u16, type) 3441254e3459SDarrick J. Wong __field(u16, flags) 3442254e3459SDarrick J. Wong ), 3443254e3459SDarrick J. Wong TP_fast_assign( 3444254e3459SDarrick J. Wong __entry->dev = VFS_I(ip)->i_sb->s_dev; 3445254e3459SDarrick J. Wong __entry->ino = ip->i_ino; 3446254e3459SDarrick J. Wong __entry->addr = iomap->addr; 3447254e3459SDarrick J. Wong __entry->pos = iomap->offset; 3448254e3459SDarrick J. Wong __entry->len = iomap->length; 3449254e3459SDarrick J. Wong __entry->validity_cookie = iomap->validity_cookie; 3450254e3459SDarrick J. Wong __entry->type = iomap->type; 3451254e3459SDarrick J. Wong __entry->flags = iomap->flags; 3452254e3459SDarrick J. Wong __entry->inodeseq = xfs_iomap_inode_sequence(ip, iomap->flags); 3453254e3459SDarrick J. Wong ), 3454254e3459SDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx pos 0x%llx addr 0x%llx bytecount 0x%llx type 0x%x flags 0x%x validity_cookie 0x%llx inodeseq 0x%llx", 3455254e3459SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3456254e3459SDarrick J. Wong __entry->ino, 3457254e3459SDarrick J. Wong __entry->pos, 3458254e3459SDarrick J. Wong __entry->addr, 3459254e3459SDarrick J. Wong __entry->len, 3460254e3459SDarrick J. Wong __entry->type, 3461254e3459SDarrick J. Wong __entry->flags, 3462254e3459SDarrick J. Wong __entry->validity_cookie, 3463254e3459SDarrick J. Wong __entry->inodeseq) 3464254e3459SDarrick J. Wong ); 3465254e3459SDarrick J. Wong #define DEFINE_IOMAP_INVALID_EVENT(name) \ 3466254e3459SDarrick J. Wong DEFINE_EVENT(xfs_iomap_invalid_class, name, \ 3467254e3459SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, const struct iomap *iomap), \ 3468254e3459SDarrick J. Wong TP_ARGS(ip, iomap)) 3469254e3459SDarrick J. Wong DEFINE_IOMAP_INVALID_EVENT(xfs_iomap_invalid); 3470254e3459SDarrick J. Wong 347153aa1c34SDarrick J. Wong /* refcount/reflink tracepoint definitions */ 347253aa1c34SDarrick J. Wong 347353aa1c34SDarrick J. Wong /* reflink tracepoints */ 347453aa1c34SDarrick J. Wong DEFINE_INODE_EVENT(xfs_reflink_set_inode_flag); 347553aa1c34SDarrick J. Wong DEFINE_INODE_EVENT(xfs_reflink_unset_inode_flag); 347653aa1c34SDarrick J. Wong DEFINE_ITRUNC_EVENT(xfs_reflink_update_inode_size); 347700fd1d56SDarrick J. Wong TRACE_EVENT(xfs_reflink_remap_blocks, 347853aa1c34SDarrick J. Wong TP_PROTO(struct xfs_inode *src, xfs_fileoff_t soffset, 347953aa1c34SDarrick J. Wong xfs_filblks_t len, struct xfs_inode *dest, 348053aa1c34SDarrick J. Wong xfs_fileoff_t doffset), 348153aa1c34SDarrick J. Wong TP_ARGS(src, soffset, len, dest, doffset), 348253aa1c34SDarrick J. Wong TP_STRUCT__entry( 348353aa1c34SDarrick J. Wong __field(dev_t, dev) 348453aa1c34SDarrick J. Wong __field(xfs_ino_t, src_ino) 348553aa1c34SDarrick J. Wong __field(xfs_fileoff_t, src_lblk) 348653aa1c34SDarrick J. Wong __field(xfs_filblks_t, len) 348753aa1c34SDarrick J. Wong __field(xfs_ino_t, dest_ino) 348853aa1c34SDarrick J. Wong __field(xfs_fileoff_t, dest_lblk) 348953aa1c34SDarrick J. Wong ), 349053aa1c34SDarrick J. Wong TP_fast_assign( 349153aa1c34SDarrick J. Wong __entry->dev = VFS_I(src)->i_sb->s_dev; 349253aa1c34SDarrick J. Wong __entry->src_ino = src->i_ino; 349353aa1c34SDarrick J. Wong __entry->src_lblk = soffset; 349453aa1c34SDarrick J. Wong __entry->len = len; 349553aa1c34SDarrick J. Wong __entry->dest_ino = dest->i_ino; 349653aa1c34SDarrick J. Wong __entry->dest_lblk = doffset; 349753aa1c34SDarrick J. Wong ), 34987989acccSDarrick J. Wong TP_printk("dev %d:%d fsbcount 0x%llx " 349949e68c91SDarrick J. Wong "ino 0x%llx fileoff 0x%llx -> ino 0x%llx fileoff 0x%llx", 350053aa1c34SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 350153aa1c34SDarrick J. Wong __entry->len, 350253aa1c34SDarrick J. Wong __entry->src_ino, 350353aa1c34SDarrick J. Wong __entry->src_lblk, 350453aa1c34SDarrick J. Wong __entry->dest_ino, 350553aa1c34SDarrick J. Wong __entry->dest_lblk) 350653aa1c34SDarrick J. Wong ); 350753aa1c34SDarrick J. Wong DEFINE_DOUBLE_IO_EVENT(xfs_reflink_remap_range); 350853aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_range_error); 350953aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_set_inode_flag_error); 351053aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_update_inode_size_error); 351153aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_blocks_error); 351253aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_extent_error); 351300fd1d56SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_remap_extent_src); 351400fd1d56SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_remap_extent_dest); 351553aa1c34SDarrick J. Wong 351653aa1c34SDarrick J. Wong /* dedupe tracepoints */ 351753aa1c34SDarrick J. Wong DEFINE_DOUBLE_IO_EVENT(xfs_reflink_compare_extents); 351853aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_compare_extents_error); 351953aa1c34SDarrick J. Wong 352053aa1c34SDarrick J. Wong /* ioctl tracepoints */ 352153aa1c34SDarrick J. Wong TRACE_EVENT(xfs_ioctl_clone, 352253aa1c34SDarrick J. Wong TP_PROTO(struct inode *src, struct inode *dest), 352353aa1c34SDarrick J. Wong TP_ARGS(src, dest), 352453aa1c34SDarrick J. Wong TP_STRUCT__entry( 352553aa1c34SDarrick J. Wong __field(dev_t, dev) 352653aa1c34SDarrick J. Wong __field(unsigned long, src_ino) 352753aa1c34SDarrick J. Wong __field(loff_t, src_isize) 352853aa1c34SDarrick J. Wong __field(unsigned long, dest_ino) 352953aa1c34SDarrick J. Wong __field(loff_t, dest_isize) 353053aa1c34SDarrick J. Wong ), 353153aa1c34SDarrick J. Wong TP_fast_assign( 353253aa1c34SDarrick J. Wong __entry->dev = src->i_sb->s_dev; 353353aa1c34SDarrick J. Wong __entry->src_ino = src->i_ino; 353453aa1c34SDarrick J. Wong __entry->src_isize = i_size_read(src); 353553aa1c34SDarrick J. Wong __entry->dest_ino = dest->i_ino; 353653aa1c34SDarrick J. Wong __entry->dest_isize = i_size_read(dest); 353753aa1c34SDarrick J. Wong ), 3538c23460ebSDarrick J. Wong TP_printk("dev %d:%d ino 0x%lx isize 0x%llx -> ino 0x%lx isize 0x%llx", 353953aa1c34SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 354053aa1c34SDarrick J. Wong __entry->src_ino, 354153aa1c34SDarrick J. Wong __entry->src_isize, 354253aa1c34SDarrick J. Wong __entry->dest_ino, 354353aa1c34SDarrick J. Wong __entry->dest_isize) 354453aa1c34SDarrick J. Wong ); 354553aa1c34SDarrick J. Wong 354653aa1c34SDarrick J. Wong /* unshare tracepoints */ 354753aa1c34SDarrick J. Wong DEFINE_SIMPLE_IO_EVENT(xfs_reflink_unshare); 354853aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_unshare_error); 354953aa1c34SDarrick J. Wong 355053aa1c34SDarrick J. Wong /* copy on write */ 355153aa1c34SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_trim_around_shared); 3552be51f811SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_found); 3553be51f811SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_enospc); 35545eda4300SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_convert_cow); 355553aa1c34SDarrick J. Wong 355653aa1c34SDarrick J. Wong DEFINE_SIMPLE_IO_EVENT(xfs_reflink_cancel_cow_range); 355753aa1c34SDarrick J. Wong DEFINE_SIMPLE_IO_EVENT(xfs_reflink_end_cow); 3558df2fd88fSDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_remap_from); 3559df2fd88fSDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_remap_to); 356053aa1c34SDarrick J. Wong 356153aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_cancel_cow_range_error); 356253aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_end_cow_error); 356353aa1c34SDarrick J. Wong 356453aa1c34SDarrick J. Wong 356553aa1c34SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_cancel_cow); 356653aa1c34SDarrick J. Wong 35671f08af52SDarrick J. Wong /* rmap swapext tracepoints */ 35681f08af52SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_swap_extent_rmap_remap); 35691f08af52SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_swap_extent_rmap_remap_piece); 35701f08af52SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_swap_extent_rmap_error); 35711f08af52SDarrick J. Wong 3572e89c0413SDarrick J. Wong /* fsmap traces */ 3573e89c0413SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_fsmap_class, 3574e89c0413SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, u32 keydev, xfs_agnumber_t agno, 3575159eb69dSDarrick J. Wong const struct xfs_rmap_irec *rmap), 3576e89c0413SDarrick J. Wong TP_ARGS(mp, keydev, agno, rmap), 3577e89c0413SDarrick J. Wong TP_STRUCT__entry( 3578e89c0413SDarrick J. Wong __field(dev_t, dev) 3579e89c0413SDarrick J. Wong __field(dev_t, keydev) 3580e89c0413SDarrick J. Wong __field(xfs_agnumber_t, agno) 3581e89c0413SDarrick J. Wong __field(xfs_fsblock_t, bno) 3582e89c0413SDarrick J. Wong __field(xfs_filblks_t, len) 3583c8ce540dSDarrick J. Wong __field(uint64_t, owner) 3584c8ce540dSDarrick J. Wong __field(uint64_t, offset) 3585e89c0413SDarrick J. Wong __field(unsigned int, flags) 3586e89c0413SDarrick J. Wong ), 3587e89c0413SDarrick J. Wong TP_fast_assign( 3588e89c0413SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3589e89c0413SDarrick J. Wong __entry->keydev = new_decode_dev(keydev); 3590e89c0413SDarrick J. Wong __entry->agno = agno; 3591e89c0413SDarrick J. Wong __entry->bno = rmap->rm_startblock; 3592e89c0413SDarrick J. Wong __entry->len = rmap->rm_blockcount; 3593e89c0413SDarrick J. Wong __entry->owner = rmap->rm_owner; 3594e89c0413SDarrick J. Wong __entry->offset = rmap->rm_offset; 3595e89c0413SDarrick J. Wong __entry->flags = rmap->rm_flags; 3596e89c0413SDarrick J. Wong ), 35977989acccSDarrick J. Wong TP_printk("dev %d:%d keydev %d:%d agno 0x%x startblock 0x%llx fsbcount 0x%llx owner 0x%llx fileoff 0x%llx flags 0x%x", 3598e89c0413SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3599e89c0413SDarrick J. Wong MAJOR(__entry->keydev), MINOR(__entry->keydev), 3600e89c0413SDarrick J. Wong __entry->agno, 3601e89c0413SDarrick J. Wong __entry->bno, 3602e89c0413SDarrick J. Wong __entry->len, 3603e89c0413SDarrick J. Wong __entry->owner, 3604e89c0413SDarrick J. Wong __entry->offset, 3605e89c0413SDarrick J. Wong __entry->flags) 3606e89c0413SDarrick J. Wong ) 3607e89c0413SDarrick J. Wong #define DEFINE_FSMAP_EVENT(name) \ 3608e89c0413SDarrick J. Wong DEFINE_EVENT(xfs_fsmap_class, name, \ 3609e89c0413SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, u32 keydev, xfs_agnumber_t agno, \ 3610159eb69dSDarrick J. Wong const struct xfs_rmap_irec *rmap), \ 3611e89c0413SDarrick J. Wong TP_ARGS(mp, keydev, agno, rmap)) 3612e89c0413SDarrick J. Wong DEFINE_FSMAP_EVENT(xfs_fsmap_low_key); 3613e89c0413SDarrick J. Wong DEFINE_FSMAP_EVENT(xfs_fsmap_high_key); 3614e89c0413SDarrick J. Wong DEFINE_FSMAP_EVENT(xfs_fsmap_mapping); 3615e89c0413SDarrick J. Wong 3616f045dd00SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_fsmap_linear_class, 3617f045dd00SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, u32 keydev, uint64_t bno), 3618f045dd00SDarrick J. Wong TP_ARGS(mp, keydev, bno), 3619f045dd00SDarrick J. Wong TP_STRUCT__entry( 3620f045dd00SDarrick J. Wong __field(dev_t, dev) 3621f045dd00SDarrick J. Wong __field(dev_t, keydev) 3622f045dd00SDarrick J. Wong __field(xfs_fsblock_t, bno) 3623f045dd00SDarrick J. Wong ), 3624f045dd00SDarrick J. Wong TP_fast_assign( 3625f045dd00SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3626f045dd00SDarrick J. Wong __entry->keydev = new_decode_dev(keydev); 3627f045dd00SDarrick J. Wong __entry->bno = bno; 3628f045dd00SDarrick J. Wong ), 3629f045dd00SDarrick J. Wong TP_printk("dev %d:%d keydev %d:%d bno 0x%llx", 3630f045dd00SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3631f045dd00SDarrick J. Wong MAJOR(__entry->keydev), MINOR(__entry->keydev), 3632f045dd00SDarrick J. Wong __entry->bno) 3633f045dd00SDarrick J. Wong ) 3634f045dd00SDarrick J. Wong #define DEFINE_FSMAP_LINEAR_EVENT(name) \ 3635f045dd00SDarrick J. Wong DEFINE_EVENT(xfs_fsmap_linear_class, name, \ 3636f045dd00SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, u32 keydev, uint64_t bno), \ 3637f045dd00SDarrick J. Wong TP_ARGS(mp, keydev, bno)) 3638f045dd00SDarrick J. Wong DEFINE_FSMAP_LINEAR_EVENT(xfs_fsmap_low_key_linear); 3639f045dd00SDarrick J. Wong DEFINE_FSMAP_LINEAR_EVENT(xfs_fsmap_high_key_linear); 3640f045dd00SDarrick J. Wong 3641e89c0413SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_getfsmap_class, 3642e89c0413SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_fsmap *fsmap), 3643e89c0413SDarrick J. Wong TP_ARGS(mp, fsmap), 3644e89c0413SDarrick J. Wong TP_STRUCT__entry( 3645e89c0413SDarrick J. Wong __field(dev_t, dev) 3646e89c0413SDarrick J. Wong __field(dev_t, keydev) 3647e89c0413SDarrick J. Wong __field(xfs_daddr_t, block) 3648e89c0413SDarrick J. Wong __field(xfs_daddr_t, len) 3649c8ce540dSDarrick J. Wong __field(uint64_t, owner) 3650c8ce540dSDarrick J. Wong __field(uint64_t, offset) 3651c8ce540dSDarrick J. Wong __field(uint64_t, flags) 3652e89c0413SDarrick J. Wong ), 3653e89c0413SDarrick J. Wong TP_fast_assign( 3654e89c0413SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3655e89c0413SDarrick J. Wong __entry->keydev = new_decode_dev(fsmap->fmr_device); 3656e89c0413SDarrick J. Wong __entry->block = fsmap->fmr_physical; 3657e89c0413SDarrick J. Wong __entry->len = fsmap->fmr_length; 3658e89c0413SDarrick J. Wong __entry->owner = fsmap->fmr_owner; 3659e89c0413SDarrick J. Wong __entry->offset = fsmap->fmr_offset; 3660e89c0413SDarrick J. Wong __entry->flags = fsmap->fmr_flags; 3661e89c0413SDarrick J. Wong ), 36627989acccSDarrick J. Wong TP_printk("dev %d:%d keydev %d:%d daddr 0x%llx bbcount 0x%llx owner 0x%llx fileoff_daddr 0x%llx flags 0x%llx", 3663e89c0413SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3664e89c0413SDarrick J. Wong MAJOR(__entry->keydev), MINOR(__entry->keydev), 3665e89c0413SDarrick J. Wong __entry->block, 3666e89c0413SDarrick J. Wong __entry->len, 3667e89c0413SDarrick J. Wong __entry->owner, 3668e89c0413SDarrick J. Wong __entry->offset, 3669e89c0413SDarrick J. Wong __entry->flags) 3670e89c0413SDarrick J. Wong ) 3671e89c0413SDarrick J. Wong #define DEFINE_GETFSMAP_EVENT(name) \ 3672e89c0413SDarrick J. Wong DEFINE_EVENT(xfs_getfsmap_class, name, \ 3673e89c0413SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_fsmap *fsmap), \ 3674e89c0413SDarrick J. Wong TP_ARGS(mp, fsmap)) 3675e89c0413SDarrick J. Wong DEFINE_GETFSMAP_EVENT(xfs_getfsmap_low_key); 3676e89c0413SDarrick J. Wong DEFINE_GETFSMAP_EVENT(xfs_getfsmap_high_key); 3677e89c0413SDarrick J. Wong DEFINE_GETFSMAP_EVENT(xfs_getfsmap_mapping); 3678e89c0413SDarrick J. Wong 367952d8ea4fSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_trans_resv_class, 3680b872af2cSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, unsigned int type, 3681b872af2cSDarrick J. Wong struct xfs_trans_res *res), 3682b872af2cSDarrick J. Wong TP_ARGS(mp, type, res), 3683b872af2cSDarrick J. Wong TP_STRUCT__entry( 3684b872af2cSDarrick J. Wong __field(dev_t, dev) 3685b872af2cSDarrick J. Wong __field(int, type) 3686b872af2cSDarrick J. Wong __field(uint, logres) 3687b872af2cSDarrick J. Wong __field(int, logcount) 3688b872af2cSDarrick J. Wong __field(int, logflags) 3689b872af2cSDarrick J. Wong ), 3690b872af2cSDarrick J. Wong TP_fast_assign( 3691b872af2cSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3692b872af2cSDarrick J. Wong __entry->type = type; 3693b872af2cSDarrick J. Wong __entry->logres = res->tr_logres; 3694b872af2cSDarrick J. Wong __entry->logcount = res->tr_logcount; 3695b872af2cSDarrick J. Wong __entry->logflags = res->tr_logflags; 3696b872af2cSDarrick J. Wong ), 3697b872af2cSDarrick J. Wong TP_printk("dev %d:%d type %d logres %u logcount %d flags 0x%x", 3698b872af2cSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3699b872af2cSDarrick J. Wong __entry->type, 3700b872af2cSDarrick J. Wong __entry->logres, 3701b872af2cSDarrick J. Wong __entry->logcount, 3702b872af2cSDarrick J. Wong __entry->logflags) 370352d8ea4fSDarrick J. Wong ) 370452d8ea4fSDarrick J. Wong 370552d8ea4fSDarrick J. Wong #define DEFINE_TRANS_RESV_EVENT(name) \ 370652d8ea4fSDarrick J. Wong DEFINE_EVENT(xfs_trans_resv_class, name, \ 370752d8ea4fSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, unsigned int type, \ 370852d8ea4fSDarrick J. Wong struct xfs_trans_res *res), \ 370952d8ea4fSDarrick J. Wong TP_ARGS(mp, type, res)) 371052d8ea4fSDarrick J. Wong DEFINE_TRANS_RESV_EVENT(xfs_trans_resv_calc); 371152d8ea4fSDarrick J. Wong DEFINE_TRANS_RESV_EVENT(xfs_trans_resv_calc_minlogsize); 3712b872af2cSDarrick J. Wong 3713918247ceSDarrick J. Wong TRACE_EVENT(xfs_log_get_max_trans_res, 3714918247ceSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, const struct xfs_trans_res *res), 3715918247ceSDarrick J. Wong TP_ARGS(mp, res), 3716918247ceSDarrick J. Wong TP_STRUCT__entry( 3717918247ceSDarrick J. Wong __field(dev_t, dev) 3718918247ceSDarrick J. Wong __field(uint, logres) 3719918247ceSDarrick J. Wong __field(int, logcount) 3720918247ceSDarrick J. Wong ), 3721918247ceSDarrick J. Wong TP_fast_assign( 3722918247ceSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3723918247ceSDarrick J. Wong __entry->logres = res->tr_logres; 3724918247ceSDarrick J. Wong __entry->logcount = res->tr_logcount; 3725918247ceSDarrick J. Wong ), 3726918247ceSDarrick J. Wong TP_printk("dev %d:%d logres %u logcount %d", 3727918247ceSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3728918247ceSDarrick J. Wong __entry->logres, 3729918247ceSDarrick J. Wong __entry->logcount) 3730c59d87c4SChristoph Hellwig ); 3731c59d87c4SChristoph Hellwig 3732ba18781bSDave Chinner DECLARE_EVENT_CLASS(xfs_trans_class, 3733ba18781bSDave Chinner TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip), 3734ba18781bSDave Chinner TP_ARGS(tp, caller_ip), 3735ba18781bSDave Chinner TP_STRUCT__entry( 3736ba18781bSDave Chinner __field(dev_t, dev) 3737ba18781bSDave Chinner __field(uint32_t, tid) 3738ba18781bSDave Chinner __field(uint32_t, flags) 3739ba18781bSDave Chinner __field(unsigned long, caller_ip) 3740ba18781bSDave Chinner ), 3741ba18781bSDave Chinner TP_fast_assign( 3742ba18781bSDave Chinner __entry->dev = tp->t_mountp->m_super->s_dev; 3743ba18781bSDave Chinner __entry->tid = 0; 3744ba18781bSDave Chinner if (tp->t_ticket) 3745ba18781bSDave Chinner __entry->tid = tp->t_ticket->t_tid; 3746ba18781bSDave Chinner __entry->flags = tp->t_flags; 3747ba18781bSDave Chinner __entry->caller_ip = caller_ip; 3748ba18781bSDave Chinner ), 3749ba18781bSDave Chinner TP_printk("dev %d:%d trans %x flags 0x%x caller %pS", 3750ba18781bSDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 3751ba18781bSDave Chinner __entry->tid, 3752ba18781bSDave Chinner __entry->flags, 3753ba18781bSDave Chinner (char *)__entry->caller_ip) 3754ba18781bSDave Chinner ) 3755ba18781bSDave Chinner 3756ba18781bSDave Chinner #define DEFINE_TRANS_EVENT(name) \ 3757ba18781bSDave Chinner DEFINE_EVENT(xfs_trans_class, name, \ 3758ba18781bSDave Chinner TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip), \ 3759ba18781bSDave Chinner TP_ARGS(tp, caller_ip)) 3760ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_alloc); 3761ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_cancel); 3762ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_commit); 3763ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_dup); 3764ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_free); 3765ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_roll); 3766ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_add_item); 3767195cd83dSChristoph Hellwig DEFINE_TRANS_EVENT(xfs_trans_commit_items); 3768ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_free_items); 3769ba18781bSDave Chinner 37709a4a5118SDarrick J. Wong TRACE_EVENT(xfs_iunlink_update_bucket, 37719a4a5118SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, unsigned int bucket, 37729a4a5118SDarrick J. Wong xfs_agino_t old_ptr, xfs_agino_t new_ptr), 37739a4a5118SDarrick J. Wong TP_ARGS(mp, agno, bucket, old_ptr, new_ptr), 37749a4a5118SDarrick J. Wong TP_STRUCT__entry( 37759a4a5118SDarrick J. Wong __field(dev_t, dev) 37769a4a5118SDarrick J. Wong __field(xfs_agnumber_t, agno) 37779a4a5118SDarrick J. Wong __field(unsigned int, bucket) 37789a4a5118SDarrick J. Wong __field(xfs_agino_t, old_ptr) 37799a4a5118SDarrick J. Wong __field(xfs_agino_t, new_ptr) 37809a4a5118SDarrick J. Wong ), 37819a4a5118SDarrick J. Wong TP_fast_assign( 37829a4a5118SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 37839a4a5118SDarrick J. Wong __entry->agno = agno; 37849a4a5118SDarrick J. Wong __entry->bucket = bucket; 37859a4a5118SDarrick J. Wong __entry->old_ptr = old_ptr; 37869a4a5118SDarrick J. Wong __entry->new_ptr = new_ptr; 37879a4a5118SDarrick J. Wong ), 37889febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x bucket %u old 0x%x new 0x%x", 37899a4a5118SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 37909a4a5118SDarrick J. Wong __entry->agno, 37919a4a5118SDarrick J. Wong __entry->bucket, 37929a4a5118SDarrick J. Wong __entry->old_ptr, 37939a4a5118SDarrick J. Wong __entry->new_ptr) 37949a4a5118SDarrick J. Wong ); 37959a4a5118SDarrick J. Wong 3796f2fc16a3SDarrick J. Wong TRACE_EVENT(xfs_iunlink_update_dinode, 3797f2fc16a3SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t agino, 3798f2fc16a3SDarrick J. Wong xfs_agino_t old_ptr, xfs_agino_t new_ptr), 3799f2fc16a3SDarrick J. Wong TP_ARGS(mp, agno, agino, old_ptr, new_ptr), 3800f2fc16a3SDarrick J. Wong TP_STRUCT__entry( 3801f2fc16a3SDarrick J. Wong __field(dev_t, dev) 3802f2fc16a3SDarrick J. Wong __field(xfs_agnumber_t, agno) 3803f2fc16a3SDarrick J. Wong __field(xfs_agino_t, agino) 3804f2fc16a3SDarrick J. Wong __field(xfs_agino_t, old_ptr) 3805f2fc16a3SDarrick J. Wong __field(xfs_agino_t, new_ptr) 3806f2fc16a3SDarrick J. Wong ), 3807f2fc16a3SDarrick J. Wong TP_fast_assign( 3808f2fc16a3SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3809f2fc16a3SDarrick J. Wong __entry->agno = agno; 3810f2fc16a3SDarrick J. Wong __entry->agino = agino; 3811f2fc16a3SDarrick J. Wong __entry->old_ptr = old_ptr; 3812f2fc16a3SDarrick J. Wong __entry->new_ptr = new_ptr; 3813f2fc16a3SDarrick J. Wong ), 38149febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agino 0x%x old 0x%x new 0x%x", 3815f2fc16a3SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3816f2fc16a3SDarrick J. Wong __entry->agno, 3817f2fc16a3SDarrick J. Wong __entry->agino, 3818f2fc16a3SDarrick J. Wong __entry->old_ptr, 3819f2fc16a3SDarrick J. Wong __entry->new_ptr) 3820f2fc16a3SDarrick J. Wong ); 3821f2fc16a3SDarrick J. Wong 382268b957f6SDarrick J. Wong TRACE_EVENT(xfs_iunlink_reload_next, 382368b957f6SDarrick J. Wong TP_PROTO(struct xfs_inode *ip), 382468b957f6SDarrick J. Wong TP_ARGS(ip), 382568b957f6SDarrick J. Wong TP_STRUCT__entry( 382668b957f6SDarrick J. Wong __field(dev_t, dev) 382768b957f6SDarrick J. Wong __field(xfs_agnumber_t, agno) 382868b957f6SDarrick J. Wong __field(xfs_agino_t, agino) 382968b957f6SDarrick J. Wong __field(xfs_agino_t, prev_agino) 383068b957f6SDarrick J. Wong __field(xfs_agino_t, next_agino) 383168b957f6SDarrick J. Wong ), 383268b957f6SDarrick J. Wong TP_fast_assign( 383368b957f6SDarrick J. Wong __entry->dev = ip->i_mount->m_super->s_dev; 383468b957f6SDarrick J. Wong __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino); 383568b957f6SDarrick J. Wong __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino); 383668b957f6SDarrick J. Wong __entry->prev_agino = ip->i_prev_unlinked; 383768b957f6SDarrick J. Wong __entry->next_agino = ip->i_next_unlinked; 383868b957f6SDarrick J. Wong ), 383968b957f6SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agino 0x%x prev_unlinked 0x%x next_unlinked 0x%x", 384068b957f6SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 384168b957f6SDarrick J. Wong __entry->agno, 384268b957f6SDarrick J. Wong __entry->agino, 384368b957f6SDarrick J. Wong __entry->prev_agino, 384468b957f6SDarrick J. Wong __entry->next_agino) 384568b957f6SDarrick J. Wong ); 384668b957f6SDarrick J. Wong 384783771c50SDarrick J. Wong TRACE_EVENT(xfs_inode_reload_unlinked_bucket, 384883771c50SDarrick J. Wong TP_PROTO(struct xfs_inode *ip), 384983771c50SDarrick J. Wong TP_ARGS(ip), 385083771c50SDarrick J. Wong TP_STRUCT__entry( 385183771c50SDarrick J. Wong __field(dev_t, dev) 385283771c50SDarrick J. Wong __field(xfs_agnumber_t, agno) 385383771c50SDarrick J. Wong __field(xfs_agino_t, agino) 385483771c50SDarrick J. Wong ), 385583771c50SDarrick J. Wong TP_fast_assign( 385683771c50SDarrick J. Wong __entry->dev = ip->i_mount->m_super->s_dev; 385783771c50SDarrick J. Wong __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino); 385883771c50SDarrick J. Wong __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino); 385983771c50SDarrick J. Wong ), 386083771c50SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agino 0x%x bucket %u", 386183771c50SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 386283771c50SDarrick J. Wong __entry->agno, 386383771c50SDarrick J. Wong __entry->agino, 386483771c50SDarrick J. Wong __entry->agino % XFS_AGI_UNLINKED_BUCKETS) 386583771c50SDarrick J. Wong ); 386683771c50SDarrick J. Wong 38674664c66cSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_ag_inode_class, 38684664c66cSDarrick J. Wong TP_PROTO(struct xfs_inode *ip), 38694664c66cSDarrick J. Wong TP_ARGS(ip), 38704664c66cSDarrick J. Wong TP_STRUCT__entry( 38714664c66cSDarrick J. Wong __field(dev_t, dev) 38724664c66cSDarrick J. Wong __field(xfs_agnumber_t, agno) 38734664c66cSDarrick J. Wong __field(xfs_agino_t, agino) 38744664c66cSDarrick J. Wong ), 38754664c66cSDarrick J. Wong TP_fast_assign( 38764664c66cSDarrick J. Wong __entry->dev = VFS_I(ip)->i_sb->s_dev; 38774664c66cSDarrick J. Wong __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino); 38784664c66cSDarrick J. Wong __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino); 38794664c66cSDarrick J. Wong ), 38809febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agino 0x%x", 38814664c66cSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 38824664c66cSDarrick J. Wong __entry->agno, __entry->agino) 38834664c66cSDarrick J. Wong ) 38844664c66cSDarrick J. Wong 38854664c66cSDarrick J. Wong #define DEFINE_AGINODE_EVENT(name) \ 38864664c66cSDarrick J. Wong DEFINE_EVENT(xfs_ag_inode_class, name, \ 38874664c66cSDarrick J. Wong TP_PROTO(struct xfs_inode *ip), \ 38884664c66cSDarrick J. Wong TP_ARGS(ip)) 38894664c66cSDarrick J. Wong DEFINE_AGINODE_EVENT(xfs_iunlink); 38904664c66cSDarrick J. Wong DEFINE_AGINODE_EVENT(xfs_iunlink_remove); 38914664c66cSDarrick J. Wong 38926772c1f1SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_fs_corrupt_class, 38936772c1f1SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, unsigned int flags), 38946772c1f1SDarrick J. Wong TP_ARGS(mp, flags), 38956772c1f1SDarrick J. Wong TP_STRUCT__entry( 38966772c1f1SDarrick J. Wong __field(dev_t, dev) 38976772c1f1SDarrick J. Wong __field(unsigned int, flags) 38986772c1f1SDarrick J. Wong ), 38996772c1f1SDarrick J. Wong TP_fast_assign( 39006772c1f1SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 39016772c1f1SDarrick J. Wong __entry->flags = flags; 39026772c1f1SDarrick J. Wong ), 39036772c1f1SDarrick J. Wong TP_printk("dev %d:%d flags 0x%x", 39046772c1f1SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 39056772c1f1SDarrick J. Wong __entry->flags) 39066772c1f1SDarrick J. Wong ); 39076772c1f1SDarrick J. Wong #define DEFINE_FS_CORRUPT_EVENT(name) \ 39086772c1f1SDarrick J. Wong DEFINE_EVENT(xfs_fs_corrupt_class, name, \ 39096772c1f1SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, unsigned int flags), \ 39106772c1f1SDarrick J. Wong TP_ARGS(mp, flags)) 39116772c1f1SDarrick J. Wong DEFINE_FS_CORRUPT_EVENT(xfs_fs_mark_sick); 39126772c1f1SDarrick J. Wong DEFINE_FS_CORRUPT_EVENT(xfs_fs_mark_healthy); 3913519841c2SDarrick J. Wong DEFINE_FS_CORRUPT_EVENT(xfs_fs_unfixed_corruption); 39146772c1f1SDarrick J. Wong DEFINE_FS_CORRUPT_EVENT(xfs_rt_mark_sick); 39156772c1f1SDarrick J. Wong DEFINE_FS_CORRUPT_EVENT(xfs_rt_mark_healthy); 3916519841c2SDarrick J. Wong DEFINE_FS_CORRUPT_EVENT(xfs_rt_unfixed_corruption); 39176772c1f1SDarrick J. Wong 39186772c1f1SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_ag_corrupt_class, 39196772c1f1SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, unsigned int flags), 39206772c1f1SDarrick J. Wong TP_ARGS(mp, agno, flags), 39216772c1f1SDarrick J. Wong TP_STRUCT__entry( 39226772c1f1SDarrick J. Wong __field(dev_t, dev) 39236772c1f1SDarrick J. Wong __field(xfs_agnumber_t, agno) 39246772c1f1SDarrick J. Wong __field(unsigned int, flags) 39256772c1f1SDarrick J. Wong ), 39266772c1f1SDarrick J. Wong TP_fast_assign( 39276772c1f1SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 39286772c1f1SDarrick J. Wong __entry->agno = agno; 39296772c1f1SDarrick J. Wong __entry->flags = flags; 39306772c1f1SDarrick J. Wong ), 39319febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x flags 0x%x", 39326772c1f1SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 39336772c1f1SDarrick J. Wong __entry->agno, __entry->flags) 39346772c1f1SDarrick J. Wong ); 39356772c1f1SDarrick J. Wong #define DEFINE_AG_CORRUPT_EVENT(name) \ 39366772c1f1SDarrick J. Wong DEFINE_EVENT(xfs_ag_corrupt_class, name, \ 39376772c1f1SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 39386772c1f1SDarrick J. Wong unsigned int flags), \ 39396772c1f1SDarrick J. Wong TP_ARGS(mp, agno, flags)) 39406772c1f1SDarrick J. Wong DEFINE_AG_CORRUPT_EVENT(xfs_ag_mark_sick); 39416772c1f1SDarrick J. Wong DEFINE_AG_CORRUPT_EVENT(xfs_ag_mark_healthy); 3942519841c2SDarrick J. Wong DEFINE_AG_CORRUPT_EVENT(xfs_ag_unfixed_corruption); 39436772c1f1SDarrick J. Wong 39446772c1f1SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_inode_corrupt_class, 39456772c1f1SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, unsigned int flags), 39466772c1f1SDarrick J. Wong TP_ARGS(ip, flags), 39476772c1f1SDarrick J. Wong TP_STRUCT__entry( 39486772c1f1SDarrick J. Wong __field(dev_t, dev) 39496772c1f1SDarrick J. Wong __field(xfs_ino_t, ino) 39506772c1f1SDarrick J. Wong __field(unsigned int, flags) 39516772c1f1SDarrick J. Wong ), 39526772c1f1SDarrick J. Wong TP_fast_assign( 39536772c1f1SDarrick J. Wong __entry->dev = ip->i_mount->m_super->s_dev; 39546772c1f1SDarrick J. Wong __entry->ino = ip->i_ino; 39556772c1f1SDarrick J. Wong __entry->flags = flags; 39566772c1f1SDarrick J. Wong ), 39576772c1f1SDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx flags 0x%x", 39586772c1f1SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 39596772c1f1SDarrick J. Wong __entry->ino, __entry->flags) 39606772c1f1SDarrick J. Wong ); 39616772c1f1SDarrick J. Wong #define DEFINE_INODE_CORRUPT_EVENT(name) \ 39626772c1f1SDarrick J. Wong DEFINE_EVENT(xfs_inode_corrupt_class, name, \ 39636772c1f1SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, unsigned int flags), \ 39646772c1f1SDarrick J. Wong TP_ARGS(ip, flags)) 39656772c1f1SDarrick J. Wong DEFINE_INODE_CORRUPT_EVENT(xfs_inode_mark_sick); 39666772c1f1SDarrick J. Wong DEFINE_INODE_CORRUPT_EVENT(xfs_inode_mark_healthy); 39676772c1f1SDarrick J. Wong 3968a211432cSDarrick J. Wong TRACE_EVENT(xfs_iwalk_ag, 3969a211432cSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 3970a211432cSDarrick J. Wong xfs_agino_t startino), 3971a211432cSDarrick J. Wong TP_ARGS(mp, agno, startino), 3972a211432cSDarrick J. Wong TP_STRUCT__entry( 3973a211432cSDarrick J. Wong __field(dev_t, dev) 3974a211432cSDarrick J. Wong __field(xfs_agnumber_t, agno) 3975a211432cSDarrick J. Wong __field(xfs_agino_t, startino) 3976a211432cSDarrick J. Wong ), 3977a211432cSDarrick J. Wong TP_fast_assign( 3978a211432cSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3979a211432cSDarrick J. Wong __entry->agno = agno; 3980a211432cSDarrick J. Wong __entry->startino = startino; 3981a211432cSDarrick J. Wong ), 39829febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x startino 0x%x", 3983a211432cSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), __entry->agno, 3984a211432cSDarrick J. Wong __entry->startino) 3985a211432cSDarrick J. Wong ) 3986a211432cSDarrick J. Wong 3987a211432cSDarrick J. Wong TRACE_EVENT(xfs_iwalk_ag_rec, 3988a211432cSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 3989a211432cSDarrick J. Wong struct xfs_inobt_rec_incore *irec), 3990a211432cSDarrick J. Wong TP_ARGS(mp, agno, irec), 3991a211432cSDarrick J. Wong TP_STRUCT__entry( 3992a211432cSDarrick J. Wong __field(dev_t, dev) 3993a211432cSDarrick J. Wong __field(xfs_agnumber_t, agno) 3994a211432cSDarrick J. Wong __field(xfs_agino_t, startino) 3995a211432cSDarrick J. Wong __field(uint64_t, freemask) 3996a211432cSDarrick J. Wong ), 3997a211432cSDarrick J. Wong TP_fast_assign( 3998a211432cSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3999a211432cSDarrick J. Wong __entry->agno = agno; 4000a211432cSDarrick J. Wong __entry->startino = irec->ir_startino; 4001a211432cSDarrick J. Wong __entry->freemask = irec->ir_free; 4002a211432cSDarrick J. Wong ), 40039febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x startino 0x%x freemask 0x%llx", 4004a211432cSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), __entry->agno, 4005a211432cSDarrick J. Wong __entry->startino, __entry->freemask) 4006a211432cSDarrick J. Wong ) 4007a211432cSDarrick J. Wong 400840786717SDarrick J. Wong TRACE_EVENT(xfs_pwork_init, 400940786717SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, unsigned int nr_threads, pid_t pid), 401040786717SDarrick J. Wong TP_ARGS(mp, nr_threads, pid), 401140786717SDarrick J. Wong TP_STRUCT__entry( 401240786717SDarrick J. Wong __field(dev_t, dev) 401340786717SDarrick J. Wong __field(unsigned int, nr_threads) 401440786717SDarrick J. Wong __field(pid_t, pid) 401540786717SDarrick J. Wong ), 401640786717SDarrick J. Wong TP_fast_assign( 401740786717SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 401840786717SDarrick J. Wong __entry->nr_threads = nr_threads; 401940786717SDarrick J. Wong __entry->pid = pid; 402040786717SDarrick J. Wong ), 402140786717SDarrick J. Wong TP_printk("dev %d:%d nr_threads %u pid %u", 402240786717SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 402340786717SDarrick J. Wong __entry->nr_threads, __entry->pid) 402440786717SDarrick J. Wong ) 402540786717SDarrick J. Wong 40260ad95687SDave Chinner DECLARE_EVENT_CLASS(xfs_kmem_class, 40270ad95687SDave Chinner TP_PROTO(ssize_t size, int flags, unsigned long caller_ip), 40280ad95687SDave Chinner TP_ARGS(size, flags, caller_ip), 40290ad95687SDave Chinner TP_STRUCT__entry( 40300ad95687SDave Chinner __field(ssize_t, size) 40310ad95687SDave Chinner __field(int, flags) 40320ad95687SDave Chinner __field(unsigned long, caller_ip) 40330ad95687SDave Chinner ), 40340ad95687SDave Chinner TP_fast_assign( 40350ad95687SDave Chinner __entry->size = size; 40360ad95687SDave Chinner __entry->flags = flags; 40370ad95687SDave Chinner __entry->caller_ip = caller_ip; 40380ad95687SDave Chinner ), 40390ad95687SDave Chinner TP_printk("size %zd flags 0x%x caller %pS", 40400ad95687SDave Chinner __entry->size, 40410ad95687SDave Chinner __entry->flags, 40420ad95687SDave Chinner (char *)__entry->caller_ip) 40430ad95687SDave Chinner ) 40440ad95687SDave Chinner 40450ad95687SDave Chinner #define DEFINE_KMEM_EVENT(name) \ 40460ad95687SDave Chinner DEFINE_EVENT(xfs_kmem_class, name, \ 40470ad95687SDave Chinner TP_PROTO(ssize_t size, int flags, unsigned long caller_ip), \ 40480ad95687SDave Chinner TP_ARGS(size, flags, caller_ip)) 40490ad95687SDave Chinner DEFINE_KMEM_EVENT(kmem_alloc); 40500ad95687SDave Chinner 405113eaec4bSDarrick J. Wong TRACE_EVENT(xfs_check_new_dalign, 405213eaec4bSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, int new_dalign, xfs_ino_t calc_rootino), 405313eaec4bSDarrick J. Wong TP_ARGS(mp, new_dalign, calc_rootino), 405413eaec4bSDarrick J. Wong TP_STRUCT__entry( 405513eaec4bSDarrick J. Wong __field(dev_t, dev) 405613eaec4bSDarrick J. Wong __field(int, new_dalign) 405713eaec4bSDarrick J. Wong __field(xfs_ino_t, sb_rootino) 405813eaec4bSDarrick J. Wong __field(xfs_ino_t, calc_rootino) 405913eaec4bSDarrick J. Wong ), 406013eaec4bSDarrick J. Wong TP_fast_assign( 406113eaec4bSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 406213eaec4bSDarrick J. Wong __entry->new_dalign = new_dalign; 406313eaec4bSDarrick J. Wong __entry->sb_rootino = mp->m_sb.sb_rootino; 406413eaec4bSDarrick J. Wong __entry->calc_rootino = calc_rootino; 406513eaec4bSDarrick J. Wong ), 4066af6265a0SDarrick J. Wong TP_printk("dev %d:%d new_dalign %d sb_rootino 0x%llx calc_rootino 0x%llx", 406713eaec4bSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 406813eaec4bSDarrick J. Wong __entry->new_dalign, __entry->sb_rootino, 406913eaec4bSDarrick J. Wong __entry->calc_rootino) 407013eaec4bSDarrick J. Wong ) 407113eaec4bSDarrick J. Wong 4072e06536a6SDarrick J. Wong TRACE_EVENT(xfs_btree_commit_afakeroot, 4073e06536a6SDarrick J. Wong TP_PROTO(struct xfs_btree_cur *cur), 4074e06536a6SDarrick J. Wong TP_ARGS(cur), 4075e06536a6SDarrick J. Wong TP_STRUCT__entry( 4076e06536a6SDarrick J. Wong __field(dev_t, dev) 4077e06536a6SDarrick J. Wong __field(xfs_btnum_t, btnum) 4078e06536a6SDarrick J. Wong __field(xfs_agnumber_t, agno) 4079e06536a6SDarrick J. Wong __field(xfs_agblock_t, agbno) 4080e06536a6SDarrick J. Wong __field(unsigned int, levels) 4081e06536a6SDarrick J. Wong __field(unsigned int, blocks) 4082e06536a6SDarrick J. Wong ), 4083e06536a6SDarrick J. Wong TP_fast_assign( 4084e06536a6SDarrick J. Wong __entry->dev = cur->bc_mp->m_super->s_dev; 4085e06536a6SDarrick J. Wong __entry->btnum = cur->bc_btnum; 408650f02fe3SDave Chinner __entry->agno = cur->bc_ag.pag->pag_agno; 4087e06536a6SDarrick J. Wong __entry->agbno = cur->bc_ag.afake->af_root; 4088e06536a6SDarrick J. Wong __entry->levels = cur->bc_ag.afake->af_levels; 4089e06536a6SDarrick J. Wong __entry->blocks = cur->bc_ag.afake->af_blocks; 4090e06536a6SDarrick J. Wong ), 40919febf39dSDarrick J. Wong TP_printk("dev %d:%d btree %s agno 0x%x levels %u blocks %u root %u", 4092e06536a6SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 4093e06536a6SDarrick J. Wong __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 4094e06536a6SDarrick J. Wong __entry->agno, 4095e06536a6SDarrick J. Wong __entry->levels, 4096e06536a6SDarrick J. Wong __entry->blocks, 4097e06536a6SDarrick J. Wong __entry->agbno) 4098e06536a6SDarrick J. Wong ) 4099e06536a6SDarrick J. Wong 4100349e1c03SDarrick J. Wong TRACE_EVENT(xfs_btree_commit_ifakeroot, 4101349e1c03SDarrick J. Wong TP_PROTO(struct xfs_btree_cur *cur), 4102349e1c03SDarrick J. Wong TP_ARGS(cur), 4103349e1c03SDarrick J. Wong TP_STRUCT__entry( 4104349e1c03SDarrick J. Wong __field(dev_t, dev) 4105349e1c03SDarrick J. Wong __field(xfs_btnum_t, btnum) 4106349e1c03SDarrick J. Wong __field(xfs_agnumber_t, agno) 4107349e1c03SDarrick J. Wong __field(xfs_agino_t, agino) 4108349e1c03SDarrick J. Wong __field(unsigned int, levels) 4109349e1c03SDarrick J. Wong __field(unsigned int, blocks) 4110349e1c03SDarrick J. Wong __field(int, whichfork) 4111349e1c03SDarrick J. Wong ), 4112349e1c03SDarrick J. Wong TP_fast_assign( 4113349e1c03SDarrick J. Wong __entry->dev = cur->bc_mp->m_super->s_dev; 4114349e1c03SDarrick J. Wong __entry->btnum = cur->bc_btnum; 4115349e1c03SDarrick J. Wong __entry->agno = XFS_INO_TO_AGNO(cur->bc_mp, 4116349e1c03SDarrick J. Wong cur->bc_ino.ip->i_ino); 4117349e1c03SDarrick J. Wong __entry->agino = XFS_INO_TO_AGINO(cur->bc_mp, 4118349e1c03SDarrick J. Wong cur->bc_ino.ip->i_ino); 4119349e1c03SDarrick J. Wong __entry->levels = cur->bc_ino.ifake->if_levels; 4120349e1c03SDarrick J. Wong __entry->blocks = cur->bc_ino.ifake->if_blocks; 4121349e1c03SDarrick J. Wong __entry->whichfork = cur->bc_ino.whichfork; 4122349e1c03SDarrick J. Wong ), 41239febf39dSDarrick J. Wong TP_printk("dev %d:%d btree %s agno 0x%x agino 0x%x whichfork %s levels %u blocks %u", 4124349e1c03SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 4125349e1c03SDarrick J. Wong __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 4126349e1c03SDarrick J. Wong __entry->agno, 4127349e1c03SDarrick J. Wong __entry->agino, 4128f93f85f7SDarrick J. Wong __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS), 4129349e1c03SDarrick J. Wong __entry->levels, 4130349e1c03SDarrick J. Wong __entry->blocks) 4131349e1c03SDarrick J. Wong ) 4132349e1c03SDarrick J. Wong 413360e3d707SDarrick J. Wong TRACE_EVENT(xfs_btree_bload_level_geometry, 413460e3d707SDarrick J. Wong TP_PROTO(struct xfs_btree_cur *cur, unsigned int level, 413560e3d707SDarrick J. Wong uint64_t nr_this_level, unsigned int nr_per_block, 413660e3d707SDarrick J. Wong unsigned int desired_npb, uint64_t blocks, 413760e3d707SDarrick J. Wong uint64_t blocks_with_extra), 413860e3d707SDarrick J. Wong TP_ARGS(cur, level, nr_this_level, nr_per_block, desired_npb, blocks, 413960e3d707SDarrick J. Wong blocks_with_extra), 414060e3d707SDarrick J. Wong TP_STRUCT__entry( 414160e3d707SDarrick J. Wong __field(dev_t, dev) 414260e3d707SDarrick J. Wong __field(xfs_btnum_t, btnum) 414360e3d707SDarrick J. Wong __field(unsigned int, level) 414460e3d707SDarrick J. Wong __field(unsigned int, nlevels) 414560e3d707SDarrick J. Wong __field(uint64_t, nr_this_level) 414660e3d707SDarrick J. Wong __field(unsigned int, nr_per_block) 414760e3d707SDarrick J. Wong __field(unsigned int, desired_npb) 414860e3d707SDarrick J. Wong __field(unsigned long long, blocks) 414960e3d707SDarrick J. Wong __field(unsigned long long, blocks_with_extra) 415060e3d707SDarrick J. Wong ), 415160e3d707SDarrick J. Wong TP_fast_assign( 415260e3d707SDarrick J. Wong __entry->dev = cur->bc_mp->m_super->s_dev; 415360e3d707SDarrick J. Wong __entry->btnum = cur->bc_btnum; 415460e3d707SDarrick J. Wong __entry->level = level; 415560e3d707SDarrick J. Wong __entry->nlevels = cur->bc_nlevels; 415660e3d707SDarrick J. Wong __entry->nr_this_level = nr_this_level; 415760e3d707SDarrick J. Wong __entry->nr_per_block = nr_per_block; 415860e3d707SDarrick J. Wong __entry->desired_npb = desired_npb; 415960e3d707SDarrick J. Wong __entry->blocks = blocks; 416060e3d707SDarrick J. Wong __entry->blocks_with_extra = blocks_with_extra; 416160e3d707SDarrick J. Wong ), 416260e3d707SDarrick J. Wong TP_printk("dev %d:%d btree %s level %u/%u nr_this_level %llu nr_per_block %u desired_npb %u blocks %llu blocks_with_extra %llu", 416360e3d707SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 416460e3d707SDarrick J. Wong __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 416560e3d707SDarrick J. Wong __entry->level, 416660e3d707SDarrick J. Wong __entry->nlevels, 416760e3d707SDarrick J. Wong __entry->nr_this_level, 416860e3d707SDarrick J. Wong __entry->nr_per_block, 416960e3d707SDarrick J. Wong __entry->desired_npb, 417060e3d707SDarrick J. Wong __entry->blocks, 417160e3d707SDarrick J. Wong __entry->blocks_with_extra) 417260e3d707SDarrick J. Wong ) 417360e3d707SDarrick J. Wong 417460e3d707SDarrick J. Wong TRACE_EVENT(xfs_btree_bload_block, 417560e3d707SDarrick J. Wong TP_PROTO(struct xfs_btree_cur *cur, unsigned int level, 417660e3d707SDarrick J. Wong uint64_t block_idx, uint64_t nr_blocks, 417760e3d707SDarrick J. Wong union xfs_btree_ptr *ptr, unsigned int nr_records), 417860e3d707SDarrick J. Wong TP_ARGS(cur, level, block_idx, nr_blocks, ptr, nr_records), 417960e3d707SDarrick J. Wong TP_STRUCT__entry( 418060e3d707SDarrick J. Wong __field(dev_t, dev) 418160e3d707SDarrick J. Wong __field(xfs_btnum_t, btnum) 418260e3d707SDarrick J. Wong __field(unsigned int, level) 418360e3d707SDarrick J. Wong __field(unsigned long long, block_idx) 418460e3d707SDarrick J. Wong __field(unsigned long long, nr_blocks) 418560e3d707SDarrick J. Wong __field(xfs_agnumber_t, agno) 418660e3d707SDarrick J. Wong __field(xfs_agblock_t, agbno) 418760e3d707SDarrick J. Wong __field(unsigned int, nr_records) 418860e3d707SDarrick J. Wong ), 418960e3d707SDarrick J. Wong TP_fast_assign( 419060e3d707SDarrick J. Wong __entry->dev = cur->bc_mp->m_super->s_dev; 419160e3d707SDarrick J. Wong __entry->btnum = cur->bc_btnum; 419260e3d707SDarrick J. Wong __entry->level = level; 419360e3d707SDarrick J. Wong __entry->block_idx = block_idx; 419460e3d707SDarrick J. Wong __entry->nr_blocks = nr_blocks; 419560e3d707SDarrick J. Wong if (cur->bc_flags & XFS_BTREE_LONG_PTRS) { 419660e3d707SDarrick J. Wong xfs_fsblock_t fsb = be64_to_cpu(ptr->l); 419760e3d707SDarrick J. Wong 419860e3d707SDarrick J. Wong __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsb); 419960e3d707SDarrick J. Wong __entry->agbno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsb); 420060e3d707SDarrick J. Wong } else { 420150f02fe3SDave Chinner __entry->agno = cur->bc_ag.pag->pag_agno; 420260e3d707SDarrick J. Wong __entry->agbno = be32_to_cpu(ptr->s); 420360e3d707SDarrick J. Wong } 420460e3d707SDarrick J. Wong __entry->nr_records = nr_records; 420560e3d707SDarrick J. Wong ), 4206f7b08163SDarrick J. Wong TP_printk("dev %d:%d btree %s level %u block %llu/%llu agno 0x%x agbno 0x%x recs %u", 420760e3d707SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 420860e3d707SDarrick J. Wong __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 420960e3d707SDarrick J. Wong __entry->level, 421060e3d707SDarrick J. Wong __entry->block_idx, 421160e3d707SDarrick J. Wong __entry->nr_blocks, 421260e3d707SDarrick J. Wong __entry->agno, 421360e3d707SDarrick J. Wong __entry->agbno, 421460e3d707SDarrick J. Wong __entry->nr_records) 421560e3d707SDarrick J. Wong ) 421660e3d707SDarrick J. Wong 421706dbf82bSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_timestamp_range_class, 421806dbf82bSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, time64_t min, time64_t max), 421906dbf82bSDarrick J. Wong TP_ARGS(mp, min, max), 422006dbf82bSDarrick J. Wong TP_STRUCT__entry( 422106dbf82bSDarrick J. Wong __field(dev_t, dev) 422206dbf82bSDarrick J. Wong __field(long long, min) 422306dbf82bSDarrick J. Wong __field(long long, max) 422406dbf82bSDarrick J. Wong ), 422506dbf82bSDarrick J. Wong TP_fast_assign( 422606dbf82bSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 422706dbf82bSDarrick J. Wong __entry->min = min; 422806dbf82bSDarrick J. Wong __entry->max = max; 422906dbf82bSDarrick J. Wong ), 423006dbf82bSDarrick J. Wong TP_printk("dev %d:%d min %lld max %lld", 423106dbf82bSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 423206dbf82bSDarrick J. Wong __entry->min, 423306dbf82bSDarrick J. Wong __entry->max) 423406dbf82bSDarrick J. Wong ) 423506dbf82bSDarrick J. Wong 423606dbf82bSDarrick J. Wong #define DEFINE_TIMESTAMP_RANGE_EVENT(name) \ 423706dbf82bSDarrick J. Wong DEFINE_EVENT(xfs_timestamp_range_class, name, \ 423806dbf82bSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, long long min, long long max), \ 423906dbf82bSDarrick J. Wong TP_ARGS(mp, min, max)) 424006dbf82bSDarrick J. Wong DEFINE_TIMESTAMP_RANGE_EVENT(xfs_inode_timestamp_range); 424106dbf82bSDarrick J. Wong DEFINE_TIMESTAMP_RANGE_EVENT(xfs_quota_expiry_range); 424206dbf82bSDarrick J. Wong 4243b26b2bf1SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_icwalk_class, 4244b26b2bf1SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_icwalk *icw, 424538899f80SDarrick J. Wong unsigned long caller_ip), 4246b26b2bf1SDarrick J. Wong TP_ARGS(mp, icw, caller_ip), 424738899f80SDarrick J. Wong TP_STRUCT__entry( 424838899f80SDarrick J. Wong __field(dev_t, dev) 424938899f80SDarrick J. Wong __field(__u32, flags) 425038899f80SDarrick J. Wong __field(uint32_t, uid) 425138899f80SDarrick J. Wong __field(uint32_t, gid) 425238899f80SDarrick J. Wong __field(prid_t, prid) 425338899f80SDarrick J. Wong __field(__u64, min_file_size) 425410be350bSDarrick J. Wong __field(long, scan_limit) 425538899f80SDarrick J. Wong __field(unsigned long, caller_ip) 425638899f80SDarrick J. Wong ), 425738899f80SDarrick J. Wong TP_fast_assign( 425838899f80SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 4259b26b2bf1SDarrick J. Wong __entry->flags = icw ? icw->icw_flags : 0; 4260b26b2bf1SDarrick J. Wong __entry->uid = icw ? from_kuid(mp->m_super->s_user_ns, 4261b26b2bf1SDarrick J. Wong icw->icw_uid) : 0; 4262b26b2bf1SDarrick J. Wong __entry->gid = icw ? from_kgid(mp->m_super->s_user_ns, 4263b26b2bf1SDarrick J. Wong icw->icw_gid) : 0; 4264b26b2bf1SDarrick J. Wong __entry->prid = icw ? icw->icw_prid : 0; 4265b26b2bf1SDarrick J. Wong __entry->min_file_size = icw ? icw->icw_min_file_size : 0; 4266b26b2bf1SDarrick J. Wong __entry->scan_limit = icw ? icw->icw_scan_limit : 0; 426738899f80SDarrick J. Wong __entry->caller_ip = caller_ip; 426838899f80SDarrick J. Wong ), 426910be350bSDarrick J. Wong TP_printk("dev %d:%d flags 0x%x uid %u gid %u prid %u minsize %llu scan_limit %ld caller %pS", 427038899f80SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 427138899f80SDarrick J. Wong __entry->flags, 427238899f80SDarrick J. Wong __entry->uid, 427338899f80SDarrick J. Wong __entry->gid, 427438899f80SDarrick J. Wong __entry->prid, 427538899f80SDarrick J. Wong __entry->min_file_size, 4276f1bc5c56SDarrick J. Wong __entry->scan_limit, 427738899f80SDarrick J. Wong (char *)__entry->caller_ip) 427838899f80SDarrick J. Wong ); 4279b26b2bf1SDarrick J. Wong #define DEFINE_ICWALK_EVENT(name) \ 4280b26b2bf1SDarrick J. Wong DEFINE_EVENT(xfs_icwalk_class, name, \ 4281b26b2bf1SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_icwalk *icw, \ 428238899f80SDarrick J. Wong unsigned long caller_ip), \ 4283b26b2bf1SDarrick J. Wong TP_ARGS(mp, icw, caller_ip)) 4284b26b2bf1SDarrick J. Wong DEFINE_ICWALK_EVENT(xfs_ioc_free_eofblocks); 4285b26b2bf1SDarrick J. Wong DEFINE_ICWALK_EVENT(xfs_blockgc_free_space); 428638899f80SDarrick J. Wong 4287956f6daaSDave Chinner TRACE_DEFINE_ENUM(XLOG_STATE_ACTIVE); 4288956f6daaSDave Chinner TRACE_DEFINE_ENUM(XLOG_STATE_WANT_SYNC); 4289956f6daaSDave Chinner TRACE_DEFINE_ENUM(XLOG_STATE_SYNCING); 4290956f6daaSDave Chinner TRACE_DEFINE_ENUM(XLOG_STATE_DONE_SYNC); 4291956f6daaSDave Chinner TRACE_DEFINE_ENUM(XLOG_STATE_CALLBACK); 4292956f6daaSDave Chinner TRACE_DEFINE_ENUM(XLOG_STATE_DIRTY); 4293956f6daaSDave Chinner 4294956f6daaSDave Chinner DECLARE_EVENT_CLASS(xlog_iclog_class, 4295956f6daaSDave Chinner TP_PROTO(struct xlog_in_core *iclog, unsigned long caller_ip), 4296956f6daaSDave Chinner TP_ARGS(iclog, caller_ip), 4297956f6daaSDave Chinner TP_STRUCT__entry( 4298956f6daaSDave Chinner __field(dev_t, dev) 4299956f6daaSDave Chinner __field(uint32_t, state) 4300956f6daaSDave Chinner __field(int32_t, refcount) 4301956f6daaSDave Chinner __field(uint32_t, offset) 4302b2ae3a9eSDave Chinner __field(uint32_t, flags) 4303956f6daaSDave Chinner __field(unsigned long long, lsn) 4304956f6daaSDave Chinner __field(unsigned long, caller_ip) 4305956f6daaSDave Chinner ), 4306956f6daaSDave Chinner TP_fast_assign( 4307956f6daaSDave Chinner __entry->dev = iclog->ic_log->l_mp->m_super->s_dev; 4308956f6daaSDave Chinner __entry->state = iclog->ic_state; 4309956f6daaSDave Chinner __entry->refcount = atomic_read(&iclog->ic_refcnt); 4310956f6daaSDave Chinner __entry->offset = iclog->ic_offset; 4311b2ae3a9eSDave Chinner __entry->flags = iclog->ic_flags; 4312956f6daaSDave Chinner __entry->lsn = be64_to_cpu(iclog->ic_header.h_lsn); 4313956f6daaSDave Chinner __entry->caller_ip = caller_ip; 4314956f6daaSDave Chinner ), 4315b2ae3a9eSDave Chinner TP_printk("dev %d:%d state %s refcnt %d offset %u lsn 0x%llx flags %s caller %pS", 4316956f6daaSDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 4317956f6daaSDave Chinner __print_symbolic(__entry->state, XLOG_STATE_STRINGS), 4318956f6daaSDave Chinner __entry->refcount, 4319956f6daaSDave Chinner __entry->offset, 4320956f6daaSDave Chinner __entry->lsn, 4321b2ae3a9eSDave Chinner __print_flags(__entry->flags, "|", XLOG_ICL_STRINGS), 4322956f6daaSDave Chinner (char *)__entry->caller_ip) 4323956f6daaSDave Chinner 4324956f6daaSDave Chinner ); 4325956f6daaSDave Chinner 4326956f6daaSDave Chinner #define DEFINE_ICLOG_EVENT(name) \ 4327956f6daaSDave Chinner DEFINE_EVENT(xlog_iclog_class, name, \ 4328956f6daaSDave Chinner TP_PROTO(struct xlog_in_core *iclog, unsigned long caller_ip), \ 4329956f6daaSDave Chinner TP_ARGS(iclog, caller_ip)) 4330956f6daaSDave Chinner 4331956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_activate); 4332956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_clean); 4333956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_callback); 4334956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_callbacks_start); 4335956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_callbacks_done); 4336956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_force); 4337956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_force_lsn); 4338956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_get_space); 4339956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_release); 4340956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_switch); 4341956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_sync); 4342956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_syncing); 4343956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_sync_done); 4344956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_want_sync); 4345956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_wait_on); 4346956f6daaSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_write); 4347956f6daaSDave Chinner 4348e0c41089SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_UNINIT); 4349e0c41089SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_SF_ADD); 4350e5d5596aSDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_SF_REMOVE); 4351fdaf1bb3SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_LEAF_ADD); 4352e5d5596aSDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_LEAF_REMOVE); 4353fdaf1bb3SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_NODE_ADD); 4354e5d5596aSDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_NODE_REMOVE); 43557d035336SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_LEAF_SET_RMT); 43562157d169SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_LEAF_ALLOC_RMT); 43577d035336SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_LEAF_REPLACE); 4358411b434aSDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_LEAF_REMOVE_OLD); 43592e7ef218SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_LEAF_REMOVE_RMT); 4360b11fa61bSDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_LEAF_REMOVE_ATTR); 43617d035336SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_NODE_SET_RMT); 43627d035336SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_NODE_ALLOC_RMT); 43637d035336SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_NODE_REPLACE); 4364411b434aSDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_NODE_REMOVE_OLD); 43652e7ef218SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_NODE_REMOVE_RMT); 4366b11fa61bSDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_NODE_REMOVE_ATTR); 4367b11fa61bSDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_DONE); 4368e0c41089SDave Chinner 4369df082631SAllison Henderson DECLARE_EVENT_CLASS(xfs_das_state_class, 4370df082631SAllison Henderson TP_PROTO(int das, struct xfs_inode *ip), 4371df082631SAllison Henderson TP_ARGS(das, ip), 4372df082631SAllison Henderson TP_STRUCT__entry( 4373df082631SAllison Henderson __field(int, das) 4374df082631SAllison Henderson __field(xfs_ino_t, ino) 4375df082631SAllison Henderson ), 4376df082631SAllison Henderson TP_fast_assign( 4377df082631SAllison Henderson __entry->das = das; 4378df082631SAllison Henderson __entry->ino = ip->i_ino; 4379df082631SAllison Henderson ), 4380e0c41089SDave Chinner TP_printk("state change %s ino 0x%llx", 4381e0c41089SDave Chinner __print_symbolic(__entry->das, XFS_DAS_STRINGS), 4382e0c41089SDave Chinner __entry->ino) 4383df082631SAllison Henderson ) 4384df082631SAllison Henderson 4385df082631SAllison Henderson #define DEFINE_DAS_STATE_EVENT(name) \ 4386df082631SAllison Henderson DEFINE_EVENT(xfs_das_state_class, name, \ 4387df082631SAllison Henderson TP_PROTO(int das, struct xfs_inode *ip), \ 4388df082631SAllison Henderson TP_ARGS(das, ip)) 4389df082631SAllison Henderson DEFINE_DAS_STATE_EVENT(xfs_attr_sf_addname_return); 4390df082631SAllison Henderson DEFINE_DAS_STATE_EVENT(xfs_attr_set_iter_return); 4391cd1549d6SAllison Henderson DEFINE_DAS_STATE_EVENT(xfs_attr_leaf_addname_return); 4392df082631SAllison Henderson DEFINE_DAS_STATE_EVENT(xfs_attr_node_addname_return); 4393df082631SAllison Henderson DEFINE_DAS_STATE_EVENT(xfs_attr_remove_iter_return); 43947d035336SDave Chinner DEFINE_DAS_STATE_EVENT(xfs_attr_rmtval_alloc); 4395df082631SAllison Henderson DEFINE_DAS_STATE_EVENT(xfs_attr_rmtval_remove_return); 4396709c8632SDave Chinner DEFINE_DAS_STATE_EVENT(xfs_attr_defer_add); 4397709c8632SDave Chinner DEFINE_DAS_STATE_EVENT(xfs_attr_defer_replace); 4398709c8632SDave Chinner DEFINE_DAS_STATE_EVENT(xfs_attr_defer_remove); 4399709c8632SDave Chinner 44007f89c838SDarrick J. Wong 44017f89c838SDarrick J. Wong TRACE_EVENT(xfs_force_shutdown, 44027f89c838SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, int ptag, int flags, const char *fname, 44037f89c838SDarrick J. Wong int line_num), 44047f89c838SDarrick J. Wong TP_ARGS(mp, ptag, flags, fname, line_num), 44057f89c838SDarrick J. Wong TP_STRUCT__entry( 44067f89c838SDarrick J. Wong __field(dev_t, dev) 44077f89c838SDarrick J. Wong __field(int, ptag) 44087f89c838SDarrick J. Wong __field(int, flags) 44097f89c838SDarrick J. Wong __string(fname, fname) 44107f89c838SDarrick J. Wong __field(int, line_num) 44117f89c838SDarrick J. Wong ), 44127f89c838SDarrick J. Wong TP_fast_assign( 44137f89c838SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 44147f89c838SDarrick J. Wong __entry->ptag = ptag; 44157f89c838SDarrick J. Wong __entry->flags = flags; 44167f89c838SDarrick J. Wong __assign_str(fname, fname); 44177f89c838SDarrick J. Wong __entry->line_num = line_num; 44187f89c838SDarrick J. Wong ), 44197f89c838SDarrick J. Wong TP_printk("dev %d:%d tag %s flags %s file %s line_num %d", 44207f89c838SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 44217f89c838SDarrick J. Wong __print_flags(__entry->ptag, "|", XFS_PTAG_STRINGS), 44227f89c838SDarrick J. Wong __print_flags(__entry->flags, "|", XFS_SHUTDOWN_STRINGS), 44237f89c838SDarrick J. Wong __get_str(fname), 44247f89c838SDarrick J. Wong __entry->line_num) 44257f89c838SDarrick J. Wong ); 44267f89c838SDarrick J. Wong 4427d5c88131SDarrick J. Wong #ifdef CONFIG_XFS_DRAIN_INTENTS 4428d5c88131SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_perag_intents_class, 4429d5c88131SDarrick J. Wong TP_PROTO(struct xfs_perag *pag, void *caller_ip), 4430d5c88131SDarrick J. Wong TP_ARGS(pag, caller_ip), 4431d5c88131SDarrick J. Wong TP_STRUCT__entry( 4432d5c88131SDarrick J. Wong __field(dev_t, dev) 4433d5c88131SDarrick J. Wong __field(xfs_agnumber_t, agno) 4434d5c88131SDarrick J. Wong __field(long, nr_intents) 4435d5c88131SDarrick J. Wong __field(void *, caller_ip) 4436d5c88131SDarrick J. Wong ), 4437d5c88131SDarrick J. Wong TP_fast_assign( 4438d5c88131SDarrick J. Wong __entry->dev = pag->pag_mount->m_super->s_dev; 4439d5c88131SDarrick J. Wong __entry->agno = pag->pag_agno; 4440d5c88131SDarrick J. Wong __entry->nr_intents = atomic_read(&pag->pag_intents_drain.dr_count); 4441d5c88131SDarrick J. Wong __entry->caller_ip = caller_ip; 4442d5c88131SDarrick J. Wong ), 4443d5c88131SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x intents %ld caller %pS", 4444d5c88131SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 4445d5c88131SDarrick J. Wong __entry->agno, 4446d5c88131SDarrick J. Wong __entry->nr_intents, 4447d5c88131SDarrick J. Wong __entry->caller_ip) 4448d5c88131SDarrick J. Wong ); 4449d5c88131SDarrick J. Wong 4450d5c88131SDarrick J. Wong #define DEFINE_PERAG_INTENTS_EVENT(name) \ 4451d5c88131SDarrick J. Wong DEFINE_EVENT(xfs_perag_intents_class, name, \ 4452d5c88131SDarrick J. Wong TP_PROTO(struct xfs_perag *pag, void *caller_ip), \ 4453d5c88131SDarrick J. Wong TP_ARGS(pag, caller_ip)) 4454d5c88131SDarrick J. Wong DEFINE_PERAG_INTENTS_EVENT(xfs_perag_intent_hold); 4455d5c88131SDarrick J. Wong DEFINE_PERAG_INTENTS_EVENT(xfs_perag_intent_rele); 4456d5c88131SDarrick J. Wong DEFINE_PERAG_INTENTS_EVENT(xfs_perag_wait_intents); 4457d5c88131SDarrick J. Wong 4458d5c88131SDarrick J. Wong #endif /* CONFIG_XFS_DRAIN_INTENTS */ 4459d5c88131SDarrick J. Wong 4460c59d87c4SChristoph Hellwig #endif /* _TRACE_XFS_H */ 4461c59d87c4SChristoph Hellwig 4462c59d87c4SChristoph Hellwig #undef TRACE_INCLUDE_PATH 4463c59d87c4SChristoph Hellwig #define TRACE_INCLUDE_PATH . 4464c59d87c4SChristoph Hellwig #define TRACE_INCLUDE_FILE xfs_trace 4465c59d87c4SChristoph Hellwig #include <trace/define_trace.h> 4466