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, 675bd4f5d09SDave Chinner TP_PROTO(struct xfs_perag *pag, xfs_ino_t ino, xfs_extlen_t free), 676bd4f5d09SDave Chinner TP_ARGS(pag, ino, free), 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 if (pag) { 688571e2592SDave Chinner __entry->agno = pag->pag_agno; 689571e2592SDave Chinner __entry->streams = atomic_read(&pag->pagf_fstrms); 690571e2592SDave Chinner } else { 691571e2592SDave Chinner __entry->agno = NULLAGNUMBER; 692571e2592SDave Chinner __entry->streams = 0; 693571e2592SDave Chinner } 694b94acd47SChristoph Hellwig __entry->free = free; 695b94acd47SChristoph Hellwig ), 696571e2592SDave Chinner TP_printk("dev %d:%d ino 0x%llx agno 0x%x streams %d free %d", 697b94acd47SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 698b94acd47SChristoph Hellwig __entry->ino, 699b94acd47SChristoph Hellwig __entry->agno, 700b94acd47SChristoph Hellwig __entry->streams, 701571e2592SDave Chinner __entry->free) 702b94acd47SChristoph Hellwig ); 703b94acd47SChristoph Hellwig 704c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_lock_class, 705c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, unsigned lock_flags, 706c59d87c4SChristoph Hellwig unsigned long caller_ip), 707c59d87c4SChristoph Hellwig TP_ARGS(ip, lock_flags, caller_ip), 708c59d87c4SChristoph Hellwig TP_STRUCT__entry( 709c59d87c4SChristoph Hellwig __field(dev_t, dev) 710c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 711c59d87c4SChristoph Hellwig __field(int, lock_flags) 712c59d87c4SChristoph Hellwig __field(unsigned long, caller_ip) 713c59d87c4SChristoph Hellwig ), 714c59d87c4SChristoph Hellwig TP_fast_assign( 715c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 716c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 717c59d87c4SChristoph Hellwig __entry->lock_flags = lock_flags; 718c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 719c59d87c4SChristoph Hellwig ), 720aff68a55SDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx flags %s caller %pS", 721c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 722c59d87c4SChristoph Hellwig __entry->ino, 723c59d87c4SChristoph Hellwig __print_flags(__entry->lock_flags, "|", XFS_LOCK_FLAGS), 724c59d87c4SChristoph Hellwig (void *)__entry->caller_ip) 725c59d87c4SChristoph Hellwig ) 726c59d87c4SChristoph Hellwig 727c59d87c4SChristoph Hellwig #define DEFINE_LOCK_EVENT(name) \ 728c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_lock_class, name, \ 729c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, unsigned lock_flags, \ 730c59d87c4SChristoph Hellwig unsigned long caller_ip), \ 731c59d87c4SChristoph Hellwig TP_ARGS(ip, lock_flags, caller_ip)) 732c59d87c4SChristoph Hellwig DEFINE_LOCK_EVENT(xfs_ilock); 733c59d87c4SChristoph Hellwig DEFINE_LOCK_EVENT(xfs_ilock_nowait); 734c59d87c4SChristoph Hellwig DEFINE_LOCK_EVENT(xfs_ilock_demote); 735c59d87c4SChristoph Hellwig DEFINE_LOCK_EVENT(xfs_iunlock); 736c59d87c4SChristoph Hellwig 737c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_inode_class, 738c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip), 739c59d87c4SChristoph Hellwig TP_ARGS(ip), 740c59d87c4SChristoph Hellwig TP_STRUCT__entry( 741c59d87c4SChristoph Hellwig __field(dev_t, dev) 742c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 743ab23a776SDave Chinner __field(unsigned long, iflags) 744c59d87c4SChristoph Hellwig ), 745c59d87c4SChristoph Hellwig TP_fast_assign( 746c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 747c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 748ab23a776SDave Chinner __entry->iflags = ip->i_flags; 749c59d87c4SChristoph Hellwig ), 750ab23a776SDave Chinner TP_printk("dev %d:%d ino 0x%llx iflags 0x%lx", 751c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 752ab23a776SDave Chinner __entry->ino, 753ab23a776SDave Chinner __entry->iflags) 754c59d87c4SChristoph Hellwig ) 755c59d87c4SChristoph Hellwig 756c59d87c4SChristoph Hellwig #define DEFINE_INODE_EVENT(name) \ 757c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_inode_class, name, \ 758c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip), \ 759c59d87c4SChristoph Hellwig TP_ARGS(ip)) 760c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_iget_skip); 761ff7bebebSDarrick J. Wong DEFINE_INODE_EVENT(xfs_iget_recycle); 762ff7bebebSDarrick J. Wong DEFINE_INODE_EVENT(xfs_iget_recycle_fail); 763c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_iget_hit); 764c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_iget_miss); 765c59d87c4SChristoph Hellwig 766c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_getattr); 767c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_setattr); 768c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_readlink); 769725eb1ebSMark Tinguely DEFINE_INODE_EVENT(xfs_inactive_symlink); 770c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_alloc_file_space); 771c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_free_file_space); 772897b73b6SDave Chinner DEFINE_INODE_EVENT(xfs_zero_file_space); 773e1d8fb88SNamjae Jeon DEFINE_INODE_EVENT(xfs_collapse_file_space); 774a904b1caSNamjae Jeon DEFINE_INODE_EVENT(xfs_insert_file_space); 775c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_readdir); 776c59d87c4SChristoph Hellwig #ifdef CONFIG_XFS_POSIX_ACL 777c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_get_acl); 778c59d87c4SChristoph Hellwig #endif 779c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_vm_bmap); 780c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_file_ioctl); 781c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_file_compat_ioctl); 782c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_ioctl_setattr); 7831da2f2dbSChristoph Hellwig DEFINE_INODE_EVENT(xfs_dir_fsync); 784c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_file_fsync); 785c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_destroy_inode); 78669ff2826SChristoph Hellwig DEFINE_INODE_EVENT(xfs_update_time); 787c59d87c4SChristoph Hellwig 788c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_dquot_dqalloc); 789c59d87c4SChristoph Hellwig DEFINE_INODE_EVENT(xfs_dquot_dqdetach); 790c59d87c4SChristoph Hellwig 79127b52867SBrian Foster DEFINE_INODE_EVENT(xfs_inode_set_eofblocks_tag); 79227b52867SBrian Foster DEFINE_INODE_EVENT(xfs_inode_clear_eofblocks_tag); 79341176a68SBrian Foster DEFINE_INODE_EVENT(xfs_inode_free_eofblocks_invalid); 79483104d44SDarrick J. Wong DEFINE_INODE_EVENT(xfs_inode_set_cowblocks_tag); 79583104d44SDarrick J. Wong DEFINE_INODE_EVENT(xfs_inode_clear_cowblocks_tag); 79683104d44SDarrick J. Wong DEFINE_INODE_EVENT(xfs_inode_free_cowblocks_invalid); 797ab23a776SDave Chinner DEFINE_INODE_EVENT(xfs_inode_set_reclaimable); 798ab23a776SDave Chinner DEFINE_INODE_EVENT(xfs_inode_reclaiming); 799ab23a776SDave Chinner DEFINE_INODE_EVENT(xfs_inode_set_need_inactive); 800ab23a776SDave Chinner DEFINE_INODE_EVENT(xfs_inode_inactivating); 80127b52867SBrian Foster 80285f8dff0SDarrick J. Wong /* 80385f8dff0SDarrick J. Wong * ftrace's __print_symbolic requires that all enum values be wrapped in the 80485f8dff0SDarrick J. Wong * TRACE_DEFINE_ENUM macro so that the enum value can be encoded in the ftrace 80585f8dff0SDarrick J. Wong * ring buffer. Somehow this was only worth mentioning in the ftrace sample 80685f8dff0SDarrick J. Wong * code. 80785f8dff0SDarrick J. Wong */ 808571423a1SDarrick J. Wong TRACE_DEFINE_ENUM(XFS_REFC_DOMAIN_SHARED); 809571423a1SDarrick J. Wong TRACE_DEFINE_ENUM(XFS_REFC_DOMAIN_COW); 810571423a1SDarrick J. Wong 811d522d569SChristoph Hellwig TRACE_EVENT(xfs_filemap_fault, 8121d024e7aSMatthew Wilcox (Oracle) TP_PROTO(struct xfs_inode *ip, unsigned int order, bool write_fault), 8131d024e7aSMatthew Wilcox (Oracle) TP_ARGS(ip, order, write_fault), 814d522d569SChristoph Hellwig TP_STRUCT__entry( 815d522d569SChristoph Hellwig __field(dev_t, dev) 816d522d569SChristoph Hellwig __field(xfs_ino_t, ino) 8171d024e7aSMatthew Wilcox (Oracle) __field(unsigned int, order) 818d522d569SChristoph Hellwig __field(bool, write_fault) 819d522d569SChristoph Hellwig ), 820d522d569SChristoph Hellwig TP_fast_assign( 821d522d569SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 822d522d569SChristoph Hellwig __entry->ino = ip->i_ino; 8231d024e7aSMatthew Wilcox (Oracle) __entry->order = order; 824d522d569SChristoph Hellwig __entry->write_fault = write_fault; 825d522d569SChristoph Hellwig ), 8261d024e7aSMatthew Wilcox (Oracle) TP_printk("dev %d:%d ino 0x%llx order %u write_fault %d", 827d522d569SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 828d522d569SChristoph Hellwig __entry->ino, 8291d024e7aSMatthew Wilcox (Oracle) __entry->order, 830d522d569SChristoph Hellwig __entry->write_fault) 831d522d569SChristoph Hellwig ) 832d522d569SChristoph Hellwig 833c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_iref_class, 834c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip), 835c59d87c4SChristoph Hellwig TP_ARGS(ip, caller_ip), 836c59d87c4SChristoph Hellwig TP_STRUCT__entry( 837c59d87c4SChristoph Hellwig __field(dev_t, dev) 838c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 839c59d87c4SChristoph Hellwig __field(int, count) 840c59d87c4SChristoph Hellwig __field(int, pincount) 841c59d87c4SChristoph Hellwig __field(unsigned long, caller_ip) 842c59d87c4SChristoph Hellwig ), 843c59d87c4SChristoph Hellwig TP_fast_assign( 844c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 845c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 846c59d87c4SChristoph Hellwig __entry->count = atomic_read(&VFS_I(ip)->i_count); 847c59d87c4SChristoph Hellwig __entry->pincount = atomic_read(&ip->i_pincount); 848c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 849c59d87c4SChristoph Hellwig ), 850aff68a55SDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx count %d pincount %d caller %pS", 851c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 852c59d87c4SChristoph Hellwig __entry->ino, 853c59d87c4SChristoph Hellwig __entry->count, 854c59d87c4SChristoph Hellwig __entry->pincount, 855c59d87c4SChristoph Hellwig (char *)__entry->caller_ip) 856c59d87c4SChristoph Hellwig ) 857c59d87c4SChristoph Hellwig 85819cb7e38SBrian Foster TRACE_EVENT(xfs_iomap_prealloc_size, 85919cb7e38SBrian Foster TP_PROTO(struct xfs_inode *ip, xfs_fsblock_t blocks, int shift, 86019cb7e38SBrian Foster unsigned int writeio_blocks), 86119cb7e38SBrian Foster TP_ARGS(ip, blocks, shift, writeio_blocks), 86219cb7e38SBrian Foster TP_STRUCT__entry( 86319cb7e38SBrian Foster __field(dev_t, dev) 86419cb7e38SBrian Foster __field(xfs_ino_t, ino) 86519cb7e38SBrian Foster __field(xfs_fsblock_t, blocks) 86619cb7e38SBrian Foster __field(int, shift) 86719cb7e38SBrian Foster __field(unsigned int, writeio_blocks) 86819cb7e38SBrian Foster ), 86919cb7e38SBrian Foster TP_fast_assign( 87019cb7e38SBrian Foster __entry->dev = VFS_I(ip)->i_sb->s_dev; 87119cb7e38SBrian Foster __entry->ino = ip->i_ino; 87219cb7e38SBrian Foster __entry->blocks = blocks; 87319cb7e38SBrian Foster __entry->shift = shift; 87419cb7e38SBrian Foster __entry->writeio_blocks = writeio_blocks; 87519cb7e38SBrian Foster ), 87619cb7e38SBrian Foster TP_printk("dev %d:%d ino 0x%llx prealloc blocks %llu shift %d " 8775da8a07cSChristoph Hellwig "m_allocsize_blocks %u", 87819cb7e38SBrian Foster MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, 87919cb7e38SBrian Foster __entry->blocks, __entry->shift, __entry->writeio_blocks) 88019cb7e38SBrian Foster ) 88119cb7e38SBrian Foster 88256d1115cSBrian Foster TRACE_EVENT(xfs_irec_merge_pre, 88356d1115cSBrian Foster TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t agino, 88456d1115cSBrian Foster uint16_t holemask, xfs_agino_t nagino, uint16_t nholemask), 88556d1115cSBrian Foster TP_ARGS(mp, agno, agino, holemask, nagino, nholemask), 88656d1115cSBrian Foster TP_STRUCT__entry( 88756d1115cSBrian Foster __field(dev_t, dev) 88856d1115cSBrian Foster __field(xfs_agnumber_t, agno) 88956d1115cSBrian Foster __field(xfs_agino_t, agino) 89056d1115cSBrian Foster __field(uint16_t, holemask) 89156d1115cSBrian Foster __field(xfs_agino_t, nagino) 89256d1115cSBrian Foster __field(uint16_t, nholemask) 89356d1115cSBrian Foster ), 89456d1115cSBrian Foster TP_fast_assign( 89556d1115cSBrian Foster __entry->dev = mp->m_super->s_dev; 89656d1115cSBrian Foster __entry->agno = agno; 89756d1115cSBrian Foster __entry->agino = agino; 89856d1115cSBrian Foster __entry->holemask = holemask; 89956d1115cSBrian Foster __entry->nagino = nagino; 90056d1115cSBrian Foster __entry->nholemask = holemask; 90156d1115cSBrian Foster ), 9029febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agino 0x%x holemask 0x%x new_agino 0x%x new_holemask 0x%x", 903af6265a0SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 904af6265a0SDarrick J. Wong __entry->agno, 905af6265a0SDarrick J. Wong __entry->agino, 906af6265a0SDarrick J. Wong __entry->holemask, 907af6265a0SDarrick J. Wong __entry->nagino, 90856d1115cSBrian Foster __entry->nholemask) 90956d1115cSBrian Foster ) 91056d1115cSBrian Foster 91156d1115cSBrian Foster TRACE_EVENT(xfs_irec_merge_post, 91256d1115cSBrian Foster TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t agino, 91356d1115cSBrian Foster uint16_t holemask), 91456d1115cSBrian Foster TP_ARGS(mp, agno, agino, holemask), 91556d1115cSBrian Foster TP_STRUCT__entry( 91656d1115cSBrian Foster __field(dev_t, dev) 91756d1115cSBrian Foster __field(xfs_agnumber_t, agno) 91856d1115cSBrian Foster __field(xfs_agino_t, agino) 91956d1115cSBrian Foster __field(uint16_t, holemask) 92056d1115cSBrian Foster ), 92156d1115cSBrian Foster TP_fast_assign( 92256d1115cSBrian Foster __entry->dev = mp->m_super->s_dev; 92356d1115cSBrian Foster __entry->agno = agno; 92456d1115cSBrian Foster __entry->agino = agino; 92556d1115cSBrian Foster __entry->holemask = holemask; 92656d1115cSBrian Foster ), 9279febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agino 0x%x holemask 0x%x", 928af6265a0SDarrick J. Wong MAJOR(__entry->dev), 929af6265a0SDarrick J. Wong MINOR(__entry->dev), 930af6265a0SDarrick J. Wong __entry->agno, 931af6265a0SDarrick J. Wong __entry->agino, 93256d1115cSBrian Foster __entry->holemask) 93356d1115cSBrian Foster ) 93456d1115cSBrian Foster 935c59d87c4SChristoph Hellwig #define DEFINE_IREF_EVENT(name) \ 936c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_iref_class, name, \ 937c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip), \ 938c59d87c4SChristoph Hellwig TP_ARGS(ip, caller_ip)) 939c59d87c4SChristoph Hellwig DEFINE_IREF_EVENT(xfs_irele); 940c59d87c4SChristoph Hellwig DEFINE_IREF_EVENT(xfs_inode_pin); 941c59d87c4SChristoph Hellwig DEFINE_IREF_EVENT(xfs_inode_unpin); 942c59d87c4SChristoph Hellwig DEFINE_IREF_EVENT(xfs_inode_unpin_nowait); 943c59d87c4SChristoph Hellwig 944c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_namespace_class, 945996b2329SDarrick J. Wong TP_PROTO(struct xfs_inode *dp, const struct xfs_name *name), 946c59d87c4SChristoph Hellwig TP_ARGS(dp, name), 947c59d87c4SChristoph Hellwig TP_STRUCT__entry( 948c59d87c4SChristoph Hellwig __field(dev_t, dev) 949c59d87c4SChristoph Hellwig __field(xfs_ino_t, dp_ino) 950f6161375SChristoph Hellwig __field(int, namelen) 951c59d87c4SChristoph Hellwig __dynamic_array(char, name, name->len) 952c59d87c4SChristoph Hellwig ), 953c59d87c4SChristoph Hellwig TP_fast_assign( 954c59d87c4SChristoph Hellwig __entry->dev = VFS_I(dp)->i_sb->s_dev; 955c59d87c4SChristoph Hellwig __entry->dp_ino = dp->i_ino; 956f6161375SChristoph Hellwig __entry->namelen = name->len; 957c59d87c4SChristoph Hellwig memcpy(__get_str(name), name->name, name->len); 958c59d87c4SChristoph Hellwig ), 959f6161375SChristoph Hellwig TP_printk("dev %d:%d dp ino 0x%llx name %.*s", 960c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 961c59d87c4SChristoph Hellwig __entry->dp_ino, 962f6161375SChristoph Hellwig __entry->namelen, 963c59d87c4SChristoph Hellwig __get_str(name)) 964c59d87c4SChristoph Hellwig ) 965c59d87c4SChristoph Hellwig 966c59d87c4SChristoph Hellwig #define DEFINE_NAMESPACE_EVENT(name) \ 967c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_namespace_class, name, \ 968996b2329SDarrick J. Wong TP_PROTO(struct xfs_inode *dp, const struct xfs_name *name), \ 969c59d87c4SChristoph Hellwig TP_ARGS(dp, name)) 970c59d87c4SChristoph Hellwig DEFINE_NAMESPACE_EVENT(xfs_remove); 971c59d87c4SChristoph Hellwig DEFINE_NAMESPACE_EVENT(xfs_link); 972c59d87c4SChristoph Hellwig DEFINE_NAMESPACE_EVENT(xfs_lookup); 973c59d87c4SChristoph Hellwig DEFINE_NAMESPACE_EVENT(xfs_create); 974c59d87c4SChristoph Hellwig DEFINE_NAMESPACE_EVENT(xfs_symlink); 975c59d87c4SChristoph Hellwig 976c59d87c4SChristoph Hellwig TRACE_EVENT(xfs_rename, 977c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *src_dp, struct xfs_inode *target_dp, 978c59d87c4SChristoph Hellwig struct xfs_name *src_name, struct xfs_name *target_name), 979c59d87c4SChristoph Hellwig TP_ARGS(src_dp, target_dp, src_name, target_name), 980c59d87c4SChristoph Hellwig TP_STRUCT__entry( 981c59d87c4SChristoph Hellwig __field(dev_t, dev) 982c59d87c4SChristoph Hellwig __field(xfs_ino_t, src_dp_ino) 983c59d87c4SChristoph Hellwig __field(xfs_ino_t, target_dp_ino) 984f6161375SChristoph Hellwig __field(int, src_namelen) 985f6161375SChristoph Hellwig __field(int, target_namelen) 986c59d87c4SChristoph Hellwig __dynamic_array(char, src_name, src_name->len) 987c59d87c4SChristoph Hellwig __dynamic_array(char, target_name, target_name->len) 988c59d87c4SChristoph Hellwig ), 989c59d87c4SChristoph Hellwig TP_fast_assign( 990c59d87c4SChristoph Hellwig __entry->dev = VFS_I(src_dp)->i_sb->s_dev; 991c59d87c4SChristoph Hellwig __entry->src_dp_ino = src_dp->i_ino; 992c59d87c4SChristoph Hellwig __entry->target_dp_ino = target_dp->i_ino; 993f6161375SChristoph Hellwig __entry->src_namelen = src_name->len; 994f6161375SChristoph Hellwig __entry->target_namelen = target_name->len; 995c59d87c4SChristoph Hellwig memcpy(__get_str(src_name), src_name->name, src_name->len); 996f6161375SChristoph Hellwig memcpy(__get_str(target_name), target_name->name, 997f6161375SChristoph Hellwig target_name->len); 998c59d87c4SChristoph Hellwig ), 999c59d87c4SChristoph Hellwig TP_printk("dev %d:%d src dp ino 0x%llx target dp ino 0x%llx" 1000f6161375SChristoph Hellwig " src name %.*s target name %.*s", 1001c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1002c59d87c4SChristoph Hellwig __entry->src_dp_ino, 1003c59d87c4SChristoph Hellwig __entry->target_dp_ino, 1004f6161375SChristoph Hellwig __entry->src_namelen, 1005c59d87c4SChristoph Hellwig __get_str(src_name), 1006f6161375SChristoph Hellwig __entry->target_namelen, 1007c59d87c4SChristoph Hellwig __get_str(target_name)) 1008c59d87c4SChristoph Hellwig ) 1009c59d87c4SChristoph Hellwig 1010c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_dquot_class, 1011c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_dquot *dqp), 1012c59d87c4SChristoph Hellwig TP_ARGS(dqp), 1013c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1014c59d87c4SChristoph Hellwig __field(dev_t, dev) 1015c59d87c4SChristoph Hellwig __field(u32, id) 10161a7ed271SDarrick J. Wong __field(xfs_dqtype_t, type) 1017c59d87c4SChristoph Hellwig __field(unsigned, flags) 1018c59d87c4SChristoph Hellwig __field(unsigned, nrefs) 1019c59d87c4SChristoph Hellwig __field(unsigned long long, res_bcount) 10202cb91babSDarrick J. Wong __field(unsigned long long, res_rtbcount) 10212cb91babSDarrick J. Wong __field(unsigned long long, res_icount) 10222cb91babSDarrick J. Wong 1023c59d87c4SChristoph Hellwig __field(unsigned long long, bcount) 10242cb91babSDarrick J. Wong __field(unsigned long long, rtbcount) 1025c59d87c4SChristoph Hellwig __field(unsigned long long, icount) 10262cb91babSDarrick J. Wong 1027c59d87c4SChristoph Hellwig __field(unsigned long long, blk_hardlimit) 1028c59d87c4SChristoph Hellwig __field(unsigned long long, blk_softlimit) 10292cb91babSDarrick J. Wong __field(unsigned long long, rtb_hardlimit) 10302cb91babSDarrick J. Wong __field(unsigned long long, rtb_softlimit) 1031c59d87c4SChristoph Hellwig __field(unsigned long long, ino_hardlimit) 1032c59d87c4SChristoph Hellwig __field(unsigned long long, ino_softlimit) 10332cb91babSDarrick J. Wong ), 1034c59d87c4SChristoph Hellwig TP_fast_assign( 1035c59d87c4SChristoph Hellwig __entry->dev = dqp->q_mount->m_super->s_dev; 1036c51df733SDarrick J. Wong __entry->id = dqp->q_id; 10371a7ed271SDarrick J. Wong __entry->type = dqp->q_type; 10381a7ed271SDarrick J. Wong __entry->flags = dqp->q_flags; 1039c59d87c4SChristoph Hellwig __entry->nrefs = dqp->q_nrefs; 10402cb91babSDarrick J. Wong 1041784e80f5SDarrick J. Wong __entry->res_bcount = dqp->q_blk.reserved; 10422cb91babSDarrick J. Wong __entry->res_rtbcount = dqp->q_rtb.reserved; 10432cb91babSDarrick J. Wong __entry->res_icount = dqp->q_ino.reserved; 10442cb91babSDarrick J. Wong 1045be37d40cSDarrick J. Wong __entry->bcount = dqp->q_blk.count; 10462cb91babSDarrick J. Wong __entry->rtbcount = dqp->q_rtb.count; 1047be37d40cSDarrick J. Wong __entry->icount = dqp->q_ino.count; 10482cb91babSDarrick J. Wong 1049d3537cf9SDarrick J. Wong __entry->blk_hardlimit = dqp->q_blk.hardlimit; 1050d3537cf9SDarrick J. Wong __entry->blk_softlimit = dqp->q_blk.softlimit; 10512cb91babSDarrick J. Wong __entry->rtb_hardlimit = dqp->q_rtb.hardlimit; 10522cb91babSDarrick J. Wong __entry->rtb_softlimit = dqp->q_rtb.softlimit; 1053d3537cf9SDarrick J. Wong __entry->ino_hardlimit = dqp->q_ino.hardlimit; 1054d3537cf9SDarrick J. Wong __entry->ino_softlimit = dqp->q_ino.softlimit; 1055c59d87c4SChristoph Hellwig ), 10561a7ed271SDarrick J. Wong TP_printk("dev %d:%d id 0x%x type %s flags %s nrefs %u " 10572cb91babSDarrick J. Wong "res_bc 0x%llx res_rtbc 0x%llx res_ic 0x%llx " 1058c59d87c4SChristoph Hellwig "bcnt 0x%llx bhardlimit 0x%llx bsoftlimit 0x%llx " 10592cb91babSDarrick J. Wong "rtbcnt 0x%llx rtbhardlimit 0x%llx rtbsoftlimit 0x%llx " 1060c59d87c4SChristoph Hellwig "icnt 0x%llx ihardlimit 0x%llx isoftlimit 0x%llx]", 1061c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1062c59d87c4SChristoph Hellwig __entry->id, 10631a7ed271SDarrick J. Wong __print_flags(__entry->type, "|", XFS_DQTYPE_STRINGS), 1064985a78fdSDarrick J. Wong __print_flags(__entry->flags, "|", XFS_DQFLAG_STRINGS), 1065c59d87c4SChristoph Hellwig __entry->nrefs, 1066c59d87c4SChristoph Hellwig __entry->res_bcount, 10672cb91babSDarrick J. Wong __entry->res_rtbcount, 10682cb91babSDarrick J. Wong __entry->res_icount, 1069c59d87c4SChristoph Hellwig __entry->bcount, 1070c59d87c4SChristoph Hellwig __entry->blk_hardlimit, 1071c59d87c4SChristoph Hellwig __entry->blk_softlimit, 10722cb91babSDarrick J. Wong __entry->rtbcount, 10732cb91babSDarrick J. Wong __entry->rtb_hardlimit, 10742cb91babSDarrick J. Wong __entry->rtb_softlimit, 1075c59d87c4SChristoph Hellwig __entry->icount, 1076c59d87c4SChristoph Hellwig __entry->ino_hardlimit, 1077c59d87c4SChristoph Hellwig __entry->ino_softlimit) 1078c59d87c4SChristoph Hellwig ) 1079c59d87c4SChristoph Hellwig 1080c59d87c4SChristoph Hellwig #define DEFINE_DQUOT_EVENT(name) \ 1081c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_dquot_class, name, \ 1082c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_dquot *dqp), \ 1083c59d87c4SChristoph Hellwig TP_ARGS(dqp)) 1084c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqadjust); 1085c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqreclaim_want); 1086c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqreclaim_dirty); 108792b2e5b3SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqreclaim_busy); 108892b2e5b3SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqreclaim_done); 1089c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqattach_found); 1090c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqattach_get); 1091c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqalloc); 1092c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqtobp_read); 1093c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqread); 1094c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqread_fail); 1095c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqget_hit); 1096c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqget_miss); 10979f920f11SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqget_freeing); 10989f920f11SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqget_dup); 1099c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqput); 1100c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqput_free); 1101c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqrele); 1102c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqflush); 1103c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqflush_force); 1104c59d87c4SChristoph Hellwig DEFINE_DQUOT_EVENT(xfs_dqflush_done); 11052cb91babSDarrick J. Wong DEFINE_DQUOT_EVENT(xfs_trans_apply_dquot_deltas_before); 11062cb91babSDarrick J. Wong DEFINE_DQUOT_EVENT(xfs_trans_apply_dquot_deltas_after); 11072cb91babSDarrick J. Wong 11082cb91babSDarrick J. Wong TRACE_EVENT(xfs_trans_mod_dquot, 11092cb91babSDarrick J. Wong TP_PROTO(struct xfs_trans *tp, struct xfs_dquot *dqp, 11102cb91babSDarrick J. Wong unsigned int field, int64_t delta), 11112cb91babSDarrick J. Wong TP_ARGS(tp, dqp, field, delta), 11122cb91babSDarrick J. Wong TP_STRUCT__entry( 11132cb91babSDarrick J. Wong __field(dev_t, dev) 11141a7ed271SDarrick J. Wong __field(xfs_dqtype_t, type) 11152cb91babSDarrick J. Wong __field(unsigned int, flags) 11162cb91babSDarrick J. Wong __field(unsigned int, dqid) 11172cb91babSDarrick J. Wong __field(unsigned int, field) 11182cb91babSDarrick J. Wong __field(int64_t, delta) 11192cb91babSDarrick J. Wong ), 11202cb91babSDarrick J. Wong TP_fast_assign( 11212cb91babSDarrick J. Wong __entry->dev = tp->t_mountp->m_super->s_dev; 11221a7ed271SDarrick J. Wong __entry->type = dqp->q_type; 11231a7ed271SDarrick J. Wong __entry->flags = dqp->q_flags; 11242cb91babSDarrick J. Wong __entry->dqid = dqp->q_id; 11252cb91babSDarrick J. Wong __entry->field = field; 11262cb91babSDarrick J. Wong __entry->delta = delta; 11272cb91babSDarrick J. Wong ), 11281a7ed271SDarrick J. Wong TP_printk("dev %d:%d dquot id 0x%x type %s flags %s field %s delta %lld", 11292cb91babSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 11302cb91babSDarrick J. Wong __entry->dqid, 11311a7ed271SDarrick J. Wong __print_flags(__entry->type, "|", XFS_DQTYPE_STRINGS), 11322cb91babSDarrick J. Wong __print_flags(__entry->flags, "|", XFS_DQFLAG_STRINGS), 11332cb91babSDarrick J. Wong __print_flags(__entry->field, "|", XFS_QMOPT_FLAGS), 11342cb91babSDarrick J. Wong __entry->delta) 11352cb91babSDarrick J. Wong ); 11362cb91babSDarrick J. Wong 11372cb91babSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_dqtrx_class, 11382cb91babSDarrick J. Wong TP_PROTO(struct xfs_dqtrx *qtrx), 11392cb91babSDarrick J. Wong TP_ARGS(qtrx), 11402cb91babSDarrick J. Wong TP_STRUCT__entry( 11412cb91babSDarrick J. Wong __field(dev_t, dev) 11421a7ed271SDarrick J. Wong __field(xfs_dqtype_t, type) 11432cb91babSDarrick J. Wong __field(unsigned int, flags) 11442cb91babSDarrick J. Wong __field(u32, dqid) 11452cb91babSDarrick J. Wong 11462cb91babSDarrick J. Wong __field(uint64_t, blk_res) 11472cb91babSDarrick J. Wong __field(int64_t, bcount_delta) 11482cb91babSDarrick J. Wong __field(int64_t, delbcnt_delta) 11492cb91babSDarrick J. Wong 11502cb91babSDarrick J. Wong __field(uint64_t, rtblk_res) 11512cb91babSDarrick J. Wong __field(uint64_t, rtblk_res_used) 11522cb91babSDarrick J. Wong __field(int64_t, rtbcount_delta) 11532cb91babSDarrick J. Wong __field(int64_t, delrtb_delta) 11542cb91babSDarrick J. Wong 11552cb91babSDarrick J. Wong __field(uint64_t, ino_res) 11562cb91babSDarrick J. Wong __field(uint64_t, ino_res_used) 11572cb91babSDarrick J. Wong __field(int64_t, icount_delta) 11582cb91babSDarrick J. Wong ), 11592cb91babSDarrick J. Wong TP_fast_assign( 11602cb91babSDarrick J. Wong __entry->dev = qtrx->qt_dquot->q_mount->m_super->s_dev; 11611a7ed271SDarrick J. Wong __entry->type = qtrx->qt_dquot->q_type; 11621a7ed271SDarrick J. Wong __entry->flags = qtrx->qt_dquot->q_flags; 11632cb91babSDarrick J. Wong __entry->dqid = qtrx->qt_dquot->q_id; 11642cb91babSDarrick J. Wong 11652cb91babSDarrick J. Wong __entry->blk_res = qtrx->qt_blk_res; 11662cb91babSDarrick J. Wong __entry->bcount_delta = qtrx->qt_bcount_delta; 11672cb91babSDarrick J. Wong __entry->delbcnt_delta = qtrx->qt_delbcnt_delta; 11682cb91babSDarrick J. Wong 11692cb91babSDarrick J. Wong __entry->rtblk_res = qtrx->qt_rtblk_res; 11702cb91babSDarrick J. Wong __entry->rtblk_res_used = qtrx->qt_rtblk_res_used; 11712cb91babSDarrick J. Wong __entry->rtbcount_delta = qtrx->qt_rtbcount_delta; 11722cb91babSDarrick J. Wong __entry->delrtb_delta = qtrx->qt_delrtb_delta; 11732cb91babSDarrick J. Wong 11742cb91babSDarrick J. Wong __entry->ino_res = qtrx->qt_ino_res; 11752cb91babSDarrick J. Wong __entry->ino_res_used = qtrx->qt_ino_res_used; 11762cb91babSDarrick J. Wong __entry->icount_delta = qtrx->qt_icount_delta; 11772cb91babSDarrick J. Wong ), 11781a7ed271SDarrick J. Wong TP_printk("dev %d:%d dquot id 0x%x type %s flags %s " 11792cb91babSDarrick J. Wong "blk_res %llu bcount_delta %lld delbcnt_delta %lld " 11802cb91babSDarrick J. Wong "rtblk_res %llu rtblk_res_used %llu rtbcount_delta %lld delrtb_delta %lld " 11812cb91babSDarrick J. Wong "ino_res %llu ino_res_used %llu icount_delta %lld", 11822cb91babSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 11832cb91babSDarrick J. Wong __entry->dqid, 11841a7ed271SDarrick J. Wong __print_flags(__entry->type, "|", XFS_DQTYPE_STRINGS), 11852cb91babSDarrick J. Wong __print_flags(__entry->flags, "|", XFS_DQFLAG_STRINGS), 11862cb91babSDarrick J. Wong 11872cb91babSDarrick J. Wong __entry->blk_res, 11882cb91babSDarrick J. Wong __entry->bcount_delta, 11892cb91babSDarrick J. Wong __entry->delbcnt_delta, 11902cb91babSDarrick J. Wong 11912cb91babSDarrick J. Wong __entry->rtblk_res, 11922cb91babSDarrick J. Wong __entry->rtblk_res_used, 11932cb91babSDarrick J. Wong __entry->rtbcount_delta, 11942cb91babSDarrick J. Wong __entry->delrtb_delta, 11952cb91babSDarrick J. Wong 11962cb91babSDarrick J. Wong __entry->ino_res, 11972cb91babSDarrick J. Wong __entry->ino_res_used, 11982cb91babSDarrick J. Wong __entry->icount_delta) 11992cb91babSDarrick J. Wong ) 12002cb91babSDarrick J. Wong 12012cb91babSDarrick J. Wong #define DEFINE_DQTRX_EVENT(name) \ 12022cb91babSDarrick J. Wong DEFINE_EVENT(xfs_dqtrx_class, name, \ 12032cb91babSDarrick J. Wong TP_PROTO(struct xfs_dqtrx *qtrx), \ 12042cb91babSDarrick J. Wong TP_ARGS(qtrx)) 12052cb91babSDarrick J. Wong DEFINE_DQTRX_EVENT(xfs_trans_apply_dquot_deltas); 12062cb91babSDarrick J. Wong DEFINE_DQTRX_EVENT(xfs_trans_mod_dquot_before); 12072cb91babSDarrick J. Wong DEFINE_DQTRX_EVENT(xfs_trans_mod_dquot_after); 1208c59d87c4SChristoph Hellwig 1209c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_loggrant_class, 1210ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xlog_ticket *tic), 1211c59d87c4SChristoph Hellwig TP_ARGS(log, tic), 1212c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1213c59d87c4SChristoph Hellwig __field(dev_t, dev) 1214c59d87c4SChristoph Hellwig __field(char, ocnt) 1215c59d87c4SChristoph Hellwig __field(char, cnt) 1216c59d87c4SChristoph Hellwig __field(int, curr_res) 1217c59d87c4SChristoph Hellwig __field(int, unit_res) 1218c59d87c4SChristoph Hellwig __field(unsigned int, flags) 1219c59d87c4SChristoph Hellwig __field(int, reserveq) 1220c59d87c4SChristoph Hellwig __field(int, writeq) 1221c59d87c4SChristoph Hellwig __field(int, grant_reserve_cycle) 1222c59d87c4SChristoph Hellwig __field(int, grant_reserve_bytes) 1223c59d87c4SChristoph Hellwig __field(int, grant_write_cycle) 1224c59d87c4SChristoph Hellwig __field(int, grant_write_bytes) 1225c59d87c4SChristoph Hellwig __field(int, curr_cycle) 1226c59d87c4SChristoph Hellwig __field(int, curr_block) 1227c59d87c4SChristoph Hellwig __field(xfs_lsn_t, tail_lsn) 1228c59d87c4SChristoph Hellwig ), 1229c59d87c4SChristoph Hellwig TP_fast_assign( 1230c59d87c4SChristoph Hellwig __entry->dev = log->l_mp->m_super->s_dev; 1231c59d87c4SChristoph Hellwig __entry->ocnt = tic->t_ocnt; 1232c59d87c4SChristoph Hellwig __entry->cnt = tic->t_cnt; 1233c59d87c4SChristoph Hellwig __entry->curr_res = tic->t_curr_res; 1234c59d87c4SChristoph Hellwig __entry->unit_res = tic->t_unit_res; 1235c59d87c4SChristoph Hellwig __entry->flags = tic->t_flags; 123628496968SChristoph Hellwig __entry->reserveq = list_empty(&log->l_reserve_head.waiters); 123728496968SChristoph Hellwig __entry->writeq = list_empty(&log->l_write_head.waiters); 123828496968SChristoph Hellwig xlog_crack_grant_head(&log->l_reserve_head.grant, 1239c59d87c4SChristoph Hellwig &__entry->grant_reserve_cycle, 1240c59d87c4SChristoph Hellwig &__entry->grant_reserve_bytes); 124128496968SChristoph Hellwig xlog_crack_grant_head(&log->l_write_head.grant, 1242c59d87c4SChristoph Hellwig &__entry->grant_write_cycle, 1243c59d87c4SChristoph Hellwig &__entry->grant_write_bytes); 1244c59d87c4SChristoph Hellwig __entry->curr_cycle = log->l_curr_cycle; 1245c59d87c4SChristoph Hellwig __entry->curr_block = log->l_curr_block; 1246c59d87c4SChristoph Hellwig __entry->tail_lsn = atomic64_read(&log->l_tail_lsn); 1247c59d87c4SChristoph Hellwig ), 1248710b1e2cSChristoph Hellwig TP_printk("dev %d:%d t_ocnt %u t_cnt %u t_curr_res %u " 1249c59d87c4SChristoph Hellwig "t_unit_res %u t_flags %s reserveq %s " 1250c59d87c4SChristoph Hellwig "writeq %s grant_reserve_cycle %d " 1251c59d87c4SChristoph Hellwig "grant_reserve_bytes %d grant_write_cycle %d " 1252c59d87c4SChristoph Hellwig "grant_write_bytes %d curr_cycle %d curr_block %d " 1253c59d87c4SChristoph Hellwig "tail_cycle %d tail_block %d", 1254c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1255c59d87c4SChristoph Hellwig __entry->ocnt, 1256c59d87c4SChristoph Hellwig __entry->cnt, 1257c59d87c4SChristoph Hellwig __entry->curr_res, 1258c59d87c4SChristoph Hellwig __entry->unit_res, 1259c59d87c4SChristoph Hellwig __print_flags(__entry->flags, "|", XLOG_TIC_FLAGS), 1260c59d87c4SChristoph Hellwig __entry->reserveq ? "empty" : "active", 1261c59d87c4SChristoph Hellwig __entry->writeq ? "empty" : "active", 1262c59d87c4SChristoph Hellwig __entry->grant_reserve_cycle, 1263c59d87c4SChristoph Hellwig __entry->grant_reserve_bytes, 1264c59d87c4SChristoph Hellwig __entry->grant_write_cycle, 1265c59d87c4SChristoph Hellwig __entry->grant_write_bytes, 1266c59d87c4SChristoph Hellwig __entry->curr_cycle, 1267c59d87c4SChristoph Hellwig __entry->curr_block, 1268c59d87c4SChristoph Hellwig CYCLE_LSN(__entry->tail_lsn), 1269c59d87c4SChristoph Hellwig BLOCK_LSN(__entry->tail_lsn) 1270c59d87c4SChristoph Hellwig ) 1271c59d87c4SChristoph Hellwig ) 1272c59d87c4SChristoph Hellwig 1273c59d87c4SChristoph Hellwig #define DEFINE_LOGGRANT_EVENT(name) \ 1274c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_loggrant_class, name, \ 1275ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xlog_ticket *tic), \ 1276c59d87c4SChristoph Hellwig TP_ARGS(log, tic)) 1277c59d87c4SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_umount_write); 12789f9c19ecSChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep); 12799f9c19ecSChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake); 1280c59d87c4SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_grant_wake_up); 12819006fb91SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_reserve); 12829006fb91SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_reserve_exit); 12839006fb91SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_regrant); 12849006fb91SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_regrant_exit); 12858b41e3f9SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant); 12868b41e3f9SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant_exit); 12878b41e3f9SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant_sub); 12888b41e3f9SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_ticket_ungrant); 12898b41e3f9SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_ticket_ungrant_sub); 12908b41e3f9SChristoph Hellwig DEFINE_LOGGRANT_EVENT(xfs_log_ticket_ungrant_exit); 12910e7ab7efSDave Chinner DEFINE_LOGGRANT_EVENT(xfs_log_cil_wait); 1292c59d87c4SChristoph Hellwig 12939e4c109aSChristoph Hellwig DECLARE_EVENT_CLASS(xfs_log_item_class, 12949e4c109aSChristoph Hellwig TP_PROTO(struct xfs_log_item *lip), 12959e4c109aSChristoph Hellwig TP_ARGS(lip), 12969e4c109aSChristoph Hellwig TP_STRUCT__entry( 12979e4c109aSChristoph Hellwig __field(dev_t, dev) 12989e4c109aSChristoph Hellwig __field(void *, lip) 12999e4c109aSChristoph Hellwig __field(uint, type) 130022525c17SDave Chinner __field(unsigned long, flags) 13019e4c109aSChristoph Hellwig __field(xfs_lsn_t, lsn) 13029e4c109aSChristoph Hellwig ), 13039e4c109aSChristoph Hellwig TP_fast_assign( 1304d86142ddSDave Chinner __entry->dev = lip->li_log->l_mp->m_super->s_dev; 13059e4c109aSChristoph Hellwig __entry->lip = lip; 13069e4c109aSChristoph Hellwig __entry->type = lip->li_type; 13079e4c109aSChristoph Hellwig __entry->flags = lip->li_flags; 13089e4c109aSChristoph Hellwig __entry->lsn = lip->li_lsn; 13099e4c109aSChristoph Hellwig ), 13103d170aa2SDarrick J. Wong TP_printk("dev %d:%d lip %p lsn %d/%d type %s flags %s", 13119e4c109aSChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 13129e4c109aSChristoph Hellwig __entry->lip, 13139e4c109aSChristoph Hellwig CYCLE_LSN(__entry->lsn), BLOCK_LSN(__entry->lsn), 13149e4c109aSChristoph Hellwig __print_symbolic(__entry->type, XFS_LI_TYPE_DESC), 13159e4c109aSChristoph Hellwig __print_flags(__entry->flags, "|", XFS_LI_FLAGS)) 13169e4c109aSChristoph Hellwig ) 13179e4c109aSChristoph Hellwig 131814c26c6aSDave Chinner TRACE_EVENT(xfs_log_force, 13199f27889fSCarlos Maiolino TP_PROTO(struct xfs_mount *mp, xfs_lsn_t lsn, unsigned long caller_ip), 13209f27889fSCarlos Maiolino TP_ARGS(mp, lsn, caller_ip), 132114c26c6aSDave Chinner TP_STRUCT__entry( 132214c26c6aSDave Chinner __field(dev_t, dev) 132314c26c6aSDave Chinner __field(xfs_lsn_t, lsn) 13249f27889fSCarlos Maiolino __field(unsigned long, caller_ip) 132514c26c6aSDave Chinner ), 132614c26c6aSDave Chinner TP_fast_assign( 132714c26c6aSDave Chinner __entry->dev = mp->m_super->s_dev; 132814c26c6aSDave Chinner __entry->lsn = lsn; 13299f27889fSCarlos Maiolino __entry->caller_ip = caller_ip; 133014c26c6aSDave Chinner ), 1331aff68a55SDarrick J. Wong TP_printk("dev %d:%d lsn 0x%llx caller %pS", 133214c26c6aSDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 13339f27889fSCarlos Maiolino __entry->lsn, (void *)__entry->caller_ip) 133414c26c6aSDave Chinner ) 133514c26c6aSDave Chinner 13369e4c109aSChristoph Hellwig #define DEFINE_LOG_ITEM_EVENT(name) \ 13379e4c109aSChristoph Hellwig DEFINE_EVENT(xfs_log_item_class, name, \ 13389e4c109aSChristoph Hellwig TP_PROTO(struct xfs_log_item *lip), \ 13399e4c109aSChristoph Hellwig TP_ARGS(lip)) 13409e4c109aSChristoph Hellwig DEFINE_LOG_ITEM_EVENT(xfs_ail_push); 13419e4c109aSChristoph Hellwig DEFINE_LOG_ITEM_EVENT(xfs_ail_pinned); 13429e4c109aSChristoph Hellwig DEFINE_LOG_ITEM_EVENT(xfs_ail_locked); 134343ff2122SChristoph Hellwig DEFINE_LOG_ITEM_EVENT(xfs_ail_flushing); 13440d227466SDave Chinner DEFINE_LOG_ITEM_EVENT(xfs_cil_whiteout_mark); 13450d227466SDave Chinner DEFINE_LOG_ITEM_EVENT(xfs_cil_whiteout_skip); 13460d227466SDave Chinner DEFINE_LOG_ITEM_EVENT(xfs_cil_whiteout_unpin); 13479e4c109aSChristoph Hellwig 1348750b9c90SDave Chinner DECLARE_EVENT_CLASS(xfs_ail_class, 1349750b9c90SDave Chinner TP_PROTO(struct xfs_log_item *lip, xfs_lsn_t old_lsn, xfs_lsn_t new_lsn), 1350750b9c90SDave Chinner TP_ARGS(lip, old_lsn, new_lsn), 1351750b9c90SDave Chinner TP_STRUCT__entry( 1352750b9c90SDave Chinner __field(dev_t, dev) 1353750b9c90SDave Chinner __field(void *, lip) 1354750b9c90SDave Chinner __field(uint, type) 135522525c17SDave Chinner __field(unsigned long, flags) 1356750b9c90SDave Chinner __field(xfs_lsn_t, old_lsn) 1357750b9c90SDave Chinner __field(xfs_lsn_t, new_lsn) 1358750b9c90SDave Chinner ), 1359750b9c90SDave Chinner TP_fast_assign( 1360d86142ddSDave Chinner __entry->dev = lip->li_log->l_mp->m_super->s_dev; 1361750b9c90SDave Chinner __entry->lip = lip; 1362750b9c90SDave Chinner __entry->type = lip->li_type; 1363750b9c90SDave Chinner __entry->flags = lip->li_flags; 1364750b9c90SDave Chinner __entry->old_lsn = old_lsn; 1365750b9c90SDave Chinner __entry->new_lsn = new_lsn; 1366750b9c90SDave Chinner ), 13673d170aa2SDarrick J. Wong TP_printk("dev %d:%d lip %p old lsn %d/%d new lsn %d/%d type %s flags %s", 1368750b9c90SDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 1369750b9c90SDave Chinner __entry->lip, 1370750b9c90SDave Chinner CYCLE_LSN(__entry->old_lsn), BLOCK_LSN(__entry->old_lsn), 1371750b9c90SDave Chinner CYCLE_LSN(__entry->new_lsn), BLOCK_LSN(__entry->new_lsn), 1372750b9c90SDave Chinner __print_symbolic(__entry->type, XFS_LI_TYPE_DESC), 1373750b9c90SDave Chinner __print_flags(__entry->flags, "|", XFS_LI_FLAGS)) 1374750b9c90SDave Chinner ) 1375750b9c90SDave Chinner 1376750b9c90SDave Chinner #define DEFINE_AIL_EVENT(name) \ 1377750b9c90SDave Chinner DEFINE_EVENT(xfs_ail_class, name, \ 1378750b9c90SDave Chinner TP_PROTO(struct xfs_log_item *lip, xfs_lsn_t old_lsn, xfs_lsn_t new_lsn), \ 1379750b9c90SDave Chinner TP_ARGS(lip, old_lsn, new_lsn)) 1380750b9c90SDave Chinner DEFINE_AIL_EVENT(xfs_ail_insert); 1381750b9c90SDave Chinner DEFINE_AIL_EVENT(xfs_ail_move); 1382750b9c90SDave Chinner DEFINE_AIL_EVENT(xfs_ail_delete); 1383750b9c90SDave Chinner 1384750b9c90SDave Chinner TRACE_EVENT(xfs_log_assign_tail_lsn, 1385750b9c90SDave Chinner TP_PROTO(struct xlog *log, xfs_lsn_t new_lsn), 1386750b9c90SDave Chinner TP_ARGS(log, new_lsn), 1387750b9c90SDave Chinner TP_STRUCT__entry( 1388750b9c90SDave Chinner __field(dev_t, dev) 1389750b9c90SDave Chinner __field(xfs_lsn_t, new_lsn) 1390750b9c90SDave Chinner __field(xfs_lsn_t, old_lsn) 1391750b9c90SDave Chinner __field(xfs_lsn_t, last_sync_lsn) 1392750b9c90SDave Chinner ), 1393750b9c90SDave Chinner TP_fast_assign( 1394750b9c90SDave Chinner __entry->dev = log->l_mp->m_super->s_dev; 1395750b9c90SDave Chinner __entry->new_lsn = new_lsn; 1396750b9c90SDave Chinner __entry->old_lsn = atomic64_read(&log->l_tail_lsn); 1397750b9c90SDave Chinner __entry->last_sync_lsn = atomic64_read(&log->l_last_sync_lsn); 1398750b9c90SDave Chinner ), 1399750b9c90SDave Chinner TP_printk("dev %d:%d new tail lsn %d/%d, old lsn %d/%d, last sync %d/%d", 1400750b9c90SDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 1401750b9c90SDave Chinner CYCLE_LSN(__entry->new_lsn), BLOCK_LSN(__entry->new_lsn), 1402750b9c90SDave Chinner CYCLE_LSN(__entry->old_lsn), BLOCK_LSN(__entry->old_lsn), 1403750b9c90SDave Chinner CYCLE_LSN(__entry->last_sync_lsn), BLOCK_LSN(__entry->last_sync_lsn)) 1404750b9c90SDave Chinner ) 14059e4c109aSChristoph Hellwig 1406c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_file_class, 14073e40b13cSChristoph Hellwig TP_PROTO(struct kiocb *iocb, struct iov_iter *iter), 14083e40b13cSChristoph Hellwig TP_ARGS(iocb, iter), 1409c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1410c59d87c4SChristoph Hellwig __field(dev_t, dev) 1411c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1412c59d87c4SChristoph Hellwig __field(xfs_fsize_t, size) 1413c59d87c4SChristoph Hellwig __field(loff_t, offset) 1414c59d87c4SChristoph Hellwig __field(size_t, count) 1415c59d87c4SChristoph Hellwig ), 1416c59d87c4SChristoph Hellwig TP_fast_assign( 14173e40b13cSChristoph Hellwig __entry->dev = file_inode(iocb->ki_filp)->i_sb->s_dev; 14183e40b13cSChristoph Hellwig __entry->ino = XFS_I(file_inode(iocb->ki_filp))->i_ino; 141913d2c10bSChristoph Hellwig __entry->size = XFS_I(file_inode(iocb->ki_filp))->i_disk_size; 14203e40b13cSChristoph Hellwig __entry->offset = iocb->ki_pos; 14213e40b13cSChristoph Hellwig __entry->count = iov_iter_count(iter); 1422c59d87c4SChristoph Hellwig ), 1423c23460ebSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx disize 0x%llx pos 0x%llx bytecount 0x%zx", 1424c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1425c59d87c4SChristoph Hellwig __entry->ino, 1426c59d87c4SChristoph Hellwig __entry->size, 1427c59d87c4SChristoph Hellwig __entry->offset, 14283176c3e0SChristoph Hellwig __entry->count) 1429c59d87c4SChristoph Hellwig ) 1430c59d87c4SChristoph Hellwig 1431c59d87c4SChristoph Hellwig #define DEFINE_RW_EVENT(name) \ 1432c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_file_class, name, \ 14333e40b13cSChristoph Hellwig TP_PROTO(struct kiocb *iocb, struct iov_iter *iter), \ 14343e40b13cSChristoph Hellwig TP_ARGS(iocb, iter)) 14353176c3e0SChristoph Hellwig DEFINE_RW_EVENT(xfs_file_buffered_read); 14363176c3e0SChristoph Hellwig DEFINE_RW_EVENT(xfs_file_direct_read); 143716d4d435SChristoph Hellwig DEFINE_RW_EVENT(xfs_file_dax_read); 1438c59d87c4SChristoph Hellwig DEFINE_RW_EVENT(xfs_file_buffered_write); 1439c59d87c4SChristoph Hellwig DEFINE_RW_EVENT(xfs_file_direct_write); 144016d4d435SChristoph Hellwig DEFINE_RW_EVENT(xfs_file_dax_write); 1441896f72d0SChristoph Hellwig DEFINE_RW_EVENT(xfs_reflink_bounce_dio_write); 1442896f72d0SChristoph Hellwig 1443c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_imap_class, 1444c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count, 1445be225fecSChristoph Hellwig int whichfork, struct xfs_bmbt_irec *irec), 1446be225fecSChristoph Hellwig TP_ARGS(ip, offset, count, whichfork, irec), 1447c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1448c59d87c4SChristoph Hellwig __field(dev_t, dev) 1449c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1450c59d87c4SChristoph Hellwig __field(loff_t, size) 1451c59d87c4SChristoph Hellwig __field(loff_t, offset) 1452c59d87c4SChristoph Hellwig __field(size_t, count) 1453be225fecSChristoph Hellwig __field(int, whichfork) 1454c59d87c4SChristoph Hellwig __field(xfs_fileoff_t, startoff) 1455c59d87c4SChristoph Hellwig __field(xfs_fsblock_t, startblock) 1456c59d87c4SChristoph Hellwig __field(xfs_filblks_t, blockcount) 1457c59d87c4SChristoph Hellwig ), 1458c59d87c4SChristoph Hellwig TP_fast_assign( 1459c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 1460c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 146113d2c10bSChristoph Hellwig __entry->size = ip->i_disk_size; 1462c59d87c4SChristoph Hellwig __entry->offset = offset; 1463c59d87c4SChristoph Hellwig __entry->count = count; 1464be225fecSChristoph Hellwig __entry->whichfork = whichfork; 1465c59d87c4SChristoph Hellwig __entry->startoff = irec ? irec->br_startoff : 0; 1466c59d87c4SChristoph Hellwig __entry->startblock = irec ? irec->br_startblock : 0; 1467c59d87c4SChristoph Hellwig __entry->blockcount = irec ? irec->br_blockcount : 0; 1468c59d87c4SChristoph Hellwig ), 1469c23460ebSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx disize 0x%llx pos 0x%llx bytecount 0x%zx " 14707989acccSDarrick J. Wong "fork %s startoff 0x%llx startblock 0x%llx fsbcount 0x%llx", 1471c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1472c59d87c4SChristoph Hellwig __entry->ino, 1473c59d87c4SChristoph Hellwig __entry->size, 1474c59d87c4SChristoph Hellwig __entry->offset, 1475c59d87c4SChristoph Hellwig __entry->count, 1476f93f85f7SDarrick J. Wong __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS), 1477c59d87c4SChristoph Hellwig __entry->startoff, 1478c8ce540dSDarrick J. Wong (int64_t)__entry->startblock, 1479c59d87c4SChristoph Hellwig __entry->blockcount) 1480c59d87c4SChristoph Hellwig ) 1481c59d87c4SChristoph Hellwig 1482be225fecSChristoph Hellwig #define DEFINE_IMAP_EVENT(name) \ 1483c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_imap_class, name, \ 1484c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count, \ 1485be225fecSChristoph Hellwig int whichfork, struct xfs_bmbt_irec *irec), \ 1486be225fecSChristoph Hellwig TP_ARGS(ip, offset, count, whichfork, irec)) 1487be225fecSChristoph Hellwig DEFINE_IMAP_EVENT(xfs_map_blocks_found); 1488be225fecSChristoph Hellwig DEFINE_IMAP_EVENT(xfs_map_blocks_alloc); 1489be225fecSChristoph Hellwig DEFINE_IMAP_EVENT(xfs_iomap_alloc); 1490be225fecSChristoph Hellwig DEFINE_IMAP_EVENT(xfs_iomap_found); 1491c59d87c4SChristoph Hellwig 1492c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_simple_io_class, 1493c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count), 1494c59d87c4SChristoph Hellwig TP_ARGS(ip, offset, count), 1495c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1496c59d87c4SChristoph Hellwig __field(dev_t, dev) 1497c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1498c59d87c4SChristoph Hellwig __field(loff_t, isize) 1499c59d87c4SChristoph Hellwig __field(loff_t, disize) 1500c59d87c4SChristoph Hellwig __field(loff_t, offset) 1501c59d87c4SChristoph Hellwig __field(size_t, count) 1502c59d87c4SChristoph Hellwig ), 1503c59d87c4SChristoph Hellwig TP_fast_assign( 1504c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 1505c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 1506ce7ae151SChristoph Hellwig __entry->isize = VFS_I(ip)->i_size; 150713d2c10bSChristoph Hellwig __entry->disize = ip->i_disk_size; 1508c59d87c4SChristoph Hellwig __entry->offset = offset; 1509c59d87c4SChristoph Hellwig __entry->count = count; 1510c59d87c4SChristoph Hellwig ), 15112813d682SChristoph Hellwig TP_printk("dev %d:%d ino 0x%llx isize 0x%llx disize 0x%llx " 1512d538cf24SDarrick J. Wong "pos 0x%llx bytecount 0x%zx", 1513c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1514c59d87c4SChristoph Hellwig __entry->ino, 1515c59d87c4SChristoph Hellwig __entry->isize, 1516c59d87c4SChristoph Hellwig __entry->disize, 1517c59d87c4SChristoph Hellwig __entry->offset, 1518c59d87c4SChristoph Hellwig __entry->count) 1519c59d87c4SChristoph Hellwig ); 1520c59d87c4SChristoph Hellwig 1521c59d87c4SChristoph Hellwig #define DEFINE_SIMPLE_IO_EVENT(name) \ 1522c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_simple_io_class, name, \ 1523c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count), \ 1524c59d87c4SChristoph Hellwig TP_ARGS(ip, offset, count)) 1525c59d87c4SChristoph Hellwig DEFINE_SIMPLE_IO_EVENT(xfs_delalloc_enospc); 1526c59d87c4SChristoph Hellwig DEFINE_SIMPLE_IO_EVENT(xfs_unwritten_convert); 1527c59d87c4SChristoph Hellwig DEFINE_SIMPLE_IO_EVENT(xfs_setfilesize); 15280a50f162SBrian Foster DEFINE_SIMPLE_IO_EVENT(xfs_zero_eof); 1529273dda76SChristoph Hellwig DEFINE_SIMPLE_IO_EVENT(xfs_end_io_direct_write); 1530273dda76SChristoph Hellwig DEFINE_SIMPLE_IO_EVENT(xfs_end_io_direct_write_unwritten); 1531273dda76SChristoph Hellwig DEFINE_SIMPLE_IO_EVENT(xfs_end_io_direct_write_append); 153254919f94SDavid Howells DEFINE_SIMPLE_IO_EVENT(xfs_file_splice_read); 1533c59d87c4SChristoph Hellwig 1534c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_itrunc_class, 1535c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), 1536c59d87c4SChristoph Hellwig TP_ARGS(ip, new_size), 1537c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1538c59d87c4SChristoph Hellwig __field(dev_t, dev) 1539c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1540c59d87c4SChristoph Hellwig __field(xfs_fsize_t, size) 1541c59d87c4SChristoph Hellwig __field(xfs_fsize_t, new_size) 1542c59d87c4SChristoph Hellwig ), 1543c59d87c4SChristoph Hellwig TP_fast_assign( 1544c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 1545c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 154613d2c10bSChristoph Hellwig __entry->size = ip->i_disk_size; 1547c59d87c4SChristoph Hellwig __entry->new_size = new_size; 1548c59d87c4SChristoph Hellwig ), 1549c23460ebSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx disize 0x%llx new_size 0x%llx", 1550c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1551c59d87c4SChristoph Hellwig __entry->ino, 1552c59d87c4SChristoph Hellwig __entry->size, 1553c59d87c4SChristoph Hellwig __entry->new_size) 1554c59d87c4SChristoph Hellwig ) 1555c59d87c4SChristoph Hellwig 1556c59d87c4SChristoph Hellwig #define DEFINE_ITRUNC_EVENT(name) \ 1557c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_itrunc_class, name, \ 1558c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), \ 1559c59d87c4SChristoph Hellwig TP_ARGS(ip, new_size)) 1560673e8e59SChristoph Hellwig DEFINE_ITRUNC_EVENT(xfs_itruncate_extents_start); 1561673e8e59SChristoph Hellwig DEFINE_ITRUNC_EVENT(xfs_itruncate_extents_end); 1562c59d87c4SChristoph Hellwig 1563c59d87c4SChristoph Hellwig TRACE_EVENT(xfs_pagecache_inval, 1564c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, xfs_off_t start, xfs_off_t finish), 1565c59d87c4SChristoph Hellwig TP_ARGS(ip, start, finish), 1566c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1567c59d87c4SChristoph Hellwig __field(dev_t, dev) 1568c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1569c59d87c4SChristoph Hellwig __field(xfs_fsize_t, size) 1570c59d87c4SChristoph Hellwig __field(xfs_off_t, start) 1571c59d87c4SChristoph Hellwig __field(xfs_off_t, finish) 1572c59d87c4SChristoph Hellwig ), 1573c59d87c4SChristoph Hellwig TP_fast_assign( 1574c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 1575c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 157613d2c10bSChristoph Hellwig __entry->size = ip->i_disk_size; 1577c59d87c4SChristoph Hellwig __entry->start = start; 1578c59d87c4SChristoph Hellwig __entry->finish = finish; 1579c59d87c4SChristoph Hellwig ), 1580c23460ebSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx disize 0x%llx start 0x%llx finish 0x%llx", 1581c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1582c59d87c4SChristoph Hellwig __entry->ino, 1583c59d87c4SChristoph Hellwig __entry->size, 1584c59d87c4SChristoph Hellwig __entry->start, 1585c59d87c4SChristoph Hellwig __entry->finish) 1586c59d87c4SChristoph Hellwig ); 1587c59d87c4SChristoph Hellwig 1588c59d87c4SChristoph Hellwig TRACE_EVENT(xfs_bunmap, 15896f25b211SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, xfs_fileoff_t fileoff, xfs_filblks_t len, 1590c59d87c4SChristoph Hellwig int flags, unsigned long caller_ip), 15916f25b211SDarrick J. Wong TP_ARGS(ip, fileoff, len, flags, caller_ip), 1592c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1593c59d87c4SChristoph Hellwig __field(dev_t, dev) 1594c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1595c59d87c4SChristoph Hellwig __field(xfs_fsize_t, size) 15966f25b211SDarrick J. Wong __field(xfs_fileoff_t, fileoff) 1597c59d87c4SChristoph Hellwig __field(xfs_filblks_t, len) 1598c59d87c4SChristoph Hellwig __field(unsigned long, caller_ip) 1599c59d87c4SChristoph Hellwig __field(int, flags) 1600c59d87c4SChristoph Hellwig ), 1601c59d87c4SChristoph Hellwig TP_fast_assign( 1602c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 1603c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 160413d2c10bSChristoph Hellwig __entry->size = ip->i_disk_size; 16056f25b211SDarrick J. Wong __entry->fileoff = fileoff; 1606c59d87c4SChristoph Hellwig __entry->len = len; 1607c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 1608c59d87c4SChristoph Hellwig __entry->flags = flags; 1609c59d87c4SChristoph Hellwig ), 1610c23460ebSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx disize 0x%llx fileoff 0x%llx fsbcount 0x%llx " 1611aff68a55SDarrick J. Wong "flags %s caller %pS", 1612c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1613c59d87c4SChristoph Hellwig __entry->ino, 1614c59d87c4SChristoph Hellwig __entry->size, 16156f25b211SDarrick J. Wong __entry->fileoff, 1616c59d87c4SChristoph Hellwig __entry->len, 1617c59d87c4SChristoph Hellwig __print_flags(__entry->flags, "|", XFS_BMAPI_FLAGS), 1618c59d87c4SChristoph Hellwig (void *)__entry->caller_ip) 1619c59d87c4SChristoph Hellwig 1620c59d87c4SChristoph Hellwig ); 1621c59d87c4SChristoph Hellwig 16224ecbfe63SDave Chinner DECLARE_EVENT_CLASS(xfs_extent_busy_class, 1623c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 1624c59d87c4SChristoph Hellwig xfs_agblock_t agbno, xfs_extlen_t len), 1625c59d87c4SChristoph Hellwig TP_ARGS(mp, agno, agbno, len), 1626c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1627c59d87c4SChristoph Hellwig __field(dev_t, dev) 1628c59d87c4SChristoph Hellwig __field(xfs_agnumber_t, agno) 1629c59d87c4SChristoph Hellwig __field(xfs_agblock_t, agbno) 1630c59d87c4SChristoph Hellwig __field(xfs_extlen_t, len) 1631c59d87c4SChristoph Hellwig ), 1632c59d87c4SChristoph Hellwig TP_fast_assign( 1633c59d87c4SChristoph Hellwig __entry->dev = mp->m_super->s_dev; 1634c59d87c4SChristoph Hellwig __entry->agno = agno; 1635c59d87c4SChristoph Hellwig __entry->agbno = agbno; 1636c59d87c4SChristoph Hellwig __entry->len = len; 1637c59d87c4SChristoph Hellwig ), 16387989acccSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x", 1639c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1640c59d87c4SChristoph Hellwig __entry->agno, 1641c59d87c4SChristoph Hellwig __entry->agbno, 1642c59d87c4SChristoph Hellwig __entry->len) 1643c59d87c4SChristoph Hellwig ); 1644c59d87c4SChristoph Hellwig #define DEFINE_BUSY_EVENT(name) \ 16454ecbfe63SDave Chinner DEFINE_EVENT(xfs_extent_busy_class, name, \ 1646c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 1647c59d87c4SChristoph Hellwig xfs_agblock_t agbno, xfs_extlen_t len), \ 1648c59d87c4SChristoph Hellwig TP_ARGS(mp, agno, agbno, len)) 16494ecbfe63SDave Chinner DEFINE_BUSY_EVENT(xfs_extent_busy); 16504ecbfe63SDave Chinner DEFINE_BUSY_EVENT(xfs_extent_busy_enomem); 16514ecbfe63SDave Chinner DEFINE_BUSY_EVENT(xfs_extent_busy_force); 16524ecbfe63SDave Chinner DEFINE_BUSY_EVENT(xfs_extent_busy_reuse); 16534ecbfe63SDave Chinner DEFINE_BUSY_EVENT(xfs_extent_busy_clear); 1654c59d87c4SChristoph Hellwig 16554ecbfe63SDave Chinner TRACE_EVENT(xfs_extent_busy_trim, 1656c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 1657c59d87c4SChristoph Hellwig xfs_agblock_t agbno, xfs_extlen_t len, 1658c59d87c4SChristoph Hellwig xfs_agblock_t tbno, xfs_extlen_t tlen), 1659c59d87c4SChristoph Hellwig TP_ARGS(mp, agno, agbno, len, tbno, tlen), 1660c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1661c59d87c4SChristoph Hellwig __field(dev_t, dev) 1662c59d87c4SChristoph Hellwig __field(xfs_agnumber_t, agno) 1663c59d87c4SChristoph Hellwig __field(xfs_agblock_t, agbno) 1664c59d87c4SChristoph Hellwig __field(xfs_extlen_t, len) 1665c59d87c4SChristoph Hellwig __field(xfs_agblock_t, tbno) 1666c59d87c4SChristoph Hellwig __field(xfs_extlen_t, tlen) 1667c59d87c4SChristoph Hellwig ), 1668c59d87c4SChristoph Hellwig TP_fast_assign( 1669c59d87c4SChristoph Hellwig __entry->dev = mp->m_super->s_dev; 1670c59d87c4SChristoph Hellwig __entry->agno = agno; 1671c59d87c4SChristoph Hellwig __entry->agbno = agbno; 1672c59d87c4SChristoph Hellwig __entry->len = len; 1673c59d87c4SChristoph Hellwig __entry->tbno = tbno; 1674c59d87c4SChristoph Hellwig __entry->tlen = tlen; 1675c59d87c4SChristoph Hellwig ), 16767989acccSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x found_agbno 0x%x found_fsbcount 0x%x", 1677c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1678c59d87c4SChristoph Hellwig __entry->agno, 1679c59d87c4SChristoph Hellwig __entry->agbno, 1680c59d87c4SChristoph Hellwig __entry->len, 1681c59d87c4SChristoph Hellwig __entry->tbno, 1682c59d87c4SChristoph Hellwig __entry->tlen) 1683c59d87c4SChristoph Hellwig ); 1684c59d87c4SChristoph Hellwig 1685a27ba260SBrian Foster DECLARE_EVENT_CLASS(xfs_agf_class, 1686c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, struct xfs_agf *agf, int flags, 1687c59d87c4SChristoph Hellwig unsigned long caller_ip), 1688c59d87c4SChristoph Hellwig TP_ARGS(mp, agf, flags, caller_ip), 1689c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1690c59d87c4SChristoph Hellwig __field(dev_t, dev) 1691c59d87c4SChristoph Hellwig __field(xfs_agnumber_t, agno) 1692c59d87c4SChristoph Hellwig __field(int, flags) 1693c59d87c4SChristoph Hellwig __field(__u32, length) 1694c59d87c4SChristoph Hellwig __field(__u32, bno_root) 1695c59d87c4SChristoph Hellwig __field(__u32, cnt_root) 1696c59d87c4SChristoph Hellwig __field(__u32, bno_level) 1697c59d87c4SChristoph Hellwig __field(__u32, cnt_level) 1698c59d87c4SChristoph Hellwig __field(__u32, flfirst) 1699c59d87c4SChristoph Hellwig __field(__u32, fllast) 1700c59d87c4SChristoph Hellwig __field(__u32, flcount) 1701c59d87c4SChristoph Hellwig __field(__u32, freeblks) 1702c59d87c4SChristoph Hellwig __field(__u32, longest) 1703c59d87c4SChristoph Hellwig __field(unsigned long, caller_ip) 1704c59d87c4SChristoph Hellwig ), 1705c59d87c4SChristoph Hellwig TP_fast_assign( 1706c59d87c4SChristoph Hellwig __entry->dev = mp->m_super->s_dev; 1707c59d87c4SChristoph Hellwig __entry->agno = be32_to_cpu(agf->agf_seqno), 1708c59d87c4SChristoph Hellwig __entry->flags = flags; 1709c59d87c4SChristoph Hellwig __entry->length = be32_to_cpu(agf->agf_length), 1710c59d87c4SChristoph Hellwig __entry->bno_root = be32_to_cpu(agf->agf_roots[XFS_BTNUM_BNO]), 1711c59d87c4SChristoph Hellwig __entry->cnt_root = be32_to_cpu(agf->agf_roots[XFS_BTNUM_CNT]), 1712c59d87c4SChristoph Hellwig __entry->bno_level = 1713c59d87c4SChristoph Hellwig be32_to_cpu(agf->agf_levels[XFS_BTNUM_BNO]), 1714c59d87c4SChristoph Hellwig __entry->cnt_level = 1715c59d87c4SChristoph Hellwig be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNT]), 1716c59d87c4SChristoph Hellwig __entry->flfirst = be32_to_cpu(agf->agf_flfirst), 1717c59d87c4SChristoph Hellwig __entry->fllast = be32_to_cpu(agf->agf_fllast), 1718c59d87c4SChristoph Hellwig __entry->flcount = be32_to_cpu(agf->agf_flcount), 1719c59d87c4SChristoph Hellwig __entry->freeblks = be32_to_cpu(agf->agf_freeblks), 1720c59d87c4SChristoph Hellwig __entry->longest = be32_to_cpu(agf->agf_longest); 1721c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 1722c59d87c4SChristoph Hellwig ), 17239febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x flags %s length %u roots b %u c %u " 1724c59d87c4SChristoph Hellwig "levels b %u c %u flfirst %u fllast %u flcount %u " 1725aff68a55SDarrick J. Wong "freeblks %u longest %u caller %pS", 1726c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1727c59d87c4SChristoph Hellwig __entry->agno, 1728c59d87c4SChristoph Hellwig __print_flags(__entry->flags, "|", XFS_AGF_FLAGS), 1729c59d87c4SChristoph Hellwig __entry->length, 1730c59d87c4SChristoph Hellwig __entry->bno_root, 1731c59d87c4SChristoph Hellwig __entry->cnt_root, 1732c59d87c4SChristoph Hellwig __entry->bno_level, 1733c59d87c4SChristoph Hellwig __entry->cnt_level, 1734c59d87c4SChristoph Hellwig __entry->flfirst, 1735c59d87c4SChristoph Hellwig __entry->fllast, 1736c59d87c4SChristoph Hellwig __entry->flcount, 1737c59d87c4SChristoph Hellwig __entry->freeblks, 1738c59d87c4SChristoph Hellwig __entry->longest, 1739c59d87c4SChristoph Hellwig (void *)__entry->caller_ip) 1740c59d87c4SChristoph Hellwig ); 1741a27ba260SBrian Foster #define DEFINE_AGF_EVENT(name) \ 1742a27ba260SBrian Foster DEFINE_EVENT(xfs_agf_class, name, \ 1743a27ba260SBrian Foster TP_PROTO(struct xfs_mount *mp, struct xfs_agf *agf, int flags, \ 1744a27ba260SBrian Foster unsigned long caller_ip), \ 1745a27ba260SBrian Foster TP_ARGS(mp, agf, flags, caller_ip)) 1746a27ba260SBrian Foster DEFINE_AGF_EVENT(xfs_agf); 1747a27ba260SBrian Foster DEFINE_AGF_EVENT(xfs_agfl_reset); 1748c59d87c4SChristoph Hellwig 1749c59d87c4SChristoph Hellwig TRACE_EVENT(xfs_free_extent, 1750c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno, 17513fd129b6SDarrick J. Wong xfs_extlen_t len, enum xfs_ag_resv_type resv, int haveleft, 17523fd129b6SDarrick J. Wong int haveright), 17533fd129b6SDarrick J. Wong TP_ARGS(mp, agno, agbno, len, resv, haveleft, haveright), 1754c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1755c59d87c4SChristoph Hellwig __field(dev_t, dev) 1756c59d87c4SChristoph Hellwig __field(xfs_agnumber_t, agno) 1757c59d87c4SChristoph Hellwig __field(xfs_agblock_t, agbno) 1758c59d87c4SChristoph Hellwig __field(xfs_extlen_t, len) 17593fd129b6SDarrick J. Wong __field(int, resv) 1760c59d87c4SChristoph Hellwig __field(int, haveleft) 1761c59d87c4SChristoph Hellwig __field(int, haveright) 1762c59d87c4SChristoph Hellwig ), 1763c59d87c4SChristoph Hellwig TP_fast_assign( 1764c59d87c4SChristoph Hellwig __entry->dev = mp->m_super->s_dev; 1765c59d87c4SChristoph Hellwig __entry->agno = agno; 1766c59d87c4SChristoph Hellwig __entry->agbno = agbno; 1767c59d87c4SChristoph Hellwig __entry->len = len; 17683fd129b6SDarrick J. Wong __entry->resv = resv; 1769c59d87c4SChristoph Hellwig __entry->haveleft = haveleft; 1770c59d87c4SChristoph Hellwig __entry->haveright = haveright; 1771c59d87c4SChristoph Hellwig ), 17727989acccSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x resv %d %s", 1773c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1774c59d87c4SChristoph Hellwig __entry->agno, 1775c59d87c4SChristoph Hellwig __entry->agbno, 1776c59d87c4SChristoph Hellwig __entry->len, 17773fd129b6SDarrick J. Wong __entry->resv, 1778c59d87c4SChristoph Hellwig __entry->haveleft ? 1779c59d87c4SChristoph Hellwig (__entry->haveright ? "both" : "left") : 1780c59d87c4SChristoph Hellwig (__entry->haveright ? "right" : "none")) 1781c59d87c4SChristoph Hellwig 1782c59d87c4SChristoph Hellwig ); 1783c59d87c4SChristoph Hellwig 1784c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_alloc_class, 1785c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_alloc_arg *args), 1786c59d87c4SChristoph Hellwig TP_ARGS(args), 1787c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1788c59d87c4SChristoph Hellwig __field(dev_t, dev) 1789c59d87c4SChristoph Hellwig __field(xfs_agnumber_t, agno) 1790c59d87c4SChristoph Hellwig __field(xfs_agblock_t, agbno) 1791c59d87c4SChristoph Hellwig __field(xfs_extlen_t, minlen) 1792c59d87c4SChristoph Hellwig __field(xfs_extlen_t, maxlen) 1793c59d87c4SChristoph Hellwig __field(xfs_extlen_t, mod) 1794c59d87c4SChristoph Hellwig __field(xfs_extlen_t, prod) 1795c59d87c4SChristoph Hellwig __field(xfs_extlen_t, minleft) 1796c59d87c4SChristoph Hellwig __field(xfs_extlen_t, total) 1797c59d87c4SChristoph Hellwig __field(xfs_extlen_t, alignment) 1798c59d87c4SChristoph Hellwig __field(xfs_extlen_t, minalignslop) 1799c59d87c4SChristoph Hellwig __field(xfs_extlen_t, len) 1800c59d87c4SChristoph Hellwig __field(char, wasdel) 1801c59d87c4SChristoph Hellwig __field(char, wasfromfl) 18023fd129b6SDarrick J. Wong __field(int, resv) 1803292378edSDave Chinner __field(int, datatype) 1804692b6cddSDave Chinner __field(xfs_agnumber_t, highest_agno) 1805c59d87c4SChristoph Hellwig ), 1806c59d87c4SChristoph Hellwig TP_fast_assign( 1807c59d87c4SChristoph Hellwig __entry->dev = args->mp->m_super->s_dev; 1808c59d87c4SChristoph Hellwig __entry->agno = args->agno; 1809c59d87c4SChristoph Hellwig __entry->agbno = args->agbno; 1810c59d87c4SChristoph Hellwig __entry->minlen = args->minlen; 1811c59d87c4SChristoph Hellwig __entry->maxlen = args->maxlen; 1812c59d87c4SChristoph Hellwig __entry->mod = args->mod; 1813c59d87c4SChristoph Hellwig __entry->prod = args->prod; 1814c59d87c4SChristoph Hellwig __entry->minleft = args->minleft; 1815c59d87c4SChristoph Hellwig __entry->total = args->total; 1816c59d87c4SChristoph Hellwig __entry->alignment = args->alignment; 1817c59d87c4SChristoph Hellwig __entry->minalignslop = args->minalignslop; 1818c59d87c4SChristoph Hellwig __entry->len = args->len; 1819c59d87c4SChristoph Hellwig __entry->wasdel = args->wasdel; 1820c59d87c4SChristoph Hellwig __entry->wasfromfl = args->wasfromfl; 18213fd129b6SDarrick J. Wong __entry->resv = args->resv; 1822292378edSDave Chinner __entry->datatype = args->datatype; 1823692b6cddSDave Chinner __entry->highest_agno = args->tp->t_highest_agno; 1824c59d87c4SChristoph Hellwig ), 1825f7b08163SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x minlen %u maxlen %u mod %u " 1826c59d87c4SChristoph Hellwig "prod %u minleft %u total %u alignment %u minalignslop %u " 1827230e8fe8SDave Chinner "len %u wasdel %d wasfromfl %d resv %d " 1828692b6cddSDave Chinner "datatype 0x%x highest_agno 0x%x", 1829c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1830c59d87c4SChristoph Hellwig __entry->agno, 1831c59d87c4SChristoph Hellwig __entry->agbno, 1832c59d87c4SChristoph Hellwig __entry->minlen, 1833c59d87c4SChristoph Hellwig __entry->maxlen, 1834c59d87c4SChristoph Hellwig __entry->mod, 1835c59d87c4SChristoph Hellwig __entry->prod, 1836c59d87c4SChristoph Hellwig __entry->minleft, 1837c59d87c4SChristoph Hellwig __entry->total, 1838c59d87c4SChristoph Hellwig __entry->alignment, 1839c59d87c4SChristoph Hellwig __entry->minalignslop, 1840c59d87c4SChristoph Hellwig __entry->len, 1841c59d87c4SChristoph Hellwig __entry->wasdel, 1842c59d87c4SChristoph Hellwig __entry->wasfromfl, 18433fd129b6SDarrick J. Wong __entry->resv, 1844292378edSDave Chinner __entry->datatype, 1845692b6cddSDave Chinner __entry->highest_agno) 1846c59d87c4SChristoph Hellwig ) 1847c59d87c4SChristoph Hellwig 1848c59d87c4SChristoph Hellwig #define DEFINE_ALLOC_EVENT(name) \ 1849c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_alloc_class, name, \ 1850c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_alloc_arg *args), \ 1851c59d87c4SChristoph Hellwig TP_ARGS(args)) 1852c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_exact_done); 1853c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_exact_notfound); 1854c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_exact_error); 1855c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_near_nominleft); 1856c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_near_first); 1857d2968825SBrian Foster DEFINE_ALLOC_EVENT(xfs_alloc_cur); 1858fec0afdaSBrian Foster DEFINE_ALLOC_EVENT(xfs_alloc_cur_right); 1859fec0afdaSBrian Foster DEFINE_ALLOC_EVENT(xfs_alloc_cur_left); 1860dc8e69bdSBrian Foster DEFINE_ALLOC_EVENT(xfs_alloc_cur_lookup); 1861dc8e69bdSBrian Foster DEFINE_ALLOC_EVENT(xfs_alloc_cur_lookup_done); 1862c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_near_error); 1863c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_near_noentry); 1864c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_near_busy); 1865c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_size_neither); 1866c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_size_noentry); 1867c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_size_nominleft); 1868c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_size_done); 1869c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_size_error); 1870c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_size_busy); 1871c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_small_freelist); 1872c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_small_notenough); 1873c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_small_done); 1874c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_small_error); 1875c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_vextent_badargs); 18761dd0510fSDave Chinner DEFINE_ALLOC_EVENT(xfs_alloc_vextent_skip_deadlock); 1877c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_vextent_nofix); 1878c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_vextent_noagbp); 1879c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_vextent_loopfailed); 1880c59d87c4SChristoph Hellwig DEFINE_ALLOC_EVENT(xfs_alloc_vextent_allfailed); 1881c59d87c4SChristoph Hellwig 1882e6fbb716SDarrick J. Wong DEFINE_ALLOC_EVENT(xfs_alloc_vextent_this_ag); 1883e6fbb716SDarrick J. Wong DEFINE_ALLOC_EVENT(xfs_alloc_vextent_start_ag); 1884e6fbb716SDarrick J. Wong DEFINE_ALLOC_EVENT(xfs_alloc_vextent_first_ag); 1885e6fbb716SDarrick J. Wong DEFINE_ALLOC_EVENT(xfs_alloc_vextent_exact_bno); 1886e6fbb716SDarrick J. Wong DEFINE_ALLOC_EVENT(xfs_alloc_vextent_near_bno); 1887e6fbb716SDarrick J. Wong DEFINE_ALLOC_EVENT(xfs_alloc_vextent_finish); 1888e6fbb716SDarrick J. Wong 1889396bbf3cSBrian Foster TRACE_EVENT(xfs_alloc_cur_check, 1890396bbf3cSBrian Foster TP_PROTO(struct xfs_mount *mp, xfs_btnum_t btnum, xfs_agblock_t bno, 1891396bbf3cSBrian Foster xfs_extlen_t len, xfs_extlen_t diff, bool new), 1892396bbf3cSBrian Foster TP_ARGS(mp, btnum, bno, len, diff, new), 1893396bbf3cSBrian Foster TP_STRUCT__entry( 1894396bbf3cSBrian Foster __field(dev_t, dev) 1895396bbf3cSBrian Foster __field(xfs_btnum_t, btnum) 1896396bbf3cSBrian Foster __field(xfs_agblock_t, bno) 1897396bbf3cSBrian Foster __field(xfs_extlen_t, len) 1898396bbf3cSBrian Foster __field(xfs_extlen_t, diff) 1899396bbf3cSBrian Foster __field(bool, new) 1900396bbf3cSBrian Foster ), 1901396bbf3cSBrian Foster TP_fast_assign( 1902396bbf3cSBrian Foster __entry->dev = mp->m_super->s_dev; 1903396bbf3cSBrian Foster __entry->btnum = btnum; 1904396bbf3cSBrian Foster __entry->bno = bno; 1905396bbf3cSBrian Foster __entry->len = len; 1906396bbf3cSBrian Foster __entry->diff = diff; 1907396bbf3cSBrian Foster __entry->new = new; 1908396bbf3cSBrian Foster ), 19097989acccSDarrick J. Wong TP_printk("dev %d:%d btree %s agbno 0x%x fsbcount 0x%x diff 0x%x new %d", 1910396bbf3cSBrian Foster MAJOR(__entry->dev), MINOR(__entry->dev), 1911396bbf3cSBrian Foster __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 1912396bbf3cSBrian Foster __entry->bno, __entry->len, __entry->diff, __entry->new) 1913396bbf3cSBrian Foster ) 1914396bbf3cSBrian Foster 19155a5881cdSDave Chinner DECLARE_EVENT_CLASS(xfs_da_class, 1916c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_da_args *args), 1917c59d87c4SChristoph Hellwig TP_ARGS(args), 1918c59d87c4SChristoph Hellwig TP_STRUCT__entry( 1919c59d87c4SChristoph Hellwig __field(dev_t, dev) 1920c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 1921c59d87c4SChristoph Hellwig __dynamic_array(char, name, args->namelen) 1922c59d87c4SChristoph Hellwig __field(int, namelen) 1923c59d87c4SChristoph Hellwig __field(xfs_dahash_t, hashval) 1924c59d87c4SChristoph Hellwig __field(xfs_ino_t, inumber) 19253402d931SDave Chinner __field(uint32_t, op_flags) 1926c59d87c4SChristoph Hellwig ), 1927c59d87c4SChristoph Hellwig TP_fast_assign( 1928c59d87c4SChristoph Hellwig __entry->dev = VFS_I(args->dp)->i_sb->s_dev; 1929c59d87c4SChristoph Hellwig __entry->ino = args->dp->i_ino; 1930c59d87c4SChristoph Hellwig if (args->namelen) 1931c59d87c4SChristoph Hellwig memcpy(__get_str(name), args->name, args->namelen); 1932c59d87c4SChristoph Hellwig __entry->namelen = args->namelen; 1933c59d87c4SChristoph Hellwig __entry->hashval = args->hashval; 1934c59d87c4SChristoph Hellwig __entry->inumber = args->inumber; 1935c59d87c4SChristoph Hellwig __entry->op_flags = args->op_flags; 1936c59d87c4SChristoph Hellwig ), 1937c59d87c4SChristoph Hellwig TP_printk("dev %d:%d ino 0x%llx name %.*s namelen %d hashval 0x%x " 1938c59d87c4SChristoph Hellwig "inumber 0x%llx op_flags %s", 1939c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 1940c59d87c4SChristoph Hellwig __entry->ino, 1941c59d87c4SChristoph Hellwig __entry->namelen, 1942c59d87c4SChristoph Hellwig __entry->namelen ? __get_str(name) : NULL, 1943c59d87c4SChristoph Hellwig __entry->namelen, 1944c59d87c4SChristoph Hellwig __entry->hashval, 1945c59d87c4SChristoph Hellwig __entry->inumber, 1946c59d87c4SChristoph Hellwig __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS)) 1947c59d87c4SChristoph Hellwig ) 1948c59d87c4SChristoph Hellwig 1949c59d87c4SChristoph Hellwig #define DEFINE_DIR2_EVENT(name) \ 19505a5881cdSDave Chinner DEFINE_EVENT(xfs_da_class, name, \ 1951c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_da_args *args), \ 1952c59d87c4SChristoph Hellwig TP_ARGS(args)) 1953c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_addname); 1954c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_create); 1955c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_lookup); 1956c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_replace); 1957c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_removename); 1958c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_toino4); 1959c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_toino8); 1960c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_sf_to_block); 1961c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_block_addname); 1962c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_block_lookup); 1963c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_block_replace); 1964c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_block_removename); 1965c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_block_to_sf); 1966c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_block_to_leaf); 1967c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_leaf_addname); 1968c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_leaf_lookup); 1969c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_leaf_replace); 1970c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_leaf_removename); 1971c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_leaf_to_block); 1972c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_leaf_to_node); 1973c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_node_addname); 1974c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_node_lookup); 1975c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_node_replace); 1976c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_node_removename); 1977c59d87c4SChristoph Hellwig DEFINE_DIR2_EVENT(xfs_dir2_node_to_leaf); 1978c59d87c4SChristoph Hellwig 1979ee73259bSDave Chinner DECLARE_EVENT_CLASS(xfs_attr_class, 1980ee73259bSDave Chinner TP_PROTO(struct xfs_da_args *args), 1981ee73259bSDave Chinner TP_ARGS(args), 1982ee73259bSDave Chinner TP_STRUCT__entry( 1983ee73259bSDave Chinner __field(dev_t, dev) 1984ee73259bSDave Chinner __field(xfs_ino_t, ino) 1985ee73259bSDave Chinner __dynamic_array(char, name, args->namelen) 1986ee73259bSDave Chinner __field(int, namelen) 1987ee73259bSDave Chinner __field(int, valuelen) 1988ee73259bSDave Chinner __field(xfs_dahash_t, hashval) 1989d5f0f49aSChristoph Hellwig __field(unsigned int, attr_filter) 1990d5f0f49aSChristoph Hellwig __field(unsigned int, attr_flags) 19913402d931SDave Chinner __field(uint32_t, op_flags) 1992ee73259bSDave Chinner ), 1993ee73259bSDave Chinner TP_fast_assign( 1994ee73259bSDave Chinner __entry->dev = VFS_I(args->dp)->i_sb->s_dev; 1995ee73259bSDave Chinner __entry->ino = args->dp->i_ino; 1996ee73259bSDave Chinner if (args->namelen) 1997ee73259bSDave Chinner memcpy(__get_str(name), args->name, args->namelen); 1998ee73259bSDave Chinner __entry->namelen = args->namelen; 1999ee73259bSDave Chinner __entry->valuelen = args->valuelen; 2000ee73259bSDave Chinner __entry->hashval = args->hashval; 2001d5f0f49aSChristoph Hellwig __entry->attr_filter = args->attr_filter; 2002d5f0f49aSChristoph Hellwig __entry->attr_flags = args->attr_flags; 2003ee73259bSDave Chinner __entry->op_flags = args->op_flags; 2004ee73259bSDave Chinner ), 2005ee73259bSDave Chinner TP_printk("dev %d:%d ino 0x%llx name %.*s namelen %d valuelen %d " 2006d5f0f49aSChristoph Hellwig "hashval 0x%x filter %s flags %s op_flags %s", 2007ee73259bSDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 2008ee73259bSDave Chinner __entry->ino, 2009ee73259bSDave Chinner __entry->namelen, 2010ee73259bSDave Chinner __entry->namelen ? __get_str(name) : NULL, 2011ee73259bSDave Chinner __entry->namelen, 2012ee73259bSDave Chinner __entry->valuelen, 2013ee73259bSDave Chinner __entry->hashval, 2014d5f0f49aSChristoph Hellwig __print_flags(__entry->attr_filter, "|", 2015d5f0f49aSChristoph Hellwig XFS_ATTR_FILTER_FLAGS), 2016d5f0f49aSChristoph Hellwig __print_flags(__entry->attr_flags, "|", 2017d5f0f49aSChristoph Hellwig { XATTR_CREATE, "CREATE" }, 2018d5f0f49aSChristoph Hellwig { XATTR_REPLACE, "REPLACE" }), 2019ee73259bSDave Chinner __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS)) 2020ee73259bSDave Chinner ) 2021ee73259bSDave Chinner 20225a5881cdSDave Chinner #define DEFINE_ATTR_EVENT(name) \ 2023ee73259bSDave Chinner DEFINE_EVENT(xfs_attr_class, name, \ 20245a5881cdSDave Chinner TP_PROTO(struct xfs_da_args *args), \ 20255a5881cdSDave Chinner TP_ARGS(args)) 20265a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_sf_add); 20275a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_sf_addname); 20285a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_sf_create); 20295a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_sf_lookup); 20305a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_sf_remove); 20315a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_sf_to_leaf); 20325a5881cdSDave Chinner 20335a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_add); 20345a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_add_old); 20355a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_add_new); 2036ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_add_work); 20375a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_create); 2038ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_compact); 2039ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_get); 20405a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_lookup); 20415a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_replace); 2042ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_remove); 20435a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_removename); 20445a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_split); 20455a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_split_before); 20465a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_split_after); 20475a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_clearflag); 20485a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_setflag); 20495a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_flipflags); 20505a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_to_sf); 20515a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_to_node); 20525a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_rebalance); 20535a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_unbalance); 2054ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_leaf_toosmall); 20555a5881cdSDave Chinner 20565a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_node_addname); 2057ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_node_get); 20585a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_node_replace); 20595a5881cdSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_node_removename); 20605a5881cdSDave Chinner 2061ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_fillstate); 2062ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_refillstate); 2063ee73259bSDave Chinner 2064ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_rmtval_get); 2065ee73259bSDave Chinner DEFINE_ATTR_EVENT(xfs_attr_rmtval_set); 2066ee73259bSDave Chinner 20675a5881cdSDave Chinner #define DEFINE_DA_EVENT(name) \ 20685a5881cdSDave Chinner DEFINE_EVENT(xfs_da_class, name, \ 20695a5881cdSDave Chinner TP_PROTO(struct xfs_da_args *args), \ 20705a5881cdSDave Chinner TP_ARGS(args)) 20715a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_split); 20725a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_join); 20735a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_link_before); 20745a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_link_after); 20755a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_unlink_back); 20765a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_unlink_forward); 20775a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_root_split); 20785a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_root_join); 20795a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_node_add); 20805a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_node_create); 20815a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_node_split); 20825a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_node_remove); 20835a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_node_rebalance); 20845a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_node_unbalance); 2085ee73259bSDave Chinner DEFINE_DA_EVENT(xfs_da_node_toosmall); 20865a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_swap_lastblock); 20875a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_grow_inode); 20885a5881cdSDave Chinner DEFINE_DA_EVENT(xfs_da_shrink_inode); 2089ee73259bSDave Chinner DEFINE_DA_EVENT(xfs_da_fixhashpath); 2090ee73259bSDave Chinner DEFINE_DA_EVENT(xfs_da_path_shift); 20915a5881cdSDave Chinner 2092c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_dir2_space_class, 2093c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_da_args *args, int idx), 2094c59d87c4SChristoph Hellwig TP_ARGS(args, idx), 2095c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2096c59d87c4SChristoph Hellwig __field(dev_t, dev) 2097c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 20983402d931SDave Chinner __field(uint32_t, op_flags) 2099c59d87c4SChristoph Hellwig __field(int, idx) 2100c59d87c4SChristoph Hellwig ), 2101c59d87c4SChristoph Hellwig TP_fast_assign( 2102c59d87c4SChristoph Hellwig __entry->dev = VFS_I(args->dp)->i_sb->s_dev; 2103c59d87c4SChristoph Hellwig __entry->ino = args->dp->i_ino; 2104c59d87c4SChristoph Hellwig __entry->op_flags = args->op_flags; 2105c59d87c4SChristoph Hellwig __entry->idx = idx; 2106c59d87c4SChristoph Hellwig ), 2107c59d87c4SChristoph Hellwig TP_printk("dev %d:%d ino 0x%llx op_flags %s index %d", 2108c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2109c59d87c4SChristoph Hellwig __entry->ino, 2110c59d87c4SChristoph Hellwig __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS), 2111c59d87c4SChristoph Hellwig __entry->idx) 2112c59d87c4SChristoph Hellwig ) 2113c59d87c4SChristoph Hellwig 2114c59d87c4SChristoph Hellwig #define DEFINE_DIR2_SPACE_EVENT(name) \ 2115c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_dir2_space_class, name, \ 2116c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_da_args *args, int idx), \ 2117c59d87c4SChristoph Hellwig TP_ARGS(args, idx)) 2118c59d87c4SChristoph Hellwig DEFINE_DIR2_SPACE_EVENT(xfs_dir2_leafn_add); 2119c59d87c4SChristoph Hellwig DEFINE_DIR2_SPACE_EVENT(xfs_dir2_leafn_remove); 2120c59d87c4SChristoph Hellwig DEFINE_DIR2_SPACE_EVENT(xfs_dir2_grow_inode); 2121c59d87c4SChristoph Hellwig DEFINE_DIR2_SPACE_EVENT(xfs_dir2_shrink_inode); 2122c59d87c4SChristoph Hellwig 2123c59d87c4SChristoph Hellwig TRACE_EVENT(xfs_dir2_leafn_moveents, 2124c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_da_args *args, int src_idx, int dst_idx, int count), 2125c59d87c4SChristoph Hellwig TP_ARGS(args, src_idx, dst_idx, count), 2126c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2127c59d87c4SChristoph Hellwig __field(dev_t, dev) 2128c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 21293402d931SDave Chinner __field(uint32_t, op_flags) 2130c59d87c4SChristoph Hellwig __field(int, src_idx) 2131c59d87c4SChristoph Hellwig __field(int, dst_idx) 2132c59d87c4SChristoph Hellwig __field(int, count) 2133c59d87c4SChristoph Hellwig ), 2134c59d87c4SChristoph Hellwig TP_fast_assign( 2135c59d87c4SChristoph Hellwig __entry->dev = VFS_I(args->dp)->i_sb->s_dev; 2136c59d87c4SChristoph Hellwig __entry->ino = args->dp->i_ino; 2137c59d87c4SChristoph Hellwig __entry->op_flags = args->op_flags; 2138c59d87c4SChristoph Hellwig __entry->src_idx = src_idx; 2139c59d87c4SChristoph Hellwig __entry->dst_idx = dst_idx; 2140c59d87c4SChristoph Hellwig __entry->count = count; 2141c59d87c4SChristoph Hellwig ), 2142c59d87c4SChristoph Hellwig TP_printk("dev %d:%d ino 0x%llx op_flags %s " 2143c59d87c4SChristoph Hellwig "src_idx %d dst_idx %d count %d", 2144c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2145c59d87c4SChristoph Hellwig __entry->ino, 2146c59d87c4SChristoph Hellwig __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS), 2147c59d87c4SChristoph Hellwig __entry->src_idx, 2148c59d87c4SChristoph Hellwig __entry->dst_idx, 2149c59d87c4SChristoph Hellwig __entry->count) 2150c59d87c4SChristoph Hellwig ); 2151c59d87c4SChristoph Hellwig 2152c59d87c4SChristoph Hellwig #define XFS_SWAPEXT_INODES \ 2153c59d87c4SChristoph Hellwig { 0, "target" }, \ 2154c59d87c4SChristoph Hellwig { 1, "temp" } 2155c59d87c4SChristoph Hellwig 21560357d21aSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_DINODE_FMT_DEV); 21570357d21aSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_DINODE_FMT_LOCAL); 21580357d21aSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_DINODE_FMT_EXTENTS); 21590357d21aSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_DINODE_FMT_BTREE); 21600357d21aSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_DINODE_FMT_UUID); 2161c59d87c4SChristoph Hellwig 2162c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_swap_extent_class, 2163c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, int which), 2164c59d87c4SChristoph Hellwig TP_ARGS(ip, which), 2165c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2166c59d87c4SChristoph Hellwig __field(dev_t, dev) 2167c59d87c4SChristoph Hellwig __field(int, which) 2168c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 2169c59d87c4SChristoph Hellwig __field(int, format) 2170bb1d5049SChandan Babu R __field(xfs_extnum_t, nex) 2171c59d87c4SChristoph Hellwig __field(int, broot_size) 2172c59d87c4SChristoph Hellwig __field(int, fork_off) 2173c59d87c4SChristoph Hellwig ), 2174c59d87c4SChristoph Hellwig TP_fast_assign( 2175c59d87c4SChristoph Hellwig __entry->dev = VFS_I(ip)->i_sb->s_dev; 2176c59d87c4SChristoph Hellwig __entry->which = which; 2177c59d87c4SChristoph Hellwig __entry->ino = ip->i_ino; 2178f7e67b20SChristoph Hellwig __entry->format = ip->i_df.if_format; 2179daf83964SChristoph Hellwig __entry->nex = ip->i_df.if_nextents; 2180c59d87c4SChristoph Hellwig __entry->broot_size = ip->i_df.if_broot_bytes; 2181c01147d9SDarrick J. Wong __entry->fork_off = xfs_inode_fork_boff(ip); 2182c59d87c4SChristoph Hellwig ), 2183755c38ffSChandan Babu R TP_printk("dev %d:%d ino 0x%llx (%s), %s format, num_extents %llu, " 218449e68c91SDarrick J. Wong "broot size %d, forkoff 0x%x", 2185c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2186c59d87c4SChristoph Hellwig __entry->ino, 2187c59d87c4SChristoph Hellwig __print_symbolic(__entry->which, XFS_SWAPEXT_INODES), 2188c59d87c4SChristoph Hellwig __print_symbolic(__entry->format, XFS_INODE_FORMAT_STR), 2189c59d87c4SChristoph Hellwig __entry->nex, 2190c59d87c4SChristoph Hellwig __entry->broot_size, 2191c59d87c4SChristoph Hellwig __entry->fork_off) 2192c59d87c4SChristoph Hellwig ) 2193c59d87c4SChristoph Hellwig 2194c59d87c4SChristoph Hellwig #define DEFINE_SWAPEXT_EVENT(name) \ 2195c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_swap_extent_class, name, \ 2196c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_inode *ip, int which), \ 2197c59d87c4SChristoph Hellwig TP_ARGS(ip, which)) 2198c59d87c4SChristoph Hellwig 2199c59d87c4SChristoph Hellwig DEFINE_SWAPEXT_EVENT(xfs_swap_extent_before); 2200c59d87c4SChristoph Hellwig DEFINE_SWAPEXT_EVENT(xfs_swap_extent_after); 2201c59d87c4SChristoph Hellwig 2202e67d3d42SBrian Foster TRACE_EVENT(xfs_log_recover, 2203e67d3d42SBrian Foster TP_PROTO(struct xlog *log, xfs_daddr_t headblk, xfs_daddr_t tailblk), 2204e67d3d42SBrian Foster TP_ARGS(log, headblk, tailblk), 2205e67d3d42SBrian Foster TP_STRUCT__entry( 2206e67d3d42SBrian Foster __field(dev_t, dev) 2207e67d3d42SBrian Foster __field(xfs_daddr_t, headblk) 2208e67d3d42SBrian Foster __field(xfs_daddr_t, tailblk) 2209e67d3d42SBrian Foster ), 2210e67d3d42SBrian Foster TP_fast_assign( 2211e67d3d42SBrian Foster __entry->dev = log->l_mp->m_super->s_dev; 2212e67d3d42SBrian Foster __entry->headblk = headblk; 2213e67d3d42SBrian Foster __entry->tailblk = tailblk; 2214e67d3d42SBrian Foster ), 2215e67d3d42SBrian Foster TP_printk("dev %d:%d headblk 0x%llx tailblk 0x%llx", 2216e67d3d42SBrian Foster MAJOR(__entry->dev), MINOR(__entry->dev), __entry->headblk, 2217e67d3d42SBrian Foster __entry->tailblk) 2218e67d3d42SBrian Foster ) 2219e67d3d42SBrian Foster 22205cd9cee9SBrian Foster TRACE_EVENT(xfs_log_recover_record, 22215cd9cee9SBrian Foster TP_PROTO(struct xlog *log, struct xlog_rec_header *rhead, int pass), 22225cd9cee9SBrian Foster TP_ARGS(log, rhead, pass), 22235cd9cee9SBrian Foster TP_STRUCT__entry( 22245cd9cee9SBrian Foster __field(dev_t, dev) 22255cd9cee9SBrian Foster __field(xfs_lsn_t, lsn) 22265cd9cee9SBrian Foster __field(int, len) 22275cd9cee9SBrian Foster __field(int, num_logops) 22285cd9cee9SBrian Foster __field(int, pass) 22295cd9cee9SBrian Foster ), 22305cd9cee9SBrian Foster TP_fast_assign( 22315cd9cee9SBrian Foster __entry->dev = log->l_mp->m_super->s_dev; 22325cd9cee9SBrian Foster __entry->lsn = be64_to_cpu(rhead->h_lsn); 22335cd9cee9SBrian Foster __entry->len = be32_to_cpu(rhead->h_len); 22345cd9cee9SBrian Foster __entry->num_logops = be32_to_cpu(rhead->h_num_logops); 22355cd9cee9SBrian Foster __entry->pass = pass; 22365cd9cee9SBrian Foster ), 22375cd9cee9SBrian Foster TP_printk("dev %d:%d lsn 0x%llx len 0x%x num_logops 0x%x pass %d", 22385cd9cee9SBrian Foster MAJOR(__entry->dev), MINOR(__entry->dev), 22395cd9cee9SBrian Foster __entry->lsn, __entry->len, __entry->num_logops, 22405cd9cee9SBrian Foster __entry->pass) 22415cd9cee9SBrian Foster ) 22425cd9cee9SBrian Foster 2243c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_log_recover_item_class, 2244ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xlog_recover *trans, 2245c59d87c4SChristoph Hellwig struct xlog_recover_item *item, int pass), 2246c59d87c4SChristoph Hellwig TP_ARGS(log, trans, item, pass), 2247c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2248c59d87c4SChristoph Hellwig __field(dev_t, dev) 2249c59d87c4SChristoph Hellwig __field(unsigned long, item) 2250c59d87c4SChristoph Hellwig __field(xlog_tid_t, tid) 22515cd9cee9SBrian Foster __field(xfs_lsn_t, lsn) 2252c59d87c4SChristoph Hellwig __field(int, type) 2253c59d87c4SChristoph Hellwig __field(int, pass) 2254c59d87c4SChristoph Hellwig __field(int, count) 2255c59d87c4SChristoph Hellwig __field(int, total) 2256c59d87c4SChristoph Hellwig ), 2257c59d87c4SChristoph Hellwig TP_fast_assign( 2258c59d87c4SChristoph Hellwig __entry->dev = log->l_mp->m_super->s_dev; 2259c59d87c4SChristoph Hellwig __entry->item = (unsigned long)item; 2260c59d87c4SChristoph Hellwig __entry->tid = trans->r_log_tid; 22615cd9cee9SBrian Foster __entry->lsn = trans->r_lsn; 2262c59d87c4SChristoph Hellwig __entry->type = ITEM_TYPE(item); 2263c59d87c4SChristoph Hellwig __entry->pass = pass; 2264c59d87c4SChristoph Hellwig __entry->count = item->ri_cnt; 2265c59d87c4SChristoph Hellwig __entry->total = item->ri_total; 2266c59d87c4SChristoph Hellwig ), 22673d170aa2SDarrick J. Wong TP_printk("dev %d:%d tid 0x%x lsn 0x%llx, pass %d, item %p, " 22685cd9cee9SBrian Foster "item type %s item region count/total %d/%d", 2269c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2270c59d87c4SChristoph Hellwig __entry->tid, 22715cd9cee9SBrian Foster __entry->lsn, 2272c59d87c4SChristoph Hellwig __entry->pass, 2273c59d87c4SChristoph Hellwig (void *)__entry->item, 2274c59d87c4SChristoph Hellwig __print_symbolic(__entry->type, XFS_LI_TYPE_DESC), 2275c59d87c4SChristoph Hellwig __entry->count, 2276c59d87c4SChristoph Hellwig __entry->total) 2277c59d87c4SChristoph Hellwig ) 2278c59d87c4SChristoph Hellwig 2279c59d87c4SChristoph Hellwig #define DEFINE_LOG_RECOVER_ITEM(name) \ 2280c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_log_recover_item_class, name, \ 2281ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xlog_recover *trans, \ 2282c59d87c4SChristoph Hellwig struct xlog_recover_item *item, int pass), \ 2283c59d87c4SChristoph Hellwig TP_ARGS(log, trans, item, pass)) 2284c59d87c4SChristoph Hellwig 2285c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_add); 2286c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_add_cont); 2287c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_reorder_head); 2288c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_reorder_tail); 2289c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_recover); 2290c59d87c4SChristoph Hellwig 2291c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_log_recover_buf_item_class, 2292ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xfs_buf_log_format *buf_f), 2293c59d87c4SChristoph Hellwig TP_ARGS(log, buf_f), 2294c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2295c59d87c4SChristoph Hellwig __field(dev_t, dev) 2296c8ce540dSDarrick J. Wong __field(int64_t, blkno) 2297c59d87c4SChristoph Hellwig __field(unsigned short, len) 2298c59d87c4SChristoph Hellwig __field(unsigned short, flags) 2299c59d87c4SChristoph Hellwig __field(unsigned short, size) 2300c59d87c4SChristoph Hellwig __field(unsigned int, map_size) 2301c59d87c4SChristoph Hellwig ), 2302c59d87c4SChristoph Hellwig TP_fast_assign( 2303c59d87c4SChristoph Hellwig __entry->dev = log->l_mp->m_super->s_dev; 2304c59d87c4SChristoph Hellwig __entry->blkno = buf_f->blf_blkno; 2305c59d87c4SChristoph Hellwig __entry->len = buf_f->blf_len; 2306c59d87c4SChristoph Hellwig __entry->flags = buf_f->blf_flags; 2307c59d87c4SChristoph Hellwig __entry->size = buf_f->blf_size; 2308c59d87c4SChristoph Hellwig __entry->map_size = buf_f->blf_map_size; 2309c59d87c4SChristoph Hellwig ), 23107989acccSDarrick J. Wong TP_printk("dev %d:%d daddr 0x%llx, bbcount 0x%x, flags 0x%x, size %d, " 2311c59d87c4SChristoph Hellwig "map_size %d", 2312c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2313c59d87c4SChristoph Hellwig __entry->blkno, 2314c59d87c4SChristoph Hellwig __entry->len, 2315c59d87c4SChristoph Hellwig __entry->flags, 2316c59d87c4SChristoph Hellwig __entry->size, 2317c59d87c4SChristoph Hellwig __entry->map_size) 2318c59d87c4SChristoph Hellwig ) 2319c59d87c4SChristoph Hellwig 2320c59d87c4SChristoph Hellwig #define DEFINE_LOG_RECOVER_BUF_ITEM(name) \ 2321c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_log_recover_buf_item_class, name, \ 2322ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xfs_buf_log_format *buf_f), \ 2323c59d87c4SChristoph Hellwig TP_ARGS(log, buf_f)) 2324c59d87c4SChristoph Hellwig 2325c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_not_cancel); 2326c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_cancel); 2327c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_cancel_add); 2328c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_cancel_ref_inc); 2329c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_recover); 23305cd9cee9SBrian Foster DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_skip); 2331c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_inode_buf); 2332c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_reg_buf); 2333c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_dquot_buf); 2334c59d87c4SChristoph Hellwig 2335c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_log_recover_ino_item_class, 2336ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xfs_inode_log_format *in_f), 2337c59d87c4SChristoph Hellwig TP_ARGS(log, in_f), 2338c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2339c59d87c4SChristoph Hellwig __field(dev_t, dev) 2340c59d87c4SChristoph Hellwig __field(xfs_ino_t, ino) 2341c59d87c4SChristoph Hellwig __field(unsigned short, size) 2342c59d87c4SChristoph Hellwig __field(int, fields) 2343c59d87c4SChristoph Hellwig __field(unsigned short, asize) 2344c59d87c4SChristoph Hellwig __field(unsigned short, dsize) 2345c8ce540dSDarrick J. Wong __field(int64_t, blkno) 2346c59d87c4SChristoph Hellwig __field(int, len) 2347c59d87c4SChristoph Hellwig __field(int, boffset) 2348c59d87c4SChristoph Hellwig ), 2349c59d87c4SChristoph Hellwig TP_fast_assign( 2350c59d87c4SChristoph Hellwig __entry->dev = log->l_mp->m_super->s_dev; 2351c59d87c4SChristoph Hellwig __entry->ino = in_f->ilf_ino; 2352c59d87c4SChristoph Hellwig __entry->size = in_f->ilf_size; 2353c59d87c4SChristoph Hellwig __entry->fields = in_f->ilf_fields; 2354c59d87c4SChristoph Hellwig __entry->asize = in_f->ilf_asize; 2355c59d87c4SChristoph Hellwig __entry->dsize = in_f->ilf_dsize; 2356c59d87c4SChristoph Hellwig __entry->blkno = in_f->ilf_blkno; 2357c59d87c4SChristoph Hellwig __entry->len = in_f->ilf_len; 2358c59d87c4SChristoph Hellwig __entry->boffset = in_f->ilf_boffset; 2359c59d87c4SChristoph Hellwig ), 2360c59d87c4SChristoph Hellwig TP_printk("dev %d:%d ino 0x%llx, size %u, fields 0x%x, asize %d, " 23617989acccSDarrick J. Wong "dsize %d, daddr 0x%llx, bbcount 0x%x, boffset %d", 2362c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2363c59d87c4SChristoph Hellwig __entry->ino, 2364c59d87c4SChristoph Hellwig __entry->size, 2365c59d87c4SChristoph Hellwig __entry->fields, 2366c59d87c4SChristoph Hellwig __entry->asize, 2367c59d87c4SChristoph Hellwig __entry->dsize, 2368c59d87c4SChristoph Hellwig __entry->blkno, 2369c59d87c4SChristoph Hellwig __entry->len, 2370c59d87c4SChristoph Hellwig __entry->boffset) 2371c59d87c4SChristoph Hellwig ) 2372c59d87c4SChristoph Hellwig #define DEFINE_LOG_RECOVER_INO_ITEM(name) \ 2373c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_log_recover_ino_item_class, name, \ 2374ad223e60SMark Tinguely TP_PROTO(struct xlog *log, struct xfs_inode_log_format *in_f), \ 2375c59d87c4SChristoph Hellwig TP_ARGS(log, in_f)) 2376c59d87c4SChristoph Hellwig 2377c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_INO_ITEM(xfs_log_recover_inode_recover); 2378c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_INO_ITEM(xfs_log_recover_inode_cancel); 2379c59d87c4SChristoph Hellwig DEFINE_LOG_RECOVER_INO_ITEM(xfs_log_recover_inode_skip); 2380c59d87c4SChristoph Hellwig 238178d57e45SBrian Foster DECLARE_EVENT_CLASS(xfs_log_recover_icreate_item_class, 238278d57e45SBrian Foster TP_PROTO(struct xlog *log, struct xfs_icreate_log *in_f), 238378d57e45SBrian Foster TP_ARGS(log, in_f), 238478d57e45SBrian Foster TP_STRUCT__entry( 238578d57e45SBrian Foster __field(dev_t, dev) 238678d57e45SBrian Foster __field(xfs_agnumber_t, agno) 238778d57e45SBrian Foster __field(xfs_agblock_t, agbno) 238878d57e45SBrian Foster __field(unsigned int, count) 238978d57e45SBrian Foster __field(unsigned int, isize) 239078d57e45SBrian Foster __field(xfs_agblock_t, length) 239178d57e45SBrian Foster __field(unsigned int, gen) 239278d57e45SBrian Foster ), 239378d57e45SBrian Foster TP_fast_assign( 239478d57e45SBrian Foster __entry->dev = log->l_mp->m_super->s_dev; 239578d57e45SBrian Foster __entry->agno = be32_to_cpu(in_f->icl_ag); 239678d57e45SBrian Foster __entry->agbno = be32_to_cpu(in_f->icl_agbno); 239778d57e45SBrian Foster __entry->count = be32_to_cpu(in_f->icl_count); 239878d57e45SBrian Foster __entry->isize = be32_to_cpu(in_f->icl_isize); 239978d57e45SBrian Foster __entry->length = be32_to_cpu(in_f->icl_length); 240078d57e45SBrian Foster __entry->gen = be32_to_cpu(in_f->icl_gen); 240178d57e45SBrian Foster ), 2402b641851cSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x ireccount %u isize %u gen 0x%x", 24037989acccSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 24047989acccSDarrick J. Wong __entry->agno, 24057989acccSDarrick J. Wong __entry->agbno, 24067989acccSDarrick J. Wong __entry->length, 24077989acccSDarrick J. Wong __entry->count, 24087989acccSDarrick J. Wong __entry->isize, 24097989acccSDarrick J. Wong __entry->gen) 241078d57e45SBrian Foster ) 241178d57e45SBrian Foster #define DEFINE_LOG_RECOVER_ICREATE_ITEM(name) \ 241278d57e45SBrian Foster DEFINE_EVENT(xfs_log_recover_icreate_item_class, name, \ 241378d57e45SBrian Foster TP_PROTO(struct xlog *log, struct xfs_icreate_log *in_f), \ 241478d57e45SBrian Foster TP_ARGS(log, in_f)) 241578d57e45SBrian Foster 241678d57e45SBrian Foster DEFINE_LOG_RECOVER_ICREATE_ITEM(xfs_log_recover_icreate_cancel); 241778d57e45SBrian Foster DEFINE_LOG_RECOVER_ICREATE_ITEM(xfs_log_recover_icreate_recover); 241878d57e45SBrian Foster 2419c59d87c4SChristoph Hellwig DECLARE_EVENT_CLASS(xfs_discard_class, 2420c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 2421c59d87c4SChristoph Hellwig xfs_agblock_t agbno, xfs_extlen_t len), 2422c59d87c4SChristoph Hellwig TP_ARGS(mp, agno, agbno, len), 2423c59d87c4SChristoph Hellwig TP_STRUCT__entry( 2424c59d87c4SChristoph Hellwig __field(dev_t, dev) 2425c59d87c4SChristoph Hellwig __field(xfs_agnumber_t, agno) 2426c59d87c4SChristoph Hellwig __field(xfs_agblock_t, agbno) 2427c59d87c4SChristoph Hellwig __field(xfs_extlen_t, len) 2428c59d87c4SChristoph Hellwig ), 2429c59d87c4SChristoph Hellwig TP_fast_assign( 2430c59d87c4SChristoph Hellwig __entry->dev = mp->m_super->s_dev; 2431c59d87c4SChristoph Hellwig __entry->agno = agno; 2432c59d87c4SChristoph Hellwig __entry->agbno = agbno; 2433c59d87c4SChristoph Hellwig __entry->len = len; 2434c59d87c4SChristoph Hellwig ), 24357989acccSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x", 2436c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 2437c59d87c4SChristoph Hellwig __entry->agno, 2438c59d87c4SChristoph Hellwig __entry->agbno, 2439c59d87c4SChristoph Hellwig __entry->len) 2440c59d87c4SChristoph Hellwig ) 2441c59d87c4SChristoph Hellwig 2442c59d87c4SChristoph Hellwig #define DEFINE_DISCARD_EVENT(name) \ 2443c59d87c4SChristoph Hellwig DEFINE_EVENT(xfs_discard_class, name, \ 2444c59d87c4SChristoph Hellwig TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 2445c59d87c4SChristoph Hellwig xfs_agblock_t agbno, xfs_extlen_t len), \ 2446c59d87c4SChristoph Hellwig TP_ARGS(mp, agno, agbno, len)) 2447c59d87c4SChristoph Hellwig DEFINE_DISCARD_EVENT(xfs_discard_extent); 2448c59d87c4SChristoph Hellwig DEFINE_DISCARD_EVENT(xfs_discard_toosmall); 2449c59d87c4SChristoph Hellwig DEFINE_DISCARD_EVENT(xfs_discard_exclude); 2450c59d87c4SChristoph Hellwig DEFINE_DISCARD_EVENT(xfs_discard_busy); 2451c59d87c4SChristoph Hellwig 24522c813ad6SDarrick J. Wong /* btree cursor events */ 2453c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_BNOi); 2454c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_CNTi); 2455c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_BMAPi); 2456c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_INOi); 2457c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_FINOi); 2458c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_RMAPi); 2459c494213fSDarrick J. Wong TRACE_DEFINE_ENUM(XFS_BTNUM_REFCi); 2460c494213fSDarrick J. Wong 24612c813ad6SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_btree_cur_class, 24622c813ad6SDarrick J. Wong TP_PROTO(struct xfs_btree_cur *cur, int level, struct xfs_buf *bp), 24632c813ad6SDarrick J. Wong TP_ARGS(cur, level, bp), 24642c813ad6SDarrick J. Wong TP_STRUCT__entry( 24652c813ad6SDarrick J. Wong __field(dev_t, dev) 24662c813ad6SDarrick J. Wong __field(xfs_btnum_t, btnum) 24672c813ad6SDarrick J. Wong __field(int, level) 24682c813ad6SDarrick J. Wong __field(int, nlevels) 24692c813ad6SDarrick J. Wong __field(int, ptr) 24702c813ad6SDarrick J. Wong __field(xfs_daddr_t, daddr) 24712c813ad6SDarrick J. Wong ), 24722c813ad6SDarrick J. Wong TP_fast_assign( 24732c813ad6SDarrick J. Wong __entry->dev = cur->bc_mp->m_super->s_dev; 24742c813ad6SDarrick J. Wong __entry->btnum = cur->bc_btnum; 24752c813ad6SDarrick J. Wong __entry->level = level; 24762c813ad6SDarrick J. Wong __entry->nlevels = cur->bc_nlevels; 24776ca444cfSDarrick J. Wong __entry->ptr = cur->bc_levels[level].ptr; 24789343ee76SDave Chinner __entry->daddr = bp ? xfs_buf_daddr(bp) : -1; 24792c813ad6SDarrick J. Wong ), 2480c494213fSDarrick J. Wong TP_printk("dev %d:%d btree %s level %d/%d ptr %d daddr 0x%llx", 24812c813ad6SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2482c494213fSDarrick J. Wong __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 24832c813ad6SDarrick J. Wong __entry->level, 24842c813ad6SDarrick J. Wong __entry->nlevels, 24852c813ad6SDarrick J. Wong __entry->ptr, 24862c813ad6SDarrick J. Wong (unsigned long long)__entry->daddr) 24872c813ad6SDarrick J. Wong ) 24882c813ad6SDarrick J. Wong 24892c813ad6SDarrick J. Wong #define DEFINE_BTREE_CUR_EVENT(name) \ 24902c813ad6SDarrick J. Wong DEFINE_EVENT(xfs_btree_cur_class, name, \ 24912c813ad6SDarrick J. Wong TP_PROTO(struct xfs_btree_cur *cur, int level, struct xfs_buf *bp), \ 24922c813ad6SDarrick J. Wong TP_ARGS(cur, level, bp)) 24932c813ad6SDarrick J. Wong DEFINE_BTREE_CUR_EVENT(xfs_btree_updkeys); 2494105f7d83SDarrick J. Wong DEFINE_BTREE_CUR_EVENT(xfs_btree_overlapped_query_range); 24952c813ad6SDarrick J. Wong 24963cd48abcSDarrick J. Wong /* deferred ops */ 24973cd48abcSDarrick J. Wong struct xfs_defer_pending; 24983cd48abcSDarrick J. Wong 24993cd48abcSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_defer_class, 25009d9e6233SBrian Foster TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip), 25019d9e6233SBrian Foster TP_ARGS(tp, caller_ip), 25023cd48abcSDarrick J. Wong TP_STRUCT__entry( 25033cd48abcSDarrick J. Wong __field(dev_t, dev) 25049d9e6233SBrian Foster __field(struct xfs_trans *, tp) 25053f88a15aSChristoph Hellwig __field(char, committed) 2506e632a569SDave Chinner __field(unsigned long, caller_ip) 25073cd48abcSDarrick J. Wong ), 25083cd48abcSDarrick J. Wong TP_fast_assign( 25099d9e6233SBrian Foster __entry->dev = tp->t_mountp->m_super->s_dev; 25109d9e6233SBrian Foster __entry->tp = tp; 2511e632a569SDave Chinner __entry->caller_ip = caller_ip; 25123cd48abcSDarrick J. Wong ), 25139d9e6233SBrian Foster TP_printk("dev %d:%d tp %p caller %pS", 25143cd48abcSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 25159d9e6233SBrian Foster __entry->tp, 2516e632a569SDave Chinner (char *)__entry->caller_ip) 25173cd48abcSDarrick J. Wong ) 25183cd48abcSDarrick J. Wong #define DEFINE_DEFER_EVENT(name) \ 25193cd48abcSDarrick J. Wong DEFINE_EVENT(xfs_defer_class, name, \ 25209d9e6233SBrian Foster TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip), \ 25219d9e6233SBrian Foster TP_ARGS(tp, caller_ip)) 25223cd48abcSDarrick J. Wong 25233cd48abcSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_defer_error_class, 25249d9e6233SBrian Foster TP_PROTO(struct xfs_trans *tp, int error), 25259d9e6233SBrian Foster TP_ARGS(tp, error), 25263cd48abcSDarrick J. Wong TP_STRUCT__entry( 25273cd48abcSDarrick J. Wong __field(dev_t, dev) 25289d9e6233SBrian Foster __field(struct xfs_trans *, tp) 25293f88a15aSChristoph Hellwig __field(char, committed) 25303cd48abcSDarrick J. Wong __field(int, error) 25313cd48abcSDarrick J. Wong ), 25323cd48abcSDarrick J. Wong TP_fast_assign( 25339d9e6233SBrian Foster __entry->dev = tp->t_mountp->m_super->s_dev; 25349d9e6233SBrian Foster __entry->tp = tp; 25353cd48abcSDarrick J. Wong __entry->error = error; 25363cd48abcSDarrick J. Wong ), 25379d9e6233SBrian Foster TP_printk("dev %d:%d tp %p err %d", 25383cd48abcSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 25399d9e6233SBrian Foster __entry->tp, 25403cd48abcSDarrick J. Wong __entry->error) 25413cd48abcSDarrick J. Wong ) 25423cd48abcSDarrick J. Wong #define DEFINE_DEFER_ERROR_EVENT(name) \ 25433cd48abcSDarrick J. Wong DEFINE_EVENT(xfs_defer_error_class, name, \ 25449d9e6233SBrian Foster TP_PROTO(struct xfs_trans *tp, int error), \ 25459d9e6233SBrian Foster TP_ARGS(tp, error)) 25463cd48abcSDarrick J. Wong 25473cd48abcSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_defer_pending_class, 25483cd48abcSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_defer_pending *dfp), 25493cd48abcSDarrick J. Wong TP_ARGS(mp, dfp), 25503cd48abcSDarrick J. Wong TP_STRUCT__entry( 25513cd48abcSDarrick J. Wong __field(dev_t, dev) 25523cd48abcSDarrick J. Wong __field(int, type) 25533cd48abcSDarrick J. Wong __field(void *, intent) 25543f88a15aSChristoph Hellwig __field(char, committed) 25553cd48abcSDarrick J. Wong __field(int, nr) 25563cd48abcSDarrick J. Wong ), 25573cd48abcSDarrick J. Wong TP_fast_assign( 25583cd48abcSDarrick J. Wong __entry->dev = mp ? mp->m_super->s_dev : 0; 255902b100fbSDarrick J. Wong __entry->type = dfp->dfp_type; 25603cd48abcSDarrick J. Wong __entry->intent = dfp->dfp_intent; 2561ea78d808SDarrick J. Wong __entry->committed = dfp->dfp_done != NULL; 25623cd48abcSDarrick J. Wong __entry->nr = dfp->dfp_count; 25633cd48abcSDarrick J. Wong ), 256442bf9dbaSHou Tao TP_printk("dev %d:%d optype %d intent %p committed %d nr %d", 25653cd48abcSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 25663cd48abcSDarrick J. Wong __entry->type, 25673cd48abcSDarrick J. Wong __entry->intent, 25683cd48abcSDarrick J. Wong __entry->committed, 25693cd48abcSDarrick J. Wong __entry->nr) 25703cd48abcSDarrick J. Wong ) 25713cd48abcSDarrick J. Wong #define DEFINE_DEFER_PENDING_EVENT(name) \ 25723cd48abcSDarrick J. Wong DEFINE_EVENT(xfs_defer_pending_class, name, \ 25733cd48abcSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_defer_pending *dfp), \ 25743cd48abcSDarrick J. Wong TP_ARGS(mp, dfp)) 25753cd48abcSDarrick J. Wong 25763cd48abcSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_phys_extent_deferred_class, 25773cd48abcSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 25783cd48abcSDarrick J. Wong int type, xfs_agblock_t agbno, xfs_extlen_t len), 25793cd48abcSDarrick J. Wong TP_ARGS(mp, agno, type, agbno, len), 25803cd48abcSDarrick J. Wong TP_STRUCT__entry( 25813cd48abcSDarrick J. Wong __field(dev_t, dev) 25823cd48abcSDarrick J. Wong __field(xfs_agnumber_t, agno) 25833cd48abcSDarrick J. Wong __field(int, type) 25843cd48abcSDarrick J. Wong __field(xfs_agblock_t, agbno) 25853cd48abcSDarrick J. Wong __field(xfs_extlen_t, len) 25863cd48abcSDarrick J. Wong ), 25873cd48abcSDarrick J. Wong TP_fast_assign( 25883cd48abcSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 25893cd48abcSDarrick J. Wong __entry->agno = agno; 25903cd48abcSDarrick J. Wong __entry->type = type; 25913cd48abcSDarrick J. Wong __entry->agbno = agbno; 25923cd48abcSDarrick J. Wong __entry->len = len; 25933cd48abcSDarrick J. Wong ), 25947989acccSDarrick J. Wong TP_printk("dev %d:%d op %d agno 0x%x agbno 0x%x fsbcount 0x%x", 25953cd48abcSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 25963cd48abcSDarrick J. Wong __entry->type, 25973cd48abcSDarrick J. Wong __entry->agno, 25983cd48abcSDarrick J. Wong __entry->agbno, 25993cd48abcSDarrick J. Wong __entry->len) 26003cd48abcSDarrick J. Wong ); 26013cd48abcSDarrick J. Wong #define DEFINE_PHYS_EXTENT_DEFERRED_EVENT(name) \ 26023cd48abcSDarrick J. Wong DEFINE_EVENT(xfs_phys_extent_deferred_class, name, \ 26033cd48abcSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 26043cd48abcSDarrick J. Wong int type, \ 26053cd48abcSDarrick J. Wong xfs_agblock_t bno, \ 26063cd48abcSDarrick J. Wong xfs_extlen_t len), \ 26073cd48abcSDarrick J. Wong TP_ARGS(mp, agno, type, bno, len)) 26083cd48abcSDarrick J. Wong 26093cd48abcSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_map_extent_deferred_class, 26103cd48abcSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 26113cd48abcSDarrick J. Wong int op, 26123cd48abcSDarrick J. Wong xfs_agblock_t agbno, 26133cd48abcSDarrick J. Wong xfs_ino_t ino, 26143cd48abcSDarrick J. Wong int whichfork, 26153cd48abcSDarrick J. Wong xfs_fileoff_t offset, 26163cd48abcSDarrick J. Wong xfs_filblks_t len, 26173cd48abcSDarrick J. Wong xfs_exntst_t state), 26183cd48abcSDarrick J. Wong TP_ARGS(mp, agno, op, agbno, ino, whichfork, offset, len, state), 26193cd48abcSDarrick J. Wong TP_STRUCT__entry( 26203cd48abcSDarrick J. Wong __field(dev_t, dev) 26213cd48abcSDarrick J. Wong __field(xfs_agnumber_t, agno) 26223cd48abcSDarrick J. Wong __field(xfs_ino_t, ino) 26233cd48abcSDarrick J. Wong __field(xfs_agblock_t, agbno) 26243cd48abcSDarrick J. Wong __field(int, whichfork) 26253cd48abcSDarrick J. Wong __field(xfs_fileoff_t, l_loff) 26263cd48abcSDarrick J. Wong __field(xfs_filblks_t, l_len) 26273cd48abcSDarrick J. Wong __field(xfs_exntst_t, l_state) 26283cd48abcSDarrick J. Wong __field(int, op) 26293cd48abcSDarrick J. Wong ), 26303cd48abcSDarrick J. Wong TP_fast_assign( 26313cd48abcSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 26323cd48abcSDarrick J. Wong __entry->agno = agno; 26333cd48abcSDarrick J. Wong __entry->ino = ino; 26343cd48abcSDarrick J. Wong __entry->agbno = agbno; 26353cd48abcSDarrick J. Wong __entry->whichfork = whichfork; 26363cd48abcSDarrick J. Wong __entry->l_loff = offset; 26373cd48abcSDarrick J. Wong __entry->l_len = len; 26383cd48abcSDarrick J. Wong __entry->l_state = state; 26393cd48abcSDarrick J. Wong __entry->op = op; 26403cd48abcSDarrick J. Wong ), 26417989acccSDarrick 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", 26423cd48abcSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 26433cd48abcSDarrick J. Wong __entry->op, 26443cd48abcSDarrick J. Wong __entry->agno, 26453cd48abcSDarrick J. Wong __entry->agbno, 26463cd48abcSDarrick J. Wong __entry->ino, 2647f93f85f7SDarrick J. Wong __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS), 26483cd48abcSDarrick J. Wong __entry->l_loff, 26493cd48abcSDarrick J. Wong __entry->l_len, 26503cd48abcSDarrick J. Wong __entry->l_state) 26513cd48abcSDarrick J. Wong ); 26523cd48abcSDarrick J. Wong #define DEFINE_MAP_EXTENT_DEFERRED_EVENT(name) \ 26533cd48abcSDarrick J. Wong DEFINE_EVENT(xfs_map_extent_deferred_class, name, \ 26543cd48abcSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 26553cd48abcSDarrick J. Wong int op, \ 26563cd48abcSDarrick J. Wong xfs_agblock_t agbno, \ 26573cd48abcSDarrick J. Wong xfs_ino_t ino, \ 26583cd48abcSDarrick J. Wong int whichfork, \ 26593cd48abcSDarrick J. Wong xfs_fileoff_t offset, \ 26603cd48abcSDarrick J. Wong xfs_filblks_t len, \ 26613cd48abcSDarrick J. Wong xfs_exntst_t state), \ 26623cd48abcSDarrick J. Wong TP_ARGS(mp, agno, op, agbno, ino, whichfork, offset, len, state)) 26633cd48abcSDarrick J. Wong 26643cd48abcSDarrick J. Wong DEFINE_DEFER_EVENT(xfs_defer_cancel); 26653cd48abcSDarrick J. Wong DEFINE_DEFER_EVENT(xfs_defer_trans_roll); 26663cd48abcSDarrick J. Wong DEFINE_DEFER_EVENT(xfs_defer_trans_abort); 26673cd48abcSDarrick J. Wong DEFINE_DEFER_EVENT(xfs_defer_finish); 26683cd48abcSDarrick J. Wong DEFINE_DEFER_EVENT(xfs_defer_finish_done); 26693cd48abcSDarrick J. Wong 26703cd48abcSDarrick J. Wong DEFINE_DEFER_ERROR_EVENT(xfs_defer_trans_roll_error); 26713cd48abcSDarrick J. Wong DEFINE_DEFER_ERROR_EVENT(xfs_defer_finish_error); 26723cd48abcSDarrick J. Wong 26731ae093cbSBrian Foster DEFINE_DEFER_PENDING_EVENT(xfs_defer_create_intent); 26741ae093cbSBrian Foster DEFINE_DEFER_PENDING_EVENT(xfs_defer_cancel_list); 26753cd48abcSDarrick J. Wong DEFINE_DEFER_PENDING_EVENT(xfs_defer_pending_finish); 26763cd48abcSDarrick J. Wong DEFINE_DEFER_PENDING_EVENT(xfs_defer_pending_abort); 26774e919af7SDarrick J. Wong DEFINE_DEFER_PENDING_EVENT(xfs_defer_relog_intent); 26783cd48abcSDarrick J. Wong 2679ba9e7802SDarrick J. Wong #define DEFINE_BMAP_FREE_DEFERRED_EVENT DEFINE_PHYS_EXTENT_DEFERRED_EVENT 2680ba9e7802SDarrick J. Wong DEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_bmap_free_defer); 2681ba9e7802SDarrick J. Wong DEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_bmap_free_deferred); 2682f8f2835aSBrian Foster DEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_agfl_free_defer); 2683f8f2835aSBrian Foster DEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_agfl_free_deferred); 2684ba9e7802SDarrick J. Wong 2685d5c88131SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_defer_pending_item_class, 2686d5c88131SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_defer_pending *dfp, 2687d5c88131SDarrick J. Wong void *item), 2688d5c88131SDarrick J. Wong TP_ARGS(mp, dfp, item), 2689d5c88131SDarrick J. Wong TP_STRUCT__entry( 2690d5c88131SDarrick J. Wong __field(dev_t, dev) 2691d5c88131SDarrick J. Wong __field(int, type) 2692d5c88131SDarrick J. Wong __field(void *, intent) 2693d5c88131SDarrick J. Wong __field(void *, item) 2694d5c88131SDarrick J. Wong __field(char, committed) 2695d5c88131SDarrick J. Wong __field(int, nr) 2696d5c88131SDarrick J. Wong ), 2697d5c88131SDarrick J. Wong TP_fast_assign( 2698d5c88131SDarrick J. Wong __entry->dev = mp ? mp->m_super->s_dev : 0; 2699d5c88131SDarrick J. Wong __entry->type = dfp->dfp_type; 2700d5c88131SDarrick J. Wong __entry->intent = dfp->dfp_intent; 2701d5c88131SDarrick J. Wong __entry->item = item; 2702d5c88131SDarrick J. Wong __entry->committed = dfp->dfp_done != NULL; 2703d5c88131SDarrick J. Wong __entry->nr = dfp->dfp_count; 2704d5c88131SDarrick J. Wong ), 2705d5c88131SDarrick J. Wong TP_printk("dev %d:%d optype %d intent %p item %p committed %d nr %d", 2706d5c88131SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2707d5c88131SDarrick J. Wong __entry->type, 2708d5c88131SDarrick J. Wong __entry->intent, 2709d5c88131SDarrick J. Wong __entry->item, 2710d5c88131SDarrick J. Wong __entry->committed, 2711d5c88131SDarrick J. Wong __entry->nr) 2712d5c88131SDarrick J. Wong ) 2713d5c88131SDarrick J. Wong #define DEFINE_DEFER_PENDING_ITEM_EVENT(name) \ 2714d5c88131SDarrick J. Wong DEFINE_EVENT(xfs_defer_pending_item_class, name, \ 2715d5c88131SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_defer_pending *dfp, \ 2716d5c88131SDarrick J. Wong void *item), \ 2717d5c88131SDarrick J. Wong TP_ARGS(mp, dfp, item)) 2718d5c88131SDarrick J. Wong 2719d5c88131SDarrick J. Wong DEFINE_DEFER_PENDING_ITEM_EVENT(xfs_defer_add_item); 2720d5c88131SDarrick J. Wong DEFINE_DEFER_PENDING_ITEM_EVENT(xfs_defer_cancel_item); 2721d5c88131SDarrick J. Wong DEFINE_DEFER_PENDING_ITEM_EVENT(xfs_defer_finish_item); 2722d5c88131SDarrick J. Wong 2723673930c3SDarrick J. Wong /* rmap tracepoints */ 2724673930c3SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_rmap_class, 2725673930c3SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 2726673930c3SDarrick J. Wong xfs_agblock_t agbno, xfs_extlen_t len, bool unwritten, 272766e3237eSDarrick J. Wong const struct xfs_owner_info *oinfo), 2728673930c3SDarrick J. Wong TP_ARGS(mp, agno, agbno, len, unwritten, oinfo), 2729673930c3SDarrick J. Wong TP_STRUCT__entry( 2730673930c3SDarrick J. Wong __field(dev_t, dev) 2731673930c3SDarrick J. Wong __field(xfs_agnumber_t, agno) 2732673930c3SDarrick J. Wong __field(xfs_agblock_t, agbno) 2733673930c3SDarrick J. Wong __field(xfs_extlen_t, len) 2734673930c3SDarrick J. Wong __field(uint64_t, owner) 2735673930c3SDarrick J. Wong __field(uint64_t, offset) 2736673930c3SDarrick J. Wong __field(unsigned long, flags) 2737673930c3SDarrick J. Wong ), 2738673930c3SDarrick J. Wong TP_fast_assign( 2739673930c3SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 2740673930c3SDarrick J. Wong __entry->agno = agno; 2741673930c3SDarrick J. Wong __entry->agbno = agbno; 2742673930c3SDarrick J. Wong __entry->len = len; 2743673930c3SDarrick J. Wong __entry->owner = oinfo->oi_owner; 2744673930c3SDarrick J. Wong __entry->offset = oinfo->oi_offset; 2745673930c3SDarrick J. Wong __entry->flags = oinfo->oi_flags; 2746035e00acSDarrick J. Wong if (unwritten) 2747035e00acSDarrick J. Wong __entry->flags |= XFS_RMAP_UNWRITTEN; 2748673930c3SDarrick J. Wong ), 27497989acccSDarrick 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", 2750673930c3SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2751673930c3SDarrick J. Wong __entry->agno, 2752673930c3SDarrick J. Wong __entry->agbno, 2753673930c3SDarrick J. Wong __entry->len, 2754673930c3SDarrick J. Wong __entry->owner, 2755673930c3SDarrick J. Wong __entry->offset, 2756673930c3SDarrick J. Wong __entry->flags) 2757673930c3SDarrick J. Wong ); 2758673930c3SDarrick J. Wong #define DEFINE_RMAP_EVENT(name) \ 2759673930c3SDarrick J. Wong DEFINE_EVENT(xfs_rmap_class, name, \ 2760673930c3SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 2761673930c3SDarrick J. Wong xfs_agblock_t agbno, xfs_extlen_t len, bool unwritten, \ 276266e3237eSDarrick J. Wong const struct xfs_owner_info *oinfo), \ 2763673930c3SDarrick J. Wong TP_ARGS(mp, agno, agbno, len, unwritten, oinfo)) 2764673930c3SDarrick J. Wong 2765673930c3SDarrick J. Wong /* simple AG-based error/%ip tracepoint class */ 2766673930c3SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_ag_error_class, 2767673930c3SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, int error, 2768673930c3SDarrick J. Wong unsigned long caller_ip), 2769673930c3SDarrick J. Wong TP_ARGS(mp, agno, error, caller_ip), 2770673930c3SDarrick J. Wong TP_STRUCT__entry( 2771673930c3SDarrick J. Wong __field(dev_t, dev) 2772673930c3SDarrick J. Wong __field(xfs_agnumber_t, agno) 2773673930c3SDarrick J. Wong __field(int, error) 2774673930c3SDarrick J. Wong __field(unsigned long, caller_ip) 2775673930c3SDarrick J. Wong ), 2776673930c3SDarrick J. Wong TP_fast_assign( 2777673930c3SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 2778673930c3SDarrick J. Wong __entry->agno = agno; 2779673930c3SDarrick J. Wong __entry->error = error; 2780673930c3SDarrick J. Wong __entry->caller_ip = caller_ip; 2781673930c3SDarrick J. Wong ), 27829febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x error %d caller %pS", 2783673930c3SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2784673930c3SDarrick J. Wong __entry->agno, 2785673930c3SDarrick J. Wong __entry->error, 2786673930c3SDarrick J. Wong (char *)__entry->caller_ip) 2787673930c3SDarrick J. Wong ); 2788673930c3SDarrick J. Wong 2789673930c3SDarrick J. Wong #define DEFINE_AG_ERROR_EVENT(name) \ 2790673930c3SDarrick J. Wong DEFINE_EVENT(xfs_ag_error_class, name, \ 2791673930c3SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, int error, \ 2792673930c3SDarrick J. Wong unsigned long caller_ip), \ 2793673930c3SDarrick J. Wong TP_ARGS(mp, agno, error, caller_ip)) 2794673930c3SDarrick J. Wong 2795673930c3SDarrick J. Wong DEFINE_RMAP_EVENT(xfs_rmap_unmap); 2796673930c3SDarrick J. Wong DEFINE_RMAP_EVENT(xfs_rmap_unmap_done); 2797673930c3SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_unmap_error); 2798673930c3SDarrick J. Wong DEFINE_RMAP_EVENT(xfs_rmap_map); 2799673930c3SDarrick J. Wong DEFINE_RMAP_EVENT(xfs_rmap_map_done); 2800673930c3SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_map_error); 2801fb7d9267SDarrick J. Wong DEFINE_RMAP_EVENT(xfs_rmap_convert); 2802fb7d9267SDarrick J. Wong DEFINE_RMAP_EVENT(xfs_rmap_convert_done); 2803fb7d9267SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_convert_error); 2804fb7d9267SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_convert_state); 2805673930c3SDarrick J. Wong 2806aa966d84SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_rmapbt_class, 2807aa966d84SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 2808aa966d84SDarrick J. Wong xfs_agblock_t agbno, xfs_extlen_t len, 2809aa966d84SDarrick J. Wong uint64_t owner, uint64_t offset, unsigned int flags), 2810aa966d84SDarrick J. Wong TP_ARGS(mp, agno, agbno, len, owner, offset, flags), 2811aa966d84SDarrick J. Wong TP_STRUCT__entry( 2812aa966d84SDarrick J. Wong __field(dev_t, dev) 2813aa966d84SDarrick J. Wong __field(xfs_agnumber_t, agno) 2814aa966d84SDarrick J. Wong __field(xfs_agblock_t, agbno) 2815aa966d84SDarrick J. Wong __field(xfs_extlen_t, len) 2816aa966d84SDarrick J. Wong __field(uint64_t, owner) 2817aa966d84SDarrick J. Wong __field(uint64_t, offset) 2818aa966d84SDarrick J. Wong __field(unsigned int, flags) 2819aa966d84SDarrick J. Wong ), 2820aa966d84SDarrick J. Wong TP_fast_assign( 2821aa966d84SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 2822aa966d84SDarrick J. Wong __entry->agno = agno; 2823aa966d84SDarrick J. Wong __entry->agbno = agbno; 2824aa966d84SDarrick J. Wong __entry->len = len; 2825aa966d84SDarrick J. Wong __entry->owner = owner; 2826aa966d84SDarrick J. Wong __entry->offset = offset; 2827aa966d84SDarrick J. Wong __entry->flags = flags; 2828aa966d84SDarrick J. Wong ), 28297989acccSDarrick 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", 2830aa966d84SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2831aa966d84SDarrick J. Wong __entry->agno, 2832aa966d84SDarrick J. Wong __entry->agbno, 2833aa966d84SDarrick J. Wong __entry->len, 2834aa966d84SDarrick J. Wong __entry->owner, 2835aa966d84SDarrick J. Wong __entry->offset, 2836aa966d84SDarrick J. Wong __entry->flags) 2837aa966d84SDarrick J. Wong ); 2838aa966d84SDarrick J. Wong #define DEFINE_RMAPBT_EVENT(name) \ 2839aa966d84SDarrick J. Wong DEFINE_EVENT(xfs_rmapbt_class, name, \ 2840aa966d84SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 2841aa966d84SDarrick J. Wong xfs_agblock_t agbno, xfs_extlen_t len, \ 2842aa966d84SDarrick J. Wong uint64_t owner, uint64_t offset, unsigned int flags), \ 2843aa966d84SDarrick J. Wong TP_ARGS(mp, agno, agbno, len, owner, offset, flags)) 2844aa966d84SDarrick J. Wong 2845aa966d84SDarrick J. Wong #define DEFINE_RMAP_DEFERRED_EVENT DEFINE_MAP_EXTENT_DEFERRED_EVENT 2846aa966d84SDarrick J. Wong DEFINE_RMAP_DEFERRED_EVENT(xfs_rmap_defer); 2847aa966d84SDarrick J. Wong DEFINE_RMAP_DEFERRED_EVENT(xfs_rmap_deferred); 2848aa966d84SDarrick J. Wong 28494b8ed677SDarrick J. Wong DEFINE_BUSY_EVENT(xfs_rmapbt_alloc_block); 28504b8ed677SDarrick J. Wong DEFINE_BUSY_EVENT(xfs_rmapbt_free_block); 2851aa966d84SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_update); 2852aa966d84SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_insert); 2853aa966d84SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_delete); 2854aa966d84SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_insert_error); 2855aa966d84SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_delete_error); 2856aa966d84SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_rmap_update_error); 2857ceeb9c83SDarrick J. Wong 2858ceeb9c83SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_find_left_neighbor_candidate); 2859ceeb9c83SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_find_left_neighbor_query); 2860ceeb9c83SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_lookup_le_range_candidate); 2861ceeb9c83SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_lookup_le_range); 28620a1b0b38SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_lookup_le_range_result); 28630a1b0b38SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_find_right_neighbor_result); 2864fb7d9267SDarrick J. Wong DEFINE_RMAPBT_EVENT(xfs_rmap_find_left_neighbor_result); 28654b8ed677SDarrick J. Wong 28669f3afb57SDarrick J. Wong /* deferred bmbt updates */ 28679f3afb57SDarrick J. Wong #define DEFINE_BMAP_DEFERRED_EVENT DEFINE_RMAP_DEFERRED_EVENT 28689f3afb57SDarrick J. Wong DEFINE_BMAP_DEFERRED_EVENT(xfs_bmap_defer); 28699f3afb57SDarrick J. Wong DEFINE_BMAP_DEFERRED_EVENT(xfs_bmap_deferred); 28709f3afb57SDarrick J. Wong 28713fd129b6SDarrick J. Wong /* per-AG reservation */ 28723fd129b6SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_ag_resv_class, 28733fd129b6SDarrick J. Wong TP_PROTO(struct xfs_perag *pag, enum xfs_ag_resv_type resv, 28743fd129b6SDarrick J. Wong xfs_extlen_t len), 28753fd129b6SDarrick J. Wong TP_ARGS(pag, resv, len), 28763fd129b6SDarrick J. Wong TP_STRUCT__entry( 28773fd129b6SDarrick J. Wong __field(dev_t, dev) 28783fd129b6SDarrick J. Wong __field(xfs_agnumber_t, agno) 28793fd129b6SDarrick J. Wong __field(int, resv) 28803fd129b6SDarrick J. Wong __field(xfs_extlen_t, freeblks) 28813fd129b6SDarrick J. Wong __field(xfs_extlen_t, flcount) 28823fd129b6SDarrick J. Wong __field(xfs_extlen_t, reserved) 28833fd129b6SDarrick J. Wong __field(xfs_extlen_t, asked) 28843fd129b6SDarrick J. Wong __field(xfs_extlen_t, len) 28853fd129b6SDarrick J. Wong ), 28863fd129b6SDarrick J. Wong TP_fast_assign( 28873fd129b6SDarrick J. Wong struct xfs_ag_resv *r = xfs_perag_resv(pag, resv); 28883fd129b6SDarrick J. Wong 28893fd129b6SDarrick J. Wong __entry->dev = pag->pag_mount->m_super->s_dev; 28903fd129b6SDarrick J. Wong __entry->agno = pag->pag_agno; 28913fd129b6SDarrick J. Wong __entry->resv = resv; 28923fd129b6SDarrick J. Wong __entry->freeblks = pag->pagf_freeblks; 28933fd129b6SDarrick J. Wong __entry->flcount = pag->pagf_flcount; 28943fd129b6SDarrick J. Wong __entry->reserved = r ? r->ar_reserved : 0; 28953fd129b6SDarrick J. Wong __entry->asked = r ? r->ar_asked : 0; 28963fd129b6SDarrick J. Wong __entry->len = len; 28973fd129b6SDarrick J. Wong ), 28989febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x resv %d freeblks %u flcount %u " 289942bf9dbaSHou Tao "resv %u ask %u len %u", 29003fd129b6SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 29013fd129b6SDarrick J. Wong __entry->agno, 29023fd129b6SDarrick J. Wong __entry->resv, 29033fd129b6SDarrick J. Wong __entry->freeblks, 29043fd129b6SDarrick J. Wong __entry->flcount, 29053fd129b6SDarrick J. Wong __entry->reserved, 29063fd129b6SDarrick J. Wong __entry->asked, 29073fd129b6SDarrick J. Wong __entry->len) 29083fd129b6SDarrick J. Wong ) 29093fd129b6SDarrick J. Wong #define DEFINE_AG_RESV_EVENT(name) \ 29103fd129b6SDarrick J. Wong DEFINE_EVENT(xfs_ag_resv_class, name, \ 29113fd129b6SDarrick J. Wong TP_PROTO(struct xfs_perag *pag, enum xfs_ag_resv_type type, \ 29123fd129b6SDarrick J. Wong xfs_extlen_t len), \ 29133fd129b6SDarrick J. Wong TP_ARGS(pag, type, len)) 29143fd129b6SDarrick J. Wong 29153fd129b6SDarrick J. Wong /* per-AG reservation tracepoints */ 29163fd129b6SDarrick J. Wong DEFINE_AG_RESV_EVENT(xfs_ag_resv_init); 29173fd129b6SDarrick J. Wong DEFINE_AG_RESV_EVENT(xfs_ag_resv_free); 29183fd129b6SDarrick J. Wong DEFINE_AG_RESV_EVENT(xfs_ag_resv_alloc_extent); 29193fd129b6SDarrick J. Wong DEFINE_AG_RESV_EVENT(xfs_ag_resv_free_extent); 29203fd129b6SDarrick J. Wong DEFINE_AG_RESV_EVENT(xfs_ag_resv_critical); 29213fd129b6SDarrick J. Wong DEFINE_AG_RESV_EVENT(xfs_ag_resv_needed); 29223fd129b6SDarrick J. Wong 29233fd129b6SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_ag_resv_free_error); 29243fd129b6SDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_ag_resv_init_error); 29253fd129b6SDarrick J. Wong 2926c75c752dSDarrick J. Wong /* refcount tracepoint classes */ 2927c75c752dSDarrick J. Wong 2928c75c752dSDarrick J. Wong /* reuse the discard trace class for agbno/aglen-based traces */ 2929c75c752dSDarrick J. Wong #define DEFINE_AG_EXTENT_EVENT(name) DEFINE_DISCARD_EVENT(name) 2930c75c752dSDarrick J. Wong 2931c75c752dSDarrick J. Wong /* ag btree lookup tracepoint class */ 293285f8dff0SDarrick J. Wong TRACE_DEFINE_ENUM(XFS_LOOKUP_EQi); 293385f8dff0SDarrick J. Wong TRACE_DEFINE_ENUM(XFS_LOOKUP_LEi); 293485f8dff0SDarrick J. Wong TRACE_DEFINE_ENUM(XFS_LOOKUP_GEi); 2935c75c752dSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_ag_btree_lookup_class, 2936c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 2937c75c752dSDarrick J. Wong xfs_agblock_t agbno, xfs_lookup_t dir), 2938c75c752dSDarrick J. Wong TP_ARGS(mp, agno, agbno, dir), 2939c75c752dSDarrick J. Wong TP_STRUCT__entry( 2940c75c752dSDarrick J. Wong __field(dev_t, dev) 2941c75c752dSDarrick J. Wong __field(xfs_agnumber_t, agno) 2942c75c752dSDarrick J. Wong __field(xfs_agblock_t, agbno) 2943c75c752dSDarrick J. Wong __field(xfs_lookup_t, dir) 2944c75c752dSDarrick J. Wong ), 2945c75c752dSDarrick J. Wong TP_fast_assign( 2946c75c752dSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 2947c75c752dSDarrick J. Wong __entry->agno = agno; 2948c75c752dSDarrick J. Wong __entry->agbno = agbno; 2949c75c752dSDarrick J. Wong __entry->dir = dir; 2950c75c752dSDarrick J. Wong ), 2951f7b08163SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agbno 0x%x cmp %s(%d)", 2952c75c752dSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2953c75c752dSDarrick J. Wong __entry->agno, 2954c75c752dSDarrick J. Wong __entry->agbno, 2955c75c752dSDarrick J. Wong __print_symbolic(__entry->dir, XFS_AG_BTREE_CMP_FORMAT_STR), 2956c75c752dSDarrick J. Wong __entry->dir) 2957c75c752dSDarrick J. Wong ) 2958c75c752dSDarrick J. Wong 2959c75c752dSDarrick J. Wong #define DEFINE_AG_BTREE_LOOKUP_EVENT(name) \ 2960c75c752dSDarrick J. Wong DEFINE_EVENT(xfs_ag_btree_lookup_class, name, \ 2961c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 2962c75c752dSDarrick J. Wong xfs_agblock_t agbno, xfs_lookup_t dir), \ 2963c75c752dSDarrick J. Wong TP_ARGS(mp, agno, agbno, dir)) 2964c75c752dSDarrick J. Wong 2965c75c752dSDarrick J. Wong /* single-rcext tracepoint class */ 2966c75c752dSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_refcount_extent_class, 2967c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 2968c75c752dSDarrick J. Wong struct xfs_refcount_irec *irec), 2969c75c752dSDarrick J. Wong TP_ARGS(mp, agno, irec), 2970c75c752dSDarrick J. Wong TP_STRUCT__entry( 2971c75c752dSDarrick J. Wong __field(dev_t, dev) 2972c75c752dSDarrick J. Wong __field(xfs_agnumber_t, agno) 2973571423a1SDarrick J. Wong __field(enum xfs_refc_domain, domain) 2974c75c752dSDarrick J. Wong __field(xfs_agblock_t, startblock) 2975c75c752dSDarrick J. Wong __field(xfs_extlen_t, blockcount) 2976c75c752dSDarrick J. Wong __field(xfs_nlink_t, refcount) 2977c75c752dSDarrick J. Wong ), 2978c75c752dSDarrick J. Wong TP_fast_assign( 2979c75c752dSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 2980c75c752dSDarrick J. Wong __entry->agno = agno; 2981571423a1SDarrick J. Wong __entry->domain = irec->rc_domain; 2982c75c752dSDarrick J. Wong __entry->startblock = irec->rc_startblock; 2983c75c752dSDarrick J. Wong __entry->blockcount = irec->rc_blockcount; 2984c75c752dSDarrick J. Wong __entry->refcount = irec->rc_refcount; 2985c75c752dSDarrick J. Wong ), 2986571423a1SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u", 2987c75c752dSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 2988c75c752dSDarrick J. Wong __entry->agno, 2989571423a1SDarrick J. Wong __print_symbolic(__entry->domain, XFS_REFC_DOMAIN_STRINGS), 2990c75c752dSDarrick J. Wong __entry->startblock, 2991c75c752dSDarrick J. Wong __entry->blockcount, 2992c75c752dSDarrick J. Wong __entry->refcount) 2993c75c752dSDarrick J. Wong ) 2994c75c752dSDarrick J. Wong 2995c75c752dSDarrick J. Wong #define DEFINE_REFCOUNT_EXTENT_EVENT(name) \ 2996c75c752dSDarrick J. Wong DEFINE_EVENT(xfs_refcount_extent_class, name, \ 2997c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 2998c75c752dSDarrick J. Wong struct xfs_refcount_irec *irec), \ 2999c75c752dSDarrick J. Wong TP_ARGS(mp, agno, irec)) 3000c75c752dSDarrick J. Wong 3001c75c752dSDarrick J. Wong /* single-rcext and an agbno tracepoint class */ 3002c75c752dSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_refcount_extent_at_class, 3003c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 3004c75c752dSDarrick J. Wong struct xfs_refcount_irec *irec, xfs_agblock_t agbno), 3005c75c752dSDarrick J. Wong TP_ARGS(mp, agno, irec, agbno), 3006c75c752dSDarrick J. Wong TP_STRUCT__entry( 3007c75c752dSDarrick J. Wong __field(dev_t, dev) 3008c75c752dSDarrick J. Wong __field(xfs_agnumber_t, agno) 3009571423a1SDarrick J. Wong __field(enum xfs_refc_domain, domain) 3010c75c752dSDarrick J. Wong __field(xfs_agblock_t, startblock) 3011c75c752dSDarrick J. Wong __field(xfs_extlen_t, blockcount) 3012c75c752dSDarrick J. Wong __field(xfs_nlink_t, refcount) 3013c75c752dSDarrick J. Wong __field(xfs_agblock_t, agbno) 3014c75c752dSDarrick J. Wong ), 3015c75c752dSDarrick J. Wong TP_fast_assign( 3016c75c752dSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3017c75c752dSDarrick J. Wong __entry->agno = agno; 3018571423a1SDarrick J. Wong __entry->domain = irec->rc_domain; 3019c75c752dSDarrick J. Wong __entry->startblock = irec->rc_startblock; 3020c75c752dSDarrick J. Wong __entry->blockcount = irec->rc_blockcount; 3021c75c752dSDarrick J. Wong __entry->refcount = irec->rc_refcount; 3022c75c752dSDarrick J. Wong __entry->agbno = agbno; 3023c75c752dSDarrick J. Wong ), 3024571423a1SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u @ agbno 0x%x", 3025c75c752dSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3026c75c752dSDarrick J. Wong __entry->agno, 3027571423a1SDarrick J. Wong __print_symbolic(__entry->domain, XFS_REFC_DOMAIN_STRINGS), 3028c75c752dSDarrick J. Wong __entry->startblock, 3029c75c752dSDarrick J. Wong __entry->blockcount, 3030c75c752dSDarrick J. Wong __entry->refcount, 3031c75c752dSDarrick J. Wong __entry->agbno) 3032c75c752dSDarrick J. Wong ) 3033c75c752dSDarrick J. Wong 3034c75c752dSDarrick J. Wong #define DEFINE_REFCOUNT_EXTENT_AT_EVENT(name) \ 3035c75c752dSDarrick J. Wong DEFINE_EVENT(xfs_refcount_extent_at_class, name, \ 3036c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 3037c75c752dSDarrick J. Wong struct xfs_refcount_irec *irec, xfs_agblock_t agbno), \ 3038c75c752dSDarrick J. Wong TP_ARGS(mp, agno, irec, agbno)) 3039c75c752dSDarrick J. Wong 3040c75c752dSDarrick J. Wong /* double-rcext tracepoint class */ 3041c75c752dSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_refcount_double_extent_class, 3042c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 3043c75c752dSDarrick J. Wong struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2), 3044c75c752dSDarrick J. Wong TP_ARGS(mp, agno, i1, i2), 3045c75c752dSDarrick J. Wong TP_STRUCT__entry( 3046c75c752dSDarrick J. Wong __field(dev_t, dev) 3047c75c752dSDarrick J. Wong __field(xfs_agnumber_t, agno) 3048571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i1_domain) 3049c75c752dSDarrick J. Wong __field(xfs_agblock_t, i1_startblock) 3050c75c752dSDarrick J. Wong __field(xfs_extlen_t, i1_blockcount) 3051c75c752dSDarrick J. Wong __field(xfs_nlink_t, i1_refcount) 3052571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i2_domain) 3053c75c752dSDarrick J. Wong __field(xfs_agblock_t, i2_startblock) 3054c75c752dSDarrick J. Wong __field(xfs_extlen_t, i2_blockcount) 3055c75c752dSDarrick J. Wong __field(xfs_nlink_t, i2_refcount) 3056c75c752dSDarrick J. Wong ), 3057c75c752dSDarrick J. Wong TP_fast_assign( 3058c75c752dSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3059c75c752dSDarrick J. Wong __entry->agno = agno; 3060571423a1SDarrick J. Wong __entry->i1_domain = i1->rc_domain; 3061c75c752dSDarrick J. Wong __entry->i1_startblock = i1->rc_startblock; 3062c75c752dSDarrick J. Wong __entry->i1_blockcount = i1->rc_blockcount; 3063c75c752dSDarrick J. Wong __entry->i1_refcount = i1->rc_refcount; 3064571423a1SDarrick J. Wong __entry->i2_domain = i2->rc_domain; 3065c75c752dSDarrick J. Wong __entry->i2_startblock = i2->rc_startblock; 3066c75c752dSDarrick J. Wong __entry->i2_blockcount = i2->rc_blockcount; 3067c75c752dSDarrick J. Wong __entry->i2_refcount = i2->rc_refcount; 3068c75c752dSDarrick J. Wong ), 3069571423a1SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u -- " 3070571423a1SDarrick J. Wong "dom %s agbno 0x%x fsbcount 0x%x refcount %u", 3071c75c752dSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3072c75c752dSDarrick J. Wong __entry->agno, 3073571423a1SDarrick J. Wong __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS), 3074c75c752dSDarrick J. Wong __entry->i1_startblock, 3075c75c752dSDarrick J. Wong __entry->i1_blockcount, 3076c75c752dSDarrick J. Wong __entry->i1_refcount, 3077571423a1SDarrick J. Wong __print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS), 3078c75c752dSDarrick J. Wong __entry->i2_startblock, 3079c75c752dSDarrick J. Wong __entry->i2_blockcount, 3080c75c752dSDarrick J. Wong __entry->i2_refcount) 3081c75c752dSDarrick J. Wong ) 3082c75c752dSDarrick J. Wong 3083c75c752dSDarrick J. Wong #define DEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(name) \ 3084c75c752dSDarrick J. Wong DEFINE_EVENT(xfs_refcount_double_extent_class, name, \ 3085c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 3086c75c752dSDarrick J. Wong struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2), \ 3087c75c752dSDarrick J. Wong TP_ARGS(mp, agno, i1, i2)) 3088c75c752dSDarrick J. Wong 3089c75c752dSDarrick J. Wong /* double-rcext and an agbno tracepoint class */ 3090c75c752dSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_refcount_double_extent_at_class, 3091c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 3092c75c752dSDarrick J. Wong struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, 3093c75c752dSDarrick J. Wong xfs_agblock_t agbno), 3094c75c752dSDarrick J. Wong TP_ARGS(mp, agno, i1, i2, agbno), 3095c75c752dSDarrick J. Wong TP_STRUCT__entry( 3096c75c752dSDarrick J. Wong __field(dev_t, dev) 3097c75c752dSDarrick J. Wong __field(xfs_agnumber_t, agno) 3098571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i1_domain) 3099c75c752dSDarrick J. Wong __field(xfs_agblock_t, i1_startblock) 3100c75c752dSDarrick J. Wong __field(xfs_extlen_t, i1_blockcount) 3101c75c752dSDarrick J. Wong __field(xfs_nlink_t, i1_refcount) 3102571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i2_domain) 3103c75c752dSDarrick J. Wong __field(xfs_agblock_t, i2_startblock) 3104c75c752dSDarrick J. Wong __field(xfs_extlen_t, i2_blockcount) 3105c75c752dSDarrick J. Wong __field(xfs_nlink_t, i2_refcount) 3106c75c752dSDarrick J. Wong __field(xfs_agblock_t, agbno) 3107c75c752dSDarrick J. Wong ), 3108c75c752dSDarrick J. Wong TP_fast_assign( 3109c75c752dSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3110c75c752dSDarrick J. Wong __entry->agno = agno; 3111571423a1SDarrick J. Wong __entry->i1_domain = i1->rc_domain; 3112c75c752dSDarrick J. Wong __entry->i1_startblock = i1->rc_startblock; 3113c75c752dSDarrick J. Wong __entry->i1_blockcount = i1->rc_blockcount; 3114c75c752dSDarrick J. Wong __entry->i1_refcount = i1->rc_refcount; 3115571423a1SDarrick J. Wong __entry->i2_domain = i2->rc_domain; 3116c75c752dSDarrick J. Wong __entry->i2_startblock = i2->rc_startblock; 3117c75c752dSDarrick J. Wong __entry->i2_blockcount = i2->rc_blockcount; 3118c75c752dSDarrick J. Wong __entry->i2_refcount = i2->rc_refcount; 3119c75c752dSDarrick J. Wong __entry->agbno = agbno; 3120c75c752dSDarrick J. Wong ), 3121571423a1SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u -- " 3122571423a1SDarrick J. Wong "dom %s agbno 0x%x fsbcount 0x%x refcount %u @ agbno 0x%x", 3123c75c752dSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3124c75c752dSDarrick J. Wong __entry->agno, 3125571423a1SDarrick J. Wong __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS), 3126c75c752dSDarrick J. Wong __entry->i1_startblock, 3127c75c752dSDarrick J. Wong __entry->i1_blockcount, 3128c75c752dSDarrick J. Wong __entry->i1_refcount, 3129571423a1SDarrick J. Wong __print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS), 3130c75c752dSDarrick J. Wong __entry->i2_startblock, 3131c75c752dSDarrick J. Wong __entry->i2_blockcount, 3132c75c752dSDarrick J. Wong __entry->i2_refcount, 3133c75c752dSDarrick J. Wong __entry->agbno) 3134c75c752dSDarrick J. Wong ) 3135c75c752dSDarrick J. Wong 3136c75c752dSDarrick J. Wong #define DEFINE_REFCOUNT_DOUBLE_EXTENT_AT_EVENT(name) \ 3137c75c752dSDarrick J. Wong DEFINE_EVENT(xfs_refcount_double_extent_at_class, name, \ 3138c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 3139c75c752dSDarrick J. Wong struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, \ 3140c75c752dSDarrick J. Wong xfs_agblock_t agbno), \ 3141c75c752dSDarrick J. Wong TP_ARGS(mp, agno, i1, i2, agbno)) 3142c75c752dSDarrick J. Wong 3143c75c752dSDarrick J. Wong /* triple-rcext tracepoint class */ 3144c75c752dSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_refcount_triple_extent_class, 3145c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 3146c75c752dSDarrick J. Wong struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, 3147c75c752dSDarrick J. Wong struct xfs_refcount_irec *i3), 3148c75c752dSDarrick J. Wong TP_ARGS(mp, agno, i1, i2, i3), 3149c75c752dSDarrick J. Wong TP_STRUCT__entry( 3150c75c752dSDarrick J. Wong __field(dev_t, dev) 3151c75c752dSDarrick J. Wong __field(xfs_agnumber_t, agno) 3152571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i1_domain) 3153c75c752dSDarrick J. Wong __field(xfs_agblock_t, i1_startblock) 3154c75c752dSDarrick J. Wong __field(xfs_extlen_t, i1_blockcount) 3155c75c752dSDarrick J. Wong __field(xfs_nlink_t, i1_refcount) 3156571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i2_domain) 3157c75c752dSDarrick J. Wong __field(xfs_agblock_t, i2_startblock) 3158c75c752dSDarrick J. Wong __field(xfs_extlen_t, i2_blockcount) 3159c75c752dSDarrick J. Wong __field(xfs_nlink_t, i2_refcount) 3160571423a1SDarrick J. Wong __field(enum xfs_refc_domain, i3_domain) 3161c75c752dSDarrick J. Wong __field(xfs_agblock_t, i3_startblock) 3162c75c752dSDarrick J. Wong __field(xfs_extlen_t, i3_blockcount) 3163c75c752dSDarrick J. Wong __field(xfs_nlink_t, i3_refcount) 3164c75c752dSDarrick J. Wong ), 3165c75c752dSDarrick J. Wong TP_fast_assign( 3166c75c752dSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3167c75c752dSDarrick J. Wong __entry->agno = agno; 3168571423a1SDarrick J. Wong __entry->i1_domain = i1->rc_domain; 3169c75c752dSDarrick J. Wong __entry->i1_startblock = i1->rc_startblock; 3170c75c752dSDarrick J. Wong __entry->i1_blockcount = i1->rc_blockcount; 3171c75c752dSDarrick J. Wong __entry->i1_refcount = i1->rc_refcount; 3172571423a1SDarrick J. Wong __entry->i2_domain = i2->rc_domain; 3173c75c752dSDarrick J. Wong __entry->i2_startblock = i2->rc_startblock; 3174c75c752dSDarrick J. Wong __entry->i2_blockcount = i2->rc_blockcount; 3175c75c752dSDarrick J. Wong __entry->i2_refcount = i2->rc_refcount; 3176571423a1SDarrick J. Wong __entry->i3_domain = i3->rc_domain; 3177c75c752dSDarrick J. Wong __entry->i3_startblock = i3->rc_startblock; 3178c75c752dSDarrick J. Wong __entry->i3_blockcount = i3->rc_blockcount; 3179c75c752dSDarrick J. Wong __entry->i3_refcount = i3->rc_refcount; 3180c75c752dSDarrick J. Wong ), 3181571423a1SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u -- " 3182571423a1SDarrick J. Wong "dom %s agbno 0x%x fsbcount 0x%x refcount %u -- " 3183571423a1SDarrick J. Wong "dom %s agbno 0x%x fsbcount 0x%x refcount %u", 3184c75c752dSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3185c75c752dSDarrick J. Wong __entry->agno, 3186571423a1SDarrick J. Wong __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS), 3187c75c752dSDarrick J. Wong __entry->i1_startblock, 3188c75c752dSDarrick J. Wong __entry->i1_blockcount, 3189c75c752dSDarrick J. Wong __entry->i1_refcount, 3190571423a1SDarrick J. Wong __print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS), 3191c75c752dSDarrick J. Wong __entry->i2_startblock, 3192c75c752dSDarrick J. Wong __entry->i2_blockcount, 3193c75c752dSDarrick J. Wong __entry->i2_refcount, 3194571423a1SDarrick J. Wong __print_symbolic(__entry->i3_domain, XFS_REFC_DOMAIN_STRINGS), 3195c75c752dSDarrick J. Wong __entry->i3_startblock, 3196c75c752dSDarrick J. Wong __entry->i3_blockcount, 3197c75c752dSDarrick J. Wong __entry->i3_refcount) 3198c75c752dSDarrick J. Wong ); 3199c75c752dSDarrick J. Wong 3200c75c752dSDarrick J. Wong #define DEFINE_REFCOUNT_TRIPLE_EXTENT_EVENT(name) \ 3201c75c752dSDarrick J. Wong DEFINE_EVENT(xfs_refcount_triple_extent_class, name, \ 3202c75c752dSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 3203c75c752dSDarrick J. Wong struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, \ 3204c75c752dSDarrick J. Wong struct xfs_refcount_irec *i3), \ 3205c75c752dSDarrick J. Wong TP_ARGS(mp, agno, i1, i2, i3)) 3206c75c752dSDarrick J. Wong 3207c75c752dSDarrick J. Wong /* refcount btree tracepoints */ 3208c75c752dSDarrick J. Wong DEFINE_BUSY_EVENT(xfs_refcountbt_alloc_block); 3209c75c752dSDarrick J. Wong DEFINE_BUSY_EVENT(xfs_refcountbt_free_block); 3210c75c752dSDarrick J. Wong DEFINE_AG_BTREE_LOOKUP_EVENT(xfs_refcount_lookup); 3211c75c752dSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_get); 3212c75c752dSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_update); 3213c75c752dSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_insert); 3214c75c752dSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_delete); 3215c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_insert_error); 3216c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_delete_error); 3217c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_update_error); 3218c75c752dSDarrick J. Wong 3219c75c752dSDarrick J. Wong /* refcount adjustment tracepoints */ 3220c75c752dSDarrick J. Wong DEFINE_AG_EXTENT_EVENT(xfs_refcount_increase); 3221c75c752dSDarrick J. Wong DEFINE_AG_EXTENT_EVENT(xfs_refcount_decrease); 3222174edb0eSDarrick J. Wong DEFINE_AG_EXTENT_EVENT(xfs_refcount_cow_increase); 3223174edb0eSDarrick J. Wong DEFINE_AG_EXTENT_EVENT(xfs_refcount_cow_decrease); 3224c75c752dSDarrick J. Wong DEFINE_REFCOUNT_TRIPLE_EXTENT_EVENT(xfs_refcount_merge_center_extents); 3225c75c752dSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_modify_extent); 3226174edb0eSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_recover_extent); 3227c75c752dSDarrick J. Wong DEFINE_REFCOUNT_EXTENT_AT_EVENT(xfs_refcount_split_extent); 3228c75c752dSDarrick J. Wong DEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(xfs_refcount_merge_left_extent); 3229c75c752dSDarrick J. Wong DEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(xfs_refcount_merge_right_extent); 3230c75c752dSDarrick J. Wong DEFINE_REFCOUNT_DOUBLE_EXTENT_AT_EVENT(xfs_refcount_find_left_extent); 3231c75c752dSDarrick J. Wong DEFINE_REFCOUNT_DOUBLE_EXTENT_AT_EVENT(xfs_refcount_find_right_extent); 3232c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_adjust_error); 3233174edb0eSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_adjust_cow_error); 3234c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_merge_center_extents_error); 3235c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_modify_extent_error); 3236c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_split_extent_error); 3237c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_merge_left_extent_error); 3238c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_merge_right_extent_error); 3239c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_find_left_extent_error); 3240c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_find_right_extent_error); 3241c75c752dSDarrick J. Wong 3242c75c752dSDarrick J. Wong /* reflink helpers */ 3243c75c752dSDarrick J. Wong DEFINE_AG_EXTENT_EVENT(xfs_refcount_find_shared); 3244c75c752dSDarrick J. Wong DEFINE_AG_EXTENT_EVENT(xfs_refcount_find_shared_result); 3245c75c752dSDarrick J. Wong DEFINE_AG_ERROR_EVENT(xfs_refcount_find_shared_error); 324633ba6129SDarrick J. Wong #define DEFINE_REFCOUNT_DEFERRED_EVENT DEFINE_PHYS_EXTENT_DEFERRED_EVENT 324733ba6129SDarrick J. Wong DEFINE_REFCOUNT_DEFERRED_EVENT(xfs_refcount_defer); 324833ba6129SDarrick J. Wong DEFINE_REFCOUNT_DEFERRED_EVENT(xfs_refcount_deferred); 3249c75c752dSDarrick J. Wong 3250f997ee21SDarrick J. Wong TRACE_EVENT(xfs_refcount_finish_one_leftover, 3251f997ee21SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 32520b11553eSDarrick J. Wong int type, xfs_agblock_t agbno, xfs_extlen_t len), 32530b11553eSDarrick J. Wong TP_ARGS(mp, agno, type, agbno, len), 3254f997ee21SDarrick J. Wong TP_STRUCT__entry( 3255f997ee21SDarrick J. Wong __field(dev_t, dev) 3256f997ee21SDarrick J. Wong __field(xfs_agnumber_t, agno) 3257f997ee21SDarrick J. Wong __field(int, type) 3258f997ee21SDarrick J. Wong __field(xfs_agblock_t, agbno) 3259f997ee21SDarrick J. Wong __field(xfs_extlen_t, len) 3260f997ee21SDarrick J. Wong ), 3261f997ee21SDarrick J. Wong TP_fast_assign( 3262f997ee21SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3263f997ee21SDarrick J. Wong __entry->agno = agno; 3264f997ee21SDarrick J. Wong __entry->type = type; 3265f997ee21SDarrick J. Wong __entry->agbno = agbno; 3266f997ee21SDarrick J. Wong __entry->len = len; 3267f997ee21SDarrick J. Wong ), 32680b11553eSDarrick J. Wong TP_printk("dev %d:%d type %d agno 0x%x agbno 0x%x fsbcount 0x%x", 3269f997ee21SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3270f997ee21SDarrick J. Wong __entry->type, 3271f997ee21SDarrick J. Wong __entry->agno, 3272f997ee21SDarrick J. Wong __entry->agbno, 32730b11553eSDarrick J. Wong __entry->len) 3274f997ee21SDarrick J. Wong ); 3275f997ee21SDarrick J. Wong 3276f65306eaSDarrick J. Wong /* simple inode-based error/%ip tracepoint class */ 3277f65306eaSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_inode_error_class, 3278f65306eaSDarrick J. Wong TP_PROTO(struct xfs_inode *ip, int error, unsigned long caller_ip), 3279f65306eaSDarrick J. Wong TP_ARGS(ip, error, caller_ip), 3280f65306eaSDarrick J. Wong TP_STRUCT__entry( 3281f65306eaSDarrick J. Wong __field(dev_t, dev) 3282f65306eaSDarrick J. Wong __field(xfs_ino_t, ino) 3283f65306eaSDarrick J. Wong __field(int, error) 3284f65306eaSDarrick J. Wong __field(unsigned long, caller_ip) 3285f65306eaSDarrick J. Wong ), 3286f65306eaSDarrick J. Wong TP_fast_assign( 3287f65306eaSDarrick J. Wong __entry->dev = VFS_I(ip)->i_sb->s_dev; 3288f65306eaSDarrick J. Wong __entry->ino = ip->i_ino; 3289f65306eaSDarrick J. Wong __entry->error = error; 3290f65306eaSDarrick J. Wong __entry->caller_ip = caller_ip; 3291f65306eaSDarrick J. Wong ), 3292af6265a0SDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx error %d caller %pS", 3293f65306eaSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3294f65306eaSDarrick J. Wong __entry->ino, 3295f65306eaSDarrick J. Wong __entry->error, 3296f65306eaSDarrick J. Wong (char *)__entry->caller_ip) 3297f65306eaSDarrick J. Wong ); 3298f65306eaSDarrick J. Wong 3299f65306eaSDarrick J. Wong #define DEFINE_INODE_ERROR_EVENT(name) \ 3300f65306eaSDarrick J. Wong DEFINE_EVENT(xfs_inode_error_class, name, \ 3301f65306eaSDarrick J. Wong TP_PROTO(struct xfs_inode *ip, int error, \ 3302f65306eaSDarrick J. Wong unsigned long caller_ip), \ 3303f65306eaSDarrick J. Wong TP_ARGS(ip, error, caller_ip)) 3304f65306eaSDarrick J. Wong 330553aa1c34SDarrick J. Wong /* reflink tracepoint classes */ 330653aa1c34SDarrick J. Wong 330753aa1c34SDarrick J. Wong /* two-file io tracepoint class */ 330853aa1c34SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_double_io_class, 330953aa1c34SDarrick J. Wong TP_PROTO(struct xfs_inode *src, xfs_off_t soffset, xfs_off_t len, 331053aa1c34SDarrick J. Wong struct xfs_inode *dest, xfs_off_t doffset), 331153aa1c34SDarrick J. Wong TP_ARGS(src, soffset, len, dest, doffset), 331253aa1c34SDarrick J. Wong TP_STRUCT__entry( 331353aa1c34SDarrick J. Wong __field(dev_t, dev) 331453aa1c34SDarrick J. Wong __field(xfs_ino_t, src_ino) 331553aa1c34SDarrick J. Wong __field(loff_t, src_isize) 331653aa1c34SDarrick J. Wong __field(loff_t, src_disize) 331753aa1c34SDarrick J. Wong __field(loff_t, src_offset) 3318d538cf24SDarrick J. Wong __field(long long, len) 331953aa1c34SDarrick J. Wong __field(xfs_ino_t, dest_ino) 332053aa1c34SDarrick J. Wong __field(loff_t, dest_isize) 332153aa1c34SDarrick J. Wong __field(loff_t, dest_disize) 332253aa1c34SDarrick J. Wong __field(loff_t, dest_offset) 332353aa1c34SDarrick J. Wong ), 332453aa1c34SDarrick J. Wong TP_fast_assign( 332553aa1c34SDarrick J. Wong __entry->dev = VFS_I(src)->i_sb->s_dev; 332653aa1c34SDarrick J. Wong __entry->src_ino = src->i_ino; 332753aa1c34SDarrick J. Wong __entry->src_isize = VFS_I(src)->i_size; 332813d2c10bSChristoph Hellwig __entry->src_disize = src->i_disk_size; 332953aa1c34SDarrick J. Wong __entry->src_offset = soffset; 333053aa1c34SDarrick J. Wong __entry->len = len; 333153aa1c34SDarrick J. Wong __entry->dest_ino = dest->i_ino; 333253aa1c34SDarrick J. Wong __entry->dest_isize = VFS_I(dest)->i_size; 333313d2c10bSChristoph Hellwig __entry->dest_disize = dest->i_disk_size; 333453aa1c34SDarrick J. Wong __entry->dest_offset = doffset; 333553aa1c34SDarrick J. Wong ), 3336d538cf24SDarrick J. Wong TP_printk("dev %d:%d bytecount 0x%llx " 333749e68c91SDarrick J. Wong "ino 0x%llx isize 0x%llx disize 0x%llx pos 0x%llx -> " 333849e68c91SDarrick J. Wong "ino 0x%llx isize 0x%llx disize 0x%llx pos 0x%llx", 333953aa1c34SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 334053aa1c34SDarrick J. Wong __entry->len, 334153aa1c34SDarrick J. Wong __entry->src_ino, 334253aa1c34SDarrick J. Wong __entry->src_isize, 334353aa1c34SDarrick J. Wong __entry->src_disize, 334453aa1c34SDarrick J. Wong __entry->src_offset, 334553aa1c34SDarrick J. Wong __entry->dest_ino, 334653aa1c34SDarrick J. Wong __entry->dest_isize, 334753aa1c34SDarrick J. Wong __entry->dest_disize, 334853aa1c34SDarrick J. Wong __entry->dest_offset) 334953aa1c34SDarrick J. Wong ) 335053aa1c34SDarrick J. Wong 335153aa1c34SDarrick J. Wong #define DEFINE_DOUBLE_IO_EVENT(name) \ 335253aa1c34SDarrick J. Wong DEFINE_EVENT(xfs_double_io_class, name, \ 335353aa1c34SDarrick J. Wong TP_PROTO(struct xfs_inode *src, xfs_off_t soffset, xfs_off_t len, \ 335453aa1c34SDarrick J. Wong struct xfs_inode *dest, xfs_off_t doffset), \ 335553aa1c34SDarrick J. Wong TP_ARGS(src, soffset, len, dest, doffset)) 335653aa1c34SDarrick J. Wong 335753aa1c34SDarrick J. Wong /* inode/irec events */ 335853aa1c34SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_inode_irec_class, 335953aa1c34SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, struct xfs_bmbt_irec *irec), 336053aa1c34SDarrick J. Wong TP_ARGS(ip, irec), 336153aa1c34SDarrick J. Wong TP_STRUCT__entry( 336253aa1c34SDarrick J. Wong __field(dev_t, dev) 336353aa1c34SDarrick J. Wong __field(xfs_ino_t, ino) 336453aa1c34SDarrick J. Wong __field(xfs_fileoff_t, lblk) 336553aa1c34SDarrick J. Wong __field(xfs_extlen_t, len) 336653aa1c34SDarrick J. Wong __field(xfs_fsblock_t, pblk) 33675eda4300SDarrick J. Wong __field(int, state) 336853aa1c34SDarrick J. Wong ), 336953aa1c34SDarrick J. Wong TP_fast_assign( 337053aa1c34SDarrick J. Wong __entry->dev = VFS_I(ip)->i_sb->s_dev; 337153aa1c34SDarrick J. Wong __entry->ino = ip->i_ino; 337253aa1c34SDarrick J. Wong __entry->lblk = irec->br_startoff; 337353aa1c34SDarrick J. Wong __entry->len = irec->br_blockcount; 337453aa1c34SDarrick J. Wong __entry->pblk = irec->br_startblock; 33755eda4300SDarrick J. Wong __entry->state = irec->br_state; 337653aa1c34SDarrick J. Wong ), 33777989acccSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx fileoff 0x%llx fsbcount 0x%x startblock 0x%llx st %d", 337853aa1c34SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 337953aa1c34SDarrick J. Wong __entry->ino, 338053aa1c34SDarrick J. Wong __entry->lblk, 338153aa1c34SDarrick J. Wong __entry->len, 33825eda4300SDarrick J. Wong __entry->pblk, 33835eda4300SDarrick J. Wong __entry->state) 338453aa1c34SDarrick J. Wong ); 338553aa1c34SDarrick J. Wong #define DEFINE_INODE_IREC_EVENT(name) \ 338653aa1c34SDarrick J. Wong DEFINE_EVENT(xfs_inode_irec_class, name, \ 338753aa1c34SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, struct xfs_bmbt_irec *irec), \ 338853aa1c34SDarrick J. Wong TP_ARGS(ip, irec)) 338953aa1c34SDarrick J. Wong 3390c2beff99SDarrick J. Wong /* inode iomap invalidation events */ 3391c2beff99SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_wb_invalid_class, 3392c2beff99SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, const struct iomap *iomap, unsigned int wpcseq, int whichfork), 3393c2beff99SDarrick J. Wong TP_ARGS(ip, iomap, wpcseq, whichfork), 3394c2beff99SDarrick J. Wong TP_STRUCT__entry( 3395c2beff99SDarrick J. Wong __field(dev_t, dev) 3396c2beff99SDarrick J. Wong __field(xfs_ino_t, ino) 3397c2beff99SDarrick J. Wong __field(u64, addr) 3398c2beff99SDarrick J. Wong __field(loff_t, pos) 3399c2beff99SDarrick J. Wong __field(u64, len) 3400c2beff99SDarrick J. Wong __field(u16, type) 3401c2beff99SDarrick J. Wong __field(u16, flags) 3402c2beff99SDarrick J. Wong __field(u32, wpcseq) 3403c2beff99SDarrick J. Wong __field(u32, forkseq) 3404c2beff99SDarrick J. Wong ), 3405c2beff99SDarrick J. Wong TP_fast_assign( 3406c2beff99SDarrick J. Wong __entry->dev = VFS_I(ip)->i_sb->s_dev; 3407c2beff99SDarrick J. Wong __entry->ino = ip->i_ino; 3408c2beff99SDarrick J. Wong __entry->addr = iomap->addr; 3409c2beff99SDarrick J. Wong __entry->pos = iomap->offset; 3410c2beff99SDarrick J. Wong __entry->len = iomap->length; 3411c2beff99SDarrick J. Wong __entry->type = iomap->type; 3412c2beff99SDarrick J. Wong __entry->flags = iomap->flags; 3413c2beff99SDarrick J. Wong __entry->wpcseq = wpcseq; 3414c2beff99SDarrick J. Wong __entry->forkseq = READ_ONCE(xfs_ifork_ptr(ip, whichfork)->if_seq); 3415c2beff99SDarrick J. Wong ), 3416c2beff99SDarrick 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", 3417c2beff99SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3418c2beff99SDarrick J. Wong __entry->ino, 3419c2beff99SDarrick J. Wong __entry->pos, 3420c2beff99SDarrick J. Wong __entry->addr, 3421c2beff99SDarrick J. Wong __entry->len, 3422c2beff99SDarrick J. Wong __entry->type, 3423c2beff99SDarrick J. Wong __entry->flags, 3424c2beff99SDarrick J. Wong __entry->wpcseq, 3425c2beff99SDarrick J. Wong __entry->forkseq) 3426c2beff99SDarrick J. Wong ); 3427c2beff99SDarrick J. Wong #define DEFINE_WB_INVALID_EVENT(name) \ 3428c2beff99SDarrick J. Wong DEFINE_EVENT(xfs_wb_invalid_class, name, \ 3429c2beff99SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, const struct iomap *iomap, unsigned int wpcseq, int whichfork), \ 3430c2beff99SDarrick J. Wong TP_ARGS(ip, iomap, wpcseq, whichfork)) 3431c2beff99SDarrick J. Wong DEFINE_WB_INVALID_EVENT(xfs_wb_cow_iomap_invalid); 3432c2beff99SDarrick J. Wong DEFINE_WB_INVALID_EVENT(xfs_wb_data_iomap_invalid); 3433c2beff99SDarrick J. Wong 3434254e3459SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_iomap_invalid_class, 3435254e3459SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, const struct iomap *iomap), 3436254e3459SDarrick J. Wong TP_ARGS(ip, iomap), 3437254e3459SDarrick J. Wong TP_STRUCT__entry( 3438254e3459SDarrick J. Wong __field(dev_t, dev) 3439254e3459SDarrick J. Wong __field(xfs_ino_t, ino) 3440254e3459SDarrick J. Wong __field(u64, addr) 3441254e3459SDarrick J. Wong __field(loff_t, pos) 3442254e3459SDarrick J. Wong __field(u64, len) 3443254e3459SDarrick J. Wong __field(u64, validity_cookie) 3444254e3459SDarrick J. Wong __field(u64, inodeseq) 3445254e3459SDarrick J. Wong __field(u16, type) 3446254e3459SDarrick J. Wong __field(u16, flags) 3447254e3459SDarrick J. Wong ), 3448254e3459SDarrick J. Wong TP_fast_assign( 3449254e3459SDarrick J. Wong __entry->dev = VFS_I(ip)->i_sb->s_dev; 3450254e3459SDarrick J. Wong __entry->ino = ip->i_ino; 3451254e3459SDarrick J. Wong __entry->addr = iomap->addr; 3452254e3459SDarrick J. Wong __entry->pos = iomap->offset; 3453254e3459SDarrick J. Wong __entry->len = iomap->length; 3454254e3459SDarrick J. Wong __entry->validity_cookie = iomap->validity_cookie; 3455254e3459SDarrick J. Wong __entry->type = iomap->type; 3456254e3459SDarrick J. Wong __entry->flags = iomap->flags; 3457254e3459SDarrick J. Wong __entry->inodeseq = xfs_iomap_inode_sequence(ip, iomap->flags); 3458254e3459SDarrick J. Wong ), 3459254e3459SDarrick 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", 3460254e3459SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3461254e3459SDarrick J. Wong __entry->ino, 3462254e3459SDarrick J. Wong __entry->pos, 3463254e3459SDarrick J. Wong __entry->addr, 3464254e3459SDarrick J. Wong __entry->len, 3465254e3459SDarrick J. Wong __entry->type, 3466254e3459SDarrick J. Wong __entry->flags, 3467254e3459SDarrick J. Wong __entry->validity_cookie, 3468254e3459SDarrick J. Wong __entry->inodeseq) 3469254e3459SDarrick J. Wong ); 3470254e3459SDarrick J. Wong #define DEFINE_IOMAP_INVALID_EVENT(name) \ 3471254e3459SDarrick J. Wong DEFINE_EVENT(xfs_iomap_invalid_class, name, \ 3472254e3459SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, const struct iomap *iomap), \ 3473254e3459SDarrick J. Wong TP_ARGS(ip, iomap)) 3474254e3459SDarrick J. Wong DEFINE_IOMAP_INVALID_EVENT(xfs_iomap_invalid); 3475254e3459SDarrick J. Wong 347653aa1c34SDarrick J. Wong /* refcount/reflink tracepoint definitions */ 347753aa1c34SDarrick J. Wong 347853aa1c34SDarrick J. Wong /* reflink tracepoints */ 347953aa1c34SDarrick J. Wong DEFINE_INODE_EVENT(xfs_reflink_set_inode_flag); 348053aa1c34SDarrick J. Wong DEFINE_INODE_EVENT(xfs_reflink_unset_inode_flag); 348153aa1c34SDarrick J. Wong DEFINE_ITRUNC_EVENT(xfs_reflink_update_inode_size); 348200fd1d56SDarrick J. Wong TRACE_EVENT(xfs_reflink_remap_blocks, 348353aa1c34SDarrick J. Wong TP_PROTO(struct xfs_inode *src, xfs_fileoff_t soffset, 348453aa1c34SDarrick J. Wong xfs_filblks_t len, struct xfs_inode *dest, 348553aa1c34SDarrick J. Wong xfs_fileoff_t doffset), 348653aa1c34SDarrick J. Wong TP_ARGS(src, soffset, len, dest, doffset), 348753aa1c34SDarrick J. Wong TP_STRUCT__entry( 348853aa1c34SDarrick J. Wong __field(dev_t, dev) 348953aa1c34SDarrick J. Wong __field(xfs_ino_t, src_ino) 349053aa1c34SDarrick J. Wong __field(xfs_fileoff_t, src_lblk) 349153aa1c34SDarrick J. Wong __field(xfs_filblks_t, len) 349253aa1c34SDarrick J. Wong __field(xfs_ino_t, dest_ino) 349353aa1c34SDarrick J. Wong __field(xfs_fileoff_t, dest_lblk) 349453aa1c34SDarrick J. Wong ), 349553aa1c34SDarrick J. Wong TP_fast_assign( 349653aa1c34SDarrick J. Wong __entry->dev = VFS_I(src)->i_sb->s_dev; 349753aa1c34SDarrick J. Wong __entry->src_ino = src->i_ino; 349853aa1c34SDarrick J. Wong __entry->src_lblk = soffset; 349953aa1c34SDarrick J. Wong __entry->len = len; 350053aa1c34SDarrick J. Wong __entry->dest_ino = dest->i_ino; 350153aa1c34SDarrick J. Wong __entry->dest_lblk = doffset; 350253aa1c34SDarrick J. Wong ), 35037989acccSDarrick J. Wong TP_printk("dev %d:%d fsbcount 0x%llx " 350449e68c91SDarrick J. Wong "ino 0x%llx fileoff 0x%llx -> ino 0x%llx fileoff 0x%llx", 350553aa1c34SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 350653aa1c34SDarrick J. Wong __entry->len, 350753aa1c34SDarrick J. Wong __entry->src_ino, 350853aa1c34SDarrick J. Wong __entry->src_lblk, 350953aa1c34SDarrick J. Wong __entry->dest_ino, 351053aa1c34SDarrick J. Wong __entry->dest_lblk) 351153aa1c34SDarrick J. Wong ); 351253aa1c34SDarrick J. Wong DEFINE_DOUBLE_IO_EVENT(xfs_reflink_remap_range); 351353aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_range_error); 351453aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_set_inode_flag_error); 351553aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_update_inode_size_error); 351653aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_blocks_error); 351753aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_extent_error); 351800fd1d56SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_remap_extent_src); 351900fd1d56SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_remap_extent_dest); 352053aa1c34SDarrick J. Wong 352153aa1c34SDarrick J. Wong /* dedupe tracepoints */ 352253aa1c34SDarrick J. Wong DEFINE_DOUBLE_IO_EVENT(xfs_reflink_compare_extents); 352353aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_compare_extents_error); 352453aa1c34SDarrick J. Wong 352553aa1c34SDarrick J. Wong /* ioctl tracepoints */ 352653aa1c34SDarrick J. Wong TRACE_EVENT(xfs_ioctl_clone, 352753aa1c34SDarrick J. Wong TP_PROTO(struct inode *src, struct inode *dest), 352853aa1c34SDarrick J. Wong TP_ARGS(src, dest), 352953aa1c34SDarrick J. Wong TP_STRUCT__entry( 353053aa1c34SDarrick J. Wong __field(dev_t, dev) 353153aa1c34SDarrick J. Wong __field(unsigned long, src_ino) 353253aa1c34SDarrick J. Wong __field(loff_t, src_isize) 353353aa1c34SDarrick J. Wong __field(unsigned long, dest_ino) 353453aa1c34SDarrick J. Wong __field(loff_t, dest_isize) 353553aa1c34SDarrick J. Wong ), 353653aa1c34SDarrick J. Wong TP_fast_assign( 353753aa1c34SDarrick J. Wong __entry->dev = src->i_sb->s_dev; 353853aa1c34SDarrick J. Wong __entry->src_ino = src->i_ino; 353953aa1c34SDarrick J. Wong __entry->src_isize = i_size_read(src); 354053aa1c34SDarrick J. Wong __entry->dest_ino = dest->i_ino; 354153aa1c34SDarrick J. Wong __entry->dest_isize = i_size_read(dest); 354253aa1c34SDarrick J. Wong ), 3543c23460ebSDarrick J. Wong TP_printk("dev %d:%d ino 0x%lx isize 0x%llx -> ino 0x%lx isize 0x%llx", 354453aa1c34SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 354553aa1c34SDarrick J. Wong __entry->src_ino, 354653aa1c34SDarrick J. Wong __entry->src_isize, 354753aa1c34SDarrick J. Wong __entry->dest_ino, 354853aa1c34SDarrick J. Wong __entry->dest_isize) 354953aa1c34SDarrick J. Wong ); 355053aa1c34SDarrick J. Wong 355153aa1c34SDarrick J. Wong /* unshare tracepoints */ 355253aa1c34SDarrick J. Wong DEFINE_SIMPLE_IO_EVENT(xfs_reflink_unshare); 355353aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_unshare_error); 355453aa1c34SDarrick J. Wong 355553aa1c34SDarrick J. Wong /* copy on write */ 355653aa1c34SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_trim_around_shared); 3557be51f811SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_found); 3558be51f811SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_enospc); 35595eda4300SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_convert_cow); 356053aa1c34SDarrick J. Wong 356153aa1c34SDarrick J. Wong DEFINE_SIMPLE_IO_EVENT(xfs_reflink_cancel_cow_range); 356253aa1c34SDarrick J. Wong DEFINE_SIMPLE_IO_EVENT(xfs_reflink_end_cow); 3563df2fd88fSDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_remap_from); 3564df2fd88fSDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_cow_remap_to); 356553aa1c34SDarrick J. Wong 356653aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_cancel_cow_range_error); 356753aa1c34SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_reflink_end_cow_error); 356853aa1c34SDarrick J. Wong 356953aa1c34SDarrick J. Wong 357053aa1c34SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_reflink_cancel_cow); 357153aa1c34SDarrick J. Wong 35721f08af52SDarrick J. Wong /* rmap swapext tracepoints */ 35731f08af52SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_swap_extent_rmap_remap); 35741f08af52SDarrick J. Wong DEFINE_INODE_IREC_EVENT(xfs_swap_extent_rmap_remap_piece); 35751f08af52SDarrick J. Wong DEFINE_INODE_ERROR_EVENT(xfs_swap_extent_rmap_error); 35761f08af52SDarrick J. Wong 3577e89c0413SDarrick J. Wong /* fsmap traces */ 3578e89c0413SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_fsmap_class, 3579e89c0413SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, u32 keydev, xfs_agnumber_t agno, 3580159eb69dSDarrick J. Wong const struct xfs_rmap_irec *rmap), 3581e89c0413SDarrick J. Wong TP_ARGS(mp, keydev, agno, rmap), 3582e89c0413SDarrick J. Wong TP_STRUCT__entry( 3583e89c0413SDarrick J. Wong __field(dev_t, dev) 3584e89c0413SDarrick J. Wong __field(dev_t, keydev) 3585e89c0413SDarrick J. Wong __field(xfs_agnumber_t, agno) 3586e89c0413SDarrick J. Wong __field(xfs_fsblock_t, bno) 3587e89c0413SDarrick J. Wong __field(xfs_filblks_t, len) 3588c8ce540dSDarrick J. Wong __field(uint64_t, owner) 3589c8ce540dSDarrick J. Wong __field(uint64_t, offset) 3590e89c0413SDarrick J. Wong __field(unsigned int, flags) 3591e89c0413SDarrick J. Wong ), 3592e89c0413SDarrick J. Wong TP_fast_assign( 3593e89c0413SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3594e89c0413SDarrick J. Wong __entry->keydev = new_decode_dev(keydev); 3595e89c0413SDarrick J. Wong __entry->agno = agno; 3596e89c0413SDarrick J. Wong __entry->bno = rmap->rm_startblock; 3597e89c0413SDarrick J. Wong __entry->len = rmap->rm_blockcount; 3598e89c0413SDarrick J. Wong __entry->owner = rmap->rm_owner; 3599e89c0413SDarrick J. Wong __entry->offset = rmap->rm_offset; 3600e89c0413SDarrick J. Wong __entry->flags = rmap->rm_flags; 3601e89c0413SDarrick J. Wong ), 36027989acccSDarrick 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", 3603e89c0413SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3604e89c0413SDarrick J. Wong MAJOR(__entry->keydev), MINOR(__entry->keydev), 3605e89c0413SDarrick J. Wong __entry->agno, 3606e89c0413SDarrick J. Wong __entry->bno, 3607e89c0413SDarrick J. Wong __entry->len, 3608e89c0413SDarrick J. Wong __entry->owner, 3609e89c0413SDarrick J. Wong __entry->offset, 3610e89c0413SDarrick J. Wong __entry->flags) 3611e89c0413SDarrick J. Wong ) 3612e89c0413SDarrick J. Wong #define DEFINE_FSMAP_EVENT(name) \ 3613e89c0413SDarrick J. Wong DEFINE_EVENT(xfs_fsmap_class, name, \ 3614e89c0413SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, u32 keydev, xfs_agnumber_t agno, \ 3615159eb69dSDarrick J. Wong const struct xfs_rmap_irec *rmap), \ 3616e89c0413SDarrick J. Wong TP_ARGS(mp, keydev, agno, rmap)) 3617e89c0413SDarrick J. Wong DEFINE_FSMAP_EVENT(xfs_fsmap_low_key); 3618e89c0413SDarrick J. Wong DEFINE_FSMAP_EVENT(xfs_fsmap_high_key); 3619e89c0413SDarrick J. Wong DEFINE_FSMAP_EVENT(xfs_fsmap_mapping); 3620e89c0413SDarrick J. Wong 3621f045dd00SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_fsmap_linear_class, 3622f045dd00SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, u32 keydev, uint64_t bno), 3623f045dd00SDarrick J. Wong TP_ARGS(mp, keydev, bno), 3624f045dd00SDarrick J. Wong TP_STRUCT__entry( 3625f045dd00SDarrick J. Wong __field(dev_t, dev) 3626f045dd00SDarrick J. Wong __field(dev_t, keydev) 3627f045dd00SDarrick J. Wong __field(xfs_fsblock_t, bno) 3628f045dd00SDarrick J. Wong ), 3629f045dd00SDarrick J. Wong TP_fast_assign( 3630f045dd00SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3631f045dd00SDarrick J. Wong __entry->keydev = new_decode_dev(keydev); 3632f045dd00SDarrick J. Wong __entry->bno = bno; 3633f045dd00SDarrick J. Wong ), 3634f045dd00SDarrick J. Wong TP_printk("dev %d:%d keydev %d:%d bno 0x%llx", 3635f045dd00SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3636f045dd00SDarrick J. Wong MAJOR(__entry->keydev), MINOR(__entry->keydev), 3637f045dd00SDarrick J. Wong __entry->bno) 3638f045dd00SDarrick J. Wong ) 3639f045dd00SDarrick J. Wong #define DEFINE_FSMAP_LINEAR_EVENT(name) \ 3640f045dd00SDarrick J. Wong DEFINE_EVENT(xfs_fsmap_linear_class, name, \ 3641f045dd00SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, u32 keydev, uint64_t bno), \ 3642f045dd00SDarrick J. Wong TP_ARGS(mp, keydev, bno)) 3643f045dd00SDarrick J. Wong DEFINE_FSMAP_LINEAR_EVENT(xfs_fsmap_low_key_linear); 3644f045dd00SDarrick J. Wong DEFINE_FSMAP_LINEAR_EVENT(xfs_fsmap_high_key_linear); 3645f045dd00SDarrick J. Wong 3646e89c0413SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_getfsmap_class, 3647e89c0413SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_fsmap *fsmap), 3648e89c0413SDarrick J. Wong TP_ARGS(mp, fsmap), 3649e89c0413SDarrick J. Wong TP_STRUCT__entry( 3650e89c0413SDarrick J. Wong __field(dev_t, dev) 3651e89c0413SDarrick J. Wong __field(dev_t, keydev) 3652e89c0413SDarrick J. Wong __field(xfs_daddr_t, block) 3653e89c0413SDarrick J. Wong __field(xfs_daddr_t, len) 3654c8ce540dSDarrick J. Wong __field(uint64_t, owner) 3655c8ce540dSDarrick J. Wong __field(uint64_t, offset) 3656c8ce540dSDarrick J. Wong __field(uint64_t, flags) 3657e89c0413SDarrick J. Wong ), 3658e89c0413SDarrick J. Wong TP_fast_assign( 3659e89c0413SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3660e89c0413SDarrick J. Wong __entry->keydev = new_decode_dev(fsmap->fmr_device); 3661e89c0413SDarrick J. Wong __entry->block = fsmap->fmr_physical; 3662e89c0413SDarrick J. Wong __entry->len = fsmap->fmr_length; 3663e89c0413SDarrick J. Wong __entry->owner = fsmap->fmr_owner; 3664e89c0413SDarrick J. Wong __entry->offset = fsmap->fmr_offset; 3665e89c0413SDarrick J. Wong __entry->flags = fsmap->fmr_flags; 3666e89c0413SDarrick J. Wong ), 36677989acccSDarrick 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", 3668e89c0413SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3669e89c0413SDarrick J. Wong MAJOR(__entry->keydev), MINOR(__entry->keydev), 3670e89c0413SDarrick J. Wong __entry->block, 3671e89c0413SDarrick J. Wong __entry->len, 3672e89c0413SDarrick J. Wong __entry->owner, 3673e89c0413SDarrick J. Wong __entry->offset, 3674e89c0413SDarrick J. Wong __entry->flags) 3675e89c0413SDarrick J. Wong ) 3676e89c0413SDarrick J. Wong #define DEFINE_GETFSMAP_EVENT(name) \ 3677e89c0413SDarrick J. Wong DEFINE_EVENT(xfs_getfsmap_class, name, \ 3678e89c0413SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_fsmap *fsmap), \ 3679e89c0413SDarrick J. Wong TP_ARGS(mp, fsmap)) 3680e89c0413SDarrick J. Wong DEFINE_GETFSMAP_EVENT(xfs_getfsmap_low_key); 3681e89c0413SDarrick J. Wong DEFINE_GETFSMAP_EVENT(xfs_getfsmap_high_key); 3682e89c0413SDarrick J. Wong DEFINE_GETFSMAP_EVENT(xfs_getfsmap_mapping); 3683e89c0413SDarrick J. Wong 368452d8ea4fSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_trans_resv_class, 3685b872af2cSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, unsigned int type, 3686b872af2cSDarrick J. Wong struct xfs_trans_res *res), 3687b872af2cSDarrick J. Wong TP_ARGS(mp, type, res), 3688b872af2cSDarrick J. Wong TP_STRUCT__entry( 3689b872af2cSDarrick J. Wong __field(dev_t, dev) 3690b872af2cSDarrick J. Wong __field(int, type) 3691b872af2cSDarrick J. Wong __field(uint, logres) 3692b872af2cSDarrick J. Wong __field(int, logcount) 3693b872af2cSDarrick J. Wong __field(int, logflags) 3694b872af2cSDarrick J. Wong ), 3695b872af2cSDarrick J. Wong TP_fast_assign( 3696b872af2cSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3697b872af2cSDarrick J. Wong __entry->type = type; 3698b872af2cSDarrick J. Wong __entry->logres = res->tr_logres; 3699b872af2cSDarrick J. Wong __entry->logcount = res->tr_logcount; 3700b872af2cSDarrick J. Wong __entry->logflags = res->tr_logflags; 3701b872af2cSDarrick J. Wong ), 3702b872af2cSDarrick J. Wong TP_printk("dev %d:%d type %d logres %u logcount %d flags 0x%x", 3703b872af2cSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3704b872af2cSDarrick J. Wong __entry->type, 3705b872af2cSDarrick J. Wong __entry->logres, 3706b872af2cSDarrick J. Wong __entry->logcount, 3707b872af2cSDarrick J. Wong __entry->logflags) 370852d8ea4fSDarrick J. Wong ) 370952d8ea4fSDarrick J. Wong 371052d8ea4fSDarrick J. Wong #define DEFINE_TRANS_RESV_EVENT(name) \ 371152d8ea4fSDarrick J. Wong DEFINE_EVENT(xfs_trans_resv_class, name, \ 371252d8ea4fSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, unsigned int type, \ 371352d8ea4fSDarrick J. Wong struct xfs_trans_res *res), \ 371452d8ea4fSDarrick J. Wong TP_ARGS(mp, type, res)) 371552d8ea4fSDarrick J. Wong DEFINE_TRANS_RESV_EVENT(xfs_trans_resv_calc); 371652d8ea4fSDarrick J. Wong DEFINE_TRANS_RESV_EVENT(xfs_trans_resv_calc_minlogsize); 3717b872af2cSDarrick J. Wong 3718918247ceSDarrick J. Wong TRACE_EVENT(xfs_log_get_max_trans_res, 3719918247ceSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, const struct xfs_trans_res *res), 3720918247ceSDarrick J. Wong TP_ARGS(mp, res), 3721918247ceSDarrick J. Wong TP_STRUCT__entry( 3722918247ceSDarrick J. Wong __field(dev_t, dev) 3723918247ceSDarrick J. Wong __field(uint, logres) 3724918247ceSDarrick J. Wong __field(int, logcount) 3725918247ceSDarrick J. Wong ), 3726918247ceSDarrick J. Wong TP_fast_assign( 3727918247ceSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3728918247ceSDarrick J. Wong __entry->logres = res->tr_logres; 3729918247ceSDarrick J. Wong __entry->logcount = res->tr_logcount; 3730918247ceSDarrick J. Wong ), 3731918247ceSDarrick J. Wong TP_printk("dev %d:%d logres %u logcount %d", 3732918247ceSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3733918247ceSDarrick J. Wong __entry->logres, 3734918247ceSDarrick J. Wong __entry->logcount) 3735c59d87c4SChristoph Hellwig ); 3736c59d87c4SChristoph Hellwig 3737ba18781bSDave Chinner DECLARE_EVENT_CLASS(xfs_trans_class, 3738ba18781bSDave Chinner TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip), 3739ba18781bSDave Chinner TP_ARGS(tp, caller_ip), 3740ba18781bSDave Chinner TP_STRUCT__entry( 3741ba18781bSDave Chinner __field(dev_t, dev) 3742ba18781bSDave Chinner __field(uint32_t, tid) 3743ba18781bSDave Chinner __field(uint32_t, flags) 3744ba18781bSDave Chinner __field(unsigned long, caller_ip) 3745ba18781bSDave Chinner ), 3746ba18781bSDave Chinner TP_fast_assign( 3747ba18781bSDave Chinner __entry->dev = tp->t_mountp->m_super->s_dev; 3748ba18781bSDave Chinner __entry->tid = 0; 3749ba18781bSDave Chinner if (tp->t_ticket) 3750ba18781bSDave Chinner __entry->tid = tp->t_ticket->t_tid; 3751ba18781bSDave Chinner __entry->flags = tp->t_flags; 3752ba18781bSDave Chinner __entry->caller_ip = caller_ip; 3753ba18781bSDave Chinner ), 3754ba18781bSDave Chinner TP_printk("dev %d:%d trans %x flags 0x%x caller %pS", 3755ba18781bSDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 3756ba18781bSDave Chinner __entry->tid, 3757ba18781bSDave Chinner __entry->flags, 3758ba18781bSDave Chinner (char *)__entry->caller_ip) 3759ba18781bSDave Chinner ) 3760ba18781bSDave Chinner 3761ba18781bSDave Chinner #define DEFINE_TRANS_EVENT(name) \ 3762ba18781bSDave Chinner DEFINE_EVENT(xfs_trans_class, name, \ 3763ba18781bSDave Chinner TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip), \ 3764ba18781bSDave Chinner TP_ARGS(tp, caller_ip)) 3765ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_alloc); 3766ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_cancel); 3767ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_commit); 3768ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_dup); 3769ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_free); 3770ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_roll); 3771ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_add_item); 3772195cd83dSChristoph Hellwig DEFINE_TRANS_EVENT(xfs_trans_commit_items); 3773ba18781bSDave Chinner DEFINE_TRANS_EVENT(xfs_trans_free_items); 3774ba18781bSDave Chinner 37759a4a5118SDarrick J. Wong TRACE_EVENT(xfs_iunlink_update_bucket, 37769a4a5118SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, unsigned int bucket, 37779a4a5118SDarrick J. Wong xfs_agino_t old_ptr, xfs_agino_t new_ptr), 37789a4a5118SDarrick J. Wong TP_ARGS(mp, agno, bucket, old_ptr, new_ptr), 37799a4a5118SDarrick J. Wong TP_STRUCT__entry( 37809a4a5118SDarrick J. Wong __field(dev_t, dev) 37819a4a5118SDarrick J. Wong __field(xfs_agnumber_t, agno) 37829a4a5118SDarrick J. Wong __field(unsigned int, bucket) 37839a4a5118SDarrick J. Wong __field(xfs_agino_t, old_ptr) 37849a4a5118SDarrick J. Wong __field(xfs_agino_t, new_ptr) 37859a4a5118SDarrick J. Wong ), 37869a4a5118SDarrick J. Wong TP_fast_assign( 37879a4a5118SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 37889a4a5118SDarrick J. Wong __entry->agno = agno; 37899a4a5118SDarrick J. Wong __entry->bucket = bucket; 37909a4a5118SDarrick J. Wong __entry->old_ptr = old_ptr; 37919a4a5118SDarrick J. Wong __entry->new_ptr = new_ptr; 37929a4a5118SDarrick J. Wong ), 37939febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x bucket %u old 0x%x new 0x%x", 37949a4a5118SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 37959a4a5118SDarrick J. Wong __entry->agno, 37969a4a5118SDarrick J. Wong __entry->bucket, 37979a4a5118SDarrick J. Wong __entry->old_ptr, 37989a4a5118SDarrick J. Wong __entry->new_ptr) 37999a4a5118SDarrick J. Wong ); 38009a4a5118SDarrick J. Wong 3801f2fc16a3SDarrick J. Wong TRACE_EVENT(xfs_iunlink_update_dinode, 3802f2fc16a3SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t agino, 3803f2fc16a3SDarrick J. Wong xfs_agino_t old_ptr, xfs_agino_t new_ptr), 3804f2fc16a3SDarrick J. Wong TP_ARGS(mp, agno, agino, old_ptr, new_ptr), 3805f2fc16a3SDarrick J. Wong TP_STRUCT__entry( 3806f2fc16a3SDarrick J. Wong __field(dev_t, dev) 3807f2fc16a3SDarrick J. Wong __field(xfs_agnumber_t, agno) 3808f2fc16a3SDarrick J. Wong __field(xfs_agino_t, agino) 3809f2fc16a3SDarrick J. Wong __field(xfs_agino_t, old_ptr) 3810f2fc16a3SDarrick J. Wong __field(xfs_agino_t, new_ptr) 3811f2fc16a3SDarrick J. Wong ), 3812f2fc16a3SDarrick J. Wong TP_fast_assign( 3813f2fc16a3SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3814f2fc16a3SDarrick J. Wong __entry->agno = agno; 3815f2fc16a3SDarrick J. Wong __entry->agino = agino; 3816f2fc16a3SDarrick J. Wong __entry->old_ptr = old_ptr; 3817f2fc16a3SDarrick J. Wong __entry->new_ptr = new_ptr; 3818f2fc16a3SDarrick J. Wong ), 38199febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agino 0x%x old 0x%x new 0x%x", 3820f2fc16a3SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3821f2fc16a3SDarrick J. Wong __entry->agno, 3822f2fc16a3SDarrick J. Wong __entry->agino, 3823f2fc16a3SDarrick J. Wong __entry->old_ptr, 3824f2fc16a3SDarrick J. Wong __entry->new_ptr) 3825f2fc16a3SDarrick J. Wong ); 3826f2fc16a3SDarrick J. Wong 3827*68b957f6SDarrick J. Wong TRACE_EVENT(xfs_iunlink_reload_next, 3828*68b957f6SDarrick J. Wong TP_PROTO(struct xfs_inode *ip), 3829*68b957f6SDarrick J. Wong TP_ARGS(ip), 3830*68b957f6SDarrick J. Wong TP_STRUCT__entry( 3831*68b957f6SDarrick J. Wong __field(dev_t, dev) 3832*68b957f6SDarrick J. Wong __field(xfs_agnumber_t, agno) 3833*68b957f6SDarrick J. Wong __field(xfs_agino_t, agino) 3834*68b957f6SDarrick J. Wong __field(xfs_agino_t, prev_agino) 3835*68b957f6SDarrick J. Wong __field(xfs_agino_t, next_agino) 3836*68b957f6SDarrick J. Wong ), 3837*68b957f6SDarrick J. Wong TP_fast_assign( 3838*68b957f6SDarrick J. Wong __entry->dev = ip->i_mount->m_super->s_dev; 3839*68b957f6SDarrick J. Wong __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino); 3840*68b957f6SDarrick J. Wong __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino); 3841*68b957f6SDarrick J. Wong __entry->prev_agino = ip->i_prev_unlinked; 3842*68b957f6SDarrick J. Wong __entry->next_agino = ip->i_next_unlinked; 3843*68b957f6SDarrick J. Wong ), 3844*68b957f6SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agino 0x%x prev_unlinked 0x%x next_unlinked 0x%x", 3845*68b957f6SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3846*68b957f6SDarrick J. Wong __entry->agno, 3847*68b957f6SDarrick J. Wong __entry->agino, 3848*68b957f6SDarrick J. Wong __entry->prev_agino, 3849*68b957f6SDarrick J. Wong __entry->next_agino) 3850*68b957f6SDarrick J. Wong ); 3851*68b957f6SDarrick J. Wong 38524664c66cSDarrick J. Wong TRACE_EVENT(xfs_inode_reload_unlinked_bucket, 38534664c66cSDarrick J. Wong TP_PROTO(struct xfs_inode *ip), 38544664c66cSDarrick J. Wong TP_ARGS(ip), 38554664c66cSDarrick J. Wong TP_STRUCT__entry( 38564664c66cSDarrick J. Wong __field(dev_t, dev) 38574664c66cSDarrick J. Wong __field(xfs_agnumber_t, agno) 38584664c66cSDarrick J. Wong __field(xfs_agino_t, agino) 38594664c66cSDarrick J. Wong ), 38604664c66cSDarrick J. Wong TP_fast_assign( 38614664c66cSDarrick J. Wong __entry->dev = ip->i_mount->m_super->s_dev; 38624664c66cSDarrick J. Wong __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino); 38634664c66cSDarrick J. Wong __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino); 38644664c66cSDarrick J. Wong ), 38659febf39dSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agino 0x%x bucket %u", 38664664c66cSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 38674664c66cSDarrick J. Wong __entry->agno, 38684664c66cSDarrick J. Wong __entry->agino, 38694664c66cSDarrick J. Wong __entry->agino % XFS_AGI_UNLINKED_BUCKETS) 38704664c66cSDarrick J. Wong ); 38714664c66cSDarrick J. Wong 38724664c66cSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_ag_inode_class, 38734664c66cSDarrick J. Wong TP_PROTO(struct xfs_inode *ip), 38744664c66cSDarrick J. Wong TP_ARGS(ip), 38754664c66cSDarrick J. Wong TP_STRUCT__entry( 38764664c66cSDarrick J. Wong __field(dev_t, dev) 38776772c1f1SDarrick J. Wong __field(xfs_agnumber_t, agno) 38786772c1f1SDarrick J. Wong __field(xfs_agino_t, agino) 38796772c1f1SDarrick J. Wong ), 38806772c1f1SDarrick J. Wong TP_fast_assign( 38816772c1f1SDarrick J. Wong __entry->dev = VFS_I(ip)->i_sb->s_dev; 38826772c1f1SDarrick J. Wong __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino); 38836772c1f1SDarrick J. Wong __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino); 38846772c1f1SDarrick J. Wong ), 38856772c1f1SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x agino 0x%x", 38866772c1f1SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 38876772c1f1SDarrick J. Wong __entry->agno, __entry->agino) 38886772c1f1SDarrick J. Wong ) 38896772c1f1SDarrick J. Wong 38906772c1f1SDarrick J. Wong #define DEFINE_AGINODE_EVENT(name) \ 38916772c1f1SDarrick J. Wong DEFINE_EVENT(xfs_ag_inode_class, name, \ 38926772c1f1SDarrick J. Wong TP_PROTO(struct xfs_inode *ip), \ 38936772c1f1SDarrick J. Wong TP_ARGS(ip)) 38946772c1f1SDarrick J. Wong DEFINE_AGINODE_EVENT(xfs_iunlink); 38956772c1f1SDarrick J. Wong DEFINE_AGINODE_EVENT(xfs_iunlink_remove); 38966772c1f1SDarrick J. Wong 38976772c1f1SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_fs_corrupt_class, 3898519841c2SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, unsigned int flags), 38996772c1f1SDarrick J. Wong TP_ARGS(mp, flags), 39006772c1f1SDarrick J. Wong TP_STRUCT__entry( 3901519841c2SDarrick J. Wong __field(dev_t, dev) 39026772c1f1SDarrick J. Wong __field(unsigned int, flags) 39036772c1f1SDarrick J. Wong ), 39046772c1f1SDarrick J. Wong TP_fast_assign( 39056772c1f1SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 39066772c1f1SDarrick J. Wong __entry->flags = flags; 39076772c1f1SDarrick J. Wong ), 39086772c1f1SDarrick J. Wong TP_printk("dev %d:%d flags 0x%x", 39096772c1f1SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 39106772c1f1SDarrick J. Wong __entry->flags) 39116772c1f1SDarrick J. Wong ); 39126772c1f1SDarrick J. Wong #define DEFINE_FS_CORRUPT_EVENT(name) \ 39136772c1f1SDarrick J. Wong DEFINE_EVENT(xfs_fs_corrupt_class, name, \ 39146772c1f1SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, unsigned int flags), \ 39156772c1f1SDarrick J. Wong TP_ARGS(mp, flags)) 39169febf39dSDarrick J. Wong DEFINE_FS_CORRUPT_EVENT(xfs_fs_mark_sick); 39176772c1f1SDarrick J. Wong DEFINE_FS_CORRUPT_EVENT(xfs_fs_mark_healthy); 39186772c1f1SDarrick J. Wong DEFINE_FS_CORRUPT_EVENT(xfs_fs_unfixed_corruption); 39196772c1f1SDarrick J. Wong DEFINE_FS_CORRUPT_EVENT(xfs_rt_mark_sick); 39206772c1f1SDarrick J. Wong DEFINE_FS_CORRUPT_EVENT(xfs_rt_mark_healthy); 39216772c1f1SDarrick J. Wong DEFINE_FS_CORRUPT_EVENT(xfs_rt_unfixed_corruption); 39226772c1f1SDarrick J. Wong 39236772c1f1SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_ag_corrupt_class, 39246772c1f1SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, unsigned int flags), 39256772c1f1SDarrick J. Wong TP_ARGS(mp, agno, flags), 39266772c1f1SDarrick J. Wong TP_STRUCT__entry( 3927519841c2SDarrick J. Wong __field(dev_t, dev) 39286772c1f1SDarrick J. Wong __field(xfs_agnumber_t, agno) 39296772c1f1SDarrick J. Wong __field(unsigned int, flags) 39306772c1f1SDarrick J. Wong ), 39316772c1f1SDarrick J. Wong TP_fast_assign( 39326772c1f1SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 39336772c1f1SDarrick J. Wong __entry->agno = agno; 39346772c1f1SDarrick J. Wong __entry->flags = flags; 39356772c1f1SDarrick J. Wong ), 39366772c1f1SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x flags 0x%x", 39376772c1f1SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 39386772c1f1SDarrick J. Wong __entry->agno, __entry->flags) 39396772c1f1SDarrick J. Wong ); 39406772c1f1SDarrick J. Wong #define DEFINE_AG_CORRUPT_EVENT(name) \ 39416772c1f1SDarrick J. Wong DEFINE_EVENT(xfs_ag_corrupt_class, name, \ 39426772c1f1SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 39436772c1f1SDarrick J. Wong unsigned int flags), \ 39446772c1f1SDarrick J. Wong TP_ARGS(mp, agno, flags)) 39456772c1f1SDarrick J. Wong DEFINE_AG_CORRUPT_EVENT(xfs_ag_mark_sick); 39466772c1f1SDarrick J. Wong DEFINE_AG_CORRUPT_EVENT(xfs_ag_mark_healthy); 39476772c1f1SDarrick J. Wong DEFINE_AG_CORRUPT_EVENT(xfs_ag_unfixed_corruption); 39486772c1f1SDarrick J. Wong 39496772c1f1SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_inode_corrupt_class, 39506772c1f1SDarrick J. Wong TP_PROTO(struct xfs_inode *ip, unsigned int flags), 39516772c1f1SDarrick J. Wong TP_ARGS(ip, flags), 39526772c1f1SDarrick J. Wong TP_STRUCT__entry( 3953a211432cSDarrick J. Wong __field(dev_t, dev) 3954a211432cSDarrick J. Wong __field(xfs_ino_t, ino) 3955a211432cSDarrick J. Wong __field(unsigned int, flags) 3956a211432cSDarrick J. Wong ), 3957a211432cSDarrick J. Wong TP_fast_assign( 3958a211432cSDarrick J. Wong __entry->dev = ip->i_mount->m_super->s_dev; 3959a211432cSDarrick J. Wong __entry->ino = ip->i_ino; 3960a211432cSDarrick J. Wong __entry->flags = flags; 3961a211432cSDarrick J. Wong ), 3962a211432cSDarrick J. Wong TP_printk("dev %d:%d ino 0x%llx flags 0x%x", 3963a211432cSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 3964a211432cSDarrick J. Wong __entry->ino, __entry->flags) 3965a211432cSDarrick J. Wong ); 3966a211432cSDarrick J. Wong #define DEFINE_INODE_CORRUPT_EVENT(name) \ 39679febf39dSDarrick J. Wong DEFINE_EVENT(xfs_inode_corrupt_class, name, \ 3968a211432cSDarrick J. Wong TP_PROTO(struct xfs_inode *ip, unsigned int flags), \ 3969a211432cSDarrick J. Wong TP_ARGS(ip, flags)) 3970a211432cSDarrick J. Wong DEFINE_INODE_CORRUPT_EVENT(xfs_inode_mark_sick); 3971a211432cSDarrick J. Wong DEFINE_INODE_CORRUPT_EVENT(xfs_inode_mark_healthy); 3972a211432cSDarrick J. Wong 3973a211432cSDarrick J. Wong TRACE_EVENT(xfs_iwalk_ag, 3974a211432cSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 3975a211432cSDarrick J. Wong xfs_agino_t startino), 3976a211432cSDarrick J. Wong TP_ARGS(mp, agno, startino), 3977a211432cSDarrick J. Wong TP_STRUCT__entry( 3978a211432cSDarrick J. Wong __field(dev_t, dev) 3979a211432cSDarrick J. Wong __field(xfs_agnumber_t, agno) 3980a211432cSDarrick J. Wong __field(xfs_agino_t, startino) 3981a211432cSDarrick J. Wong ), 3982a211432cSDarrick J. Wong TP_fast_assign( 3983a211432cSDarrick J. Wong __entry->dev = mp->m_super->s_dev; 3984a211432cSDarrick J. Wong __entry->agno = agno; 3985a211432cSDarrick J. Wong __entry->startino = startino; 3986a211432cSDarrick J. Wong ), 3987a211432cSDarrick J. Wong TP_printk("dev %d:%d agno 0x%x startino 0x%x", 39889febf39dSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), __entry->agno, 3989a211432cSDarrick J. Wong __entry->startino) 3990a211432cSDarrick J. Wong ) 3991a211432cSDarrick J. Wong 3992a211432cSDarrick J. Wong TRACE_EVENT(xfs_iwalk_ag_rec, 399340786717SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 399440786717SDarrick J. Wong struct xfs_inobt_rec_incore *irec), 399540786717SDarrick J. Wong TP_ARGS(mp, agno, irec), 399640786717SDarrick J. Wong TP_STRUCT__entry( 399740786717SDarrick J. Wong __field(dev_t, dev) 399840786717SDarrick J. Wong __field(xfs_agnumber_t, agno) 399940786717SDarrick J. Wong __field(xfs_agino_t, startino) 400040786717SDarrick J. Wong __field(uint64_t, freemask) 400140786717SDarrick J. Wong ), 400240786717SDarrick J. Wong TP_fast_assign( 400340786717SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 400440786717SDarrick J. Wong __entry->agno = agno; 400540786717SDarrick J. Wong __entry->startino = irec->ir_startino; 400640786717SDarrick J. Wong __entry->freemask = irec->ir_free; 400740786717SDarrick J. Wong ), 400840786717SDarrick J. Wong TP_printk("dev %d:%d agno 0x%x startino 0x%x freemask 0x%llx", 400940786717SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), __entry->agno, 401040786717SDarrick J. Wong __entry->startino, __entry->freemask) 40110ad95687SDave Chinner ) 40120ad95687SDave Chinner 40130ad95687SDave Chinner TRACE_EVENT(xfs_pwork_init, 40140ad95687SDave Chinner TP_PROTO(struct xfs_mount *mp, unsigned int nr_threads, pid_t pid), 40150ad95687SDave Chinner TP_ARGS(mp, nr_threads, pid), 40160ad95687SDave Chinner TP_STRUCT__entry( 40170ad95687SDave Chinner __field(dev_t, dev) 40180ad95687SDave Chinner __field(unsigned int, nr_threads) 40190ad95687SDave Chinner __field(pid_t, pid) 40200ad95687SDave Chinner ), 40210ad95687SDave Chinner TP_fast_assign( 40220ad95687SDave Chinner __entry->dev = mp->m_super->s_dev; 40230ad95687SDave Chinner __entry->nr_threads = nr_threads; 40240ad95687SDave Chinner __entry->pid = pid; 40250ad95687SDave Chinner ), 40260ad95687SDave Chinner TP_printk("dev %d:%d nr_threads %u pid %u", 40270ad95687SDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 40280ad95687SDave Chinner __entry->nr_threads, __entry->pid) 40290ad95687SDave Chinner ) 40300ad95687SDave Chinner 40310ad95687SDave Chinner DECLARE_EVENT_CLASS(xfs_kmem_class, 40320ad95687SDave Chinner TP_PROTO(ssize_t size, int flags, unsigned long caller_ip), 40330ad95687SDave Chinner TP_ARGS(size, flags, caller_ip), 40340ad95687SDave Chinner TP_STRUCT__entry( 40350ad95687SDave Chinner __field(ssize_t, size) 403613eaec4bSDarrick J. Wong __field(int, flags) 403713eaec4bSDarrick J. Wong __field(unsigned long, caller_ip) 403813eaec4bSDarrick J. Wong ), 403913eaec4bSDarrick J. Wong TP_fast_assign( 404013eaec4bSDarrick J. Wong __entry->size = size; 404113eaec4bSDarrick J. Wong __entry->flags = flags; 404213eaec4bSDarrick J. Wong __entry->caller_ip = caller_ip; 404313eaec4bSDarrick J. Wong ), 404413eaec4bSDarrick J. Wong TP_printk("size %zd flags 0x%x caller %pS", 404513eaec4bSDarrick J. Wong __entry->size, 404613eaec4bSDarrick J. Wong __entry->flags, 404713eaec4bSDarrick J. Wong (char *)__entry->caller_ip) 404813eaec4bSDarrick J. Wong ) 404913eaec4bSDarrick J. Wong 405013eaec4bSDarrick J. Wong #define DEFINE_KMEM_EVENT(name) \ 4051af6265a0SDarrick J. Wong DEFINE_EVENT(xfs_kmem_class, name, \ 405213eaec4bSDarrick J. Wong TP_PROTO(ssize_t size, int flags, unsigned long caller_ip), \ 405313eaec4bSDarrick J. Wong TP_ARGS(size, flags, caller_ip)) 405413eaec4bSDarrick J. Wong DEFINE_KMEM_EVENT(kmem_alloc); 405513eaec4bSDarrick J. Wong 405613eaec4bSDarrick J. Wong TRACE_EVENT(xfs_check_new_dalign, 4057e06536a6SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, int new_dalign, xfs_ino_t calc_rootino), 4058e06536a6SDarrick J. Wong TP_ARGS(mp, new_dalign, calc_rootino), 4059e06536a6SDarrick J. Wong TP_STRUCT__entry( 4060e06536a6SDarrick J. Wong __field(dev_t, dev) 4061e06536a6SDarrick J. Wong __field(int, new_dalign) 4062e06536a6SDarrick J. Wong __field(xfs_ino_t, sb_rootino) 4063e06536a6SDarrick J. Wong __field(xfs_ino_t, calc_rootino) 4064e06536a6SDarrick J. Wong ), 4065e06536a6SDarrick J. Wong TP_fast_assign( 4066e06536a6SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 4067e06536a6SDarrick J. Wong __entry->new_dalign = new_dalign; 4068e06536a6SDarrick J. Wong __entry->sb_rootino = mp->m_sb.sb_rootino; 4069e06536a6SDarrick J. Wong __entry->calc_rootino = calc_rootino; 4070e06536a6SDarrick J. Wong ), 407150f02fe3SDave Chinner TP_printk("dev %d:%d new_dalign %d sb_rootino 0x%llx calc_rootino 0x%llx", 4072e06536a6SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 4073e06536a6SDarrick J. Wong __entry->new_dalign, __entry->sb_rootino, 4074e06536a6SDarrick J. Wong __entry->calc_rootino) 4075e06536a6SDarrick J. Wong ) 40769febf39dSDarrick J. Wong 4077e06536a6SDarrick J. Wong TRACE_EVENT(xfs_btree_commit_afakeroot, 4078e06536a6SDarrick J. Wong TP_PROTO(struct xfs_btree_cur *cur), 4079e06536a6SDarrick J. Wong TP_ARGS(cur), 4080e06536a6SDarrick J. Wong TP_STRUCT__entry( 4081e06536a6SDarrick J. Wong __field(dev_t, dev) 4082e06536a6SDarrick J. Wong __field(xfs_btnum_t, btnum) 4083e06536a6SDarrick J. Wong __field(xfs_agnumber_t, agno) 4084e06536a6SDarrick J. Wong __field(xfs_agblock_t, agbno) 4085349e1c03SDarrick J. Wong __field(unsigned int, levels) 4086349e1c03SDarrick J. Wong __field(unsigned int, blocks) 4087349e1c03SDarrick J. Wong ), 4088349e1c03SDarrick J. Wong TP_fast_assign( 4089349e1c03SDarrick J. Wong __entry->dev = cur->bc_mp->m_super->s_dev; 4090349e1c03SDarrick J. Wong __entry->btnum = cur->bc_btnum; 4091349e1c03SDarrick J. Wong __entry->agno = cur->bc_ag.pag->pag_agno; 4092349e1c03SDarrick J. Wong __entry->agbno = cur->bc_ag.afake->af_root; 4093349e1c03SDarrick J. Wong __entry->levels = cur->bc_ag.afake->af_levels; 4094349e1c03SDarrick J. Wong __entry->blocks = cur->bc_ag.afake->af_blocks; 4095349e1c03SDarrick J. Wong ), 4096349e1c03SDarrick J. Wong TP_printk("dev %d:%d btree %s agno 0x%x levels %u blocks %u root %u", 4097349e1c03SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 4098349e1c03SDarrick J. Wong __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 4099349e1c03SDarrick J. Wong __entry->agno, 4100349e1c03SDarrick J. Wong __entry->levels, 4101349e1c03SDarrick J. Wong __entry->blocks, 4102349e1c03SDarrick J. Wong __entry->agbno) 4103349e1c03SDarrick J. Wong ) 4104349e1c03SDarrick J. Wong 4105349e1c03SDarrick J. Wong TRACE_EVENT(xfs_btree_commit_ifakeroot, 4106349e1c03SDarrick J. Wong TP_PROTO(struct xfs_btree_cur *cur), 4107349e1c03SDarrick J. Wong TP_ARGS(cur), 41089febf39dSDarrick J. Wong TP_STRUCT__entry( 4109349e1c03SDarrick J. Wong __field(dev_t, dev) 4110349e1c03SDarrick J. Wong __field(xfs_btnum_t, btnum) 4111349e1c03SDarrick J. Wong __field(xfs_agnumber_t, agno) 4112349e1c03SDarrick J. Wong __field(xfs_agino_t, agino) 4113f93f85f7SDarrick J. Wong __field(unsigned int, levels) 4114349e1c03SDarrick J. Wong __field(unsigned int, blocks) 4115349e1c03SDarrick J. Wong __field(int, whichfork) 4116349e1c03SDarrick J. Wong ), 4117349e1c03SDarrick J. Wong TP_fast_assign( 411860e3d707SDarrick J. Wong __entry->dev = cur->bc_mp->m_super->s_dev; 411960e3d707SDarrick J. Wong __entry->btnum = cur->bc_btnum; 412060e3d707SDarrick J. Wong __entry->agno = XFS_INO_TO_AGNO(cur->bc_mp, 412160e3d707SDarrick J. Wong cur->bc_ino.ip->i_ino); 412260e3d707SDarrick J. Wong __entry->agino = XFS_INO_TO_AGINO(cur->bc_mp, 412360e3d707SDarrick J. Wong cur->bc_ino.ip->i_ino); 412460e3d707SDarrick J. Wong __entry->levels = cur->bc_ino.ifake->if_levels; 412560e3d707SDarrick J. Wong __entry->blocks = cur->bc_ino.ifake->if_blocks; 412660e3d707SDarrick J. Wong __entry->whichfork = cur->bc_ino.whichfork; 412760e3d707SDarrick J. Wong ), 412860e3d707SDarrick J. Wong TP_printk("dev %d:%d btree %s agno 0x%x agino 0x%x whichfork %s levels %u blocks %u", 412960e3d707SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 413060e3d707SDarrick J. Wong __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 413160e3d707SDarrick J. Wong __entry->agno, 413260e3d707SDarrick J. Wong __entry->agino, 413360e3d707SDarrick J. Wong __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS), 413460e3d707SDarrick J. Wong __entry->levels, 413560e3d707SDarrick J. Wong __entry->blocks) 413660e3d707SDarrick J. Wong ) 413760e3d707SDarrick J. Wong 413860e3d707SDarrick J. Wong TRACE_EVENT(xfs_btree_bload_level_geometry, 413960e3d707SDarrick J. Wong TP_PROTO(struct xfs_btree_cur *cur, unsigned int level, 414060e3d707SDarrick J. Wong uint64_t nr_this_level, unsigned int nr_per_block, 414160e3d707SDarrick J. Wong unsigned int desired_npb, uint64_t blocks, 414260e3d707SDarrick J. Wong uint64_t blocks_with_extra), 414360e3d707SDarrick J. Wong TP_ARGS(cur, level, nr_this_level, nr_per_block, desired_npb, blocks, 414460e3d707SDarrick J. Wong blocks_with_extra), 414560e3d707SDarrick J. Wong TP_STRUCT__entry( 414660e3d707SDarrick J. Wong __field(dev_t, dev) 414760e3d707SDarrick J. Wong __field(xfs_btnum_t, btnum) 414860e3d707SDarrick J. Wong __field(unsigned int, level) 414960e3d707SDarrick J. Wong __field(unsigned int, nlevels) 415060e3d707SDarrick J. Wong __field(uint64_t, nr_this_level) 415160e3d707SDarrick J. Wong __field(unsigned int, nr_per_block) 415260e3d707SDarrick J. Wong __field(unsigned int, desired_npb) 415360e3d707SDarrick J. Wong __field(unsigned long long, blocks) 415460e3d707SDarrick J. Wong __field(unsigned long long, blocks_with_extra) 415560e3d707SDarrick J. Wong ), 415660e3d707SDarrick J. Wong TP_fast_assign( 415760e3d707SDarrick J. Wong __entry->dev = cur->bc_mp->m_super->s_dev; 415860e3d707SDarrick J. Wong __entry->btnum = cur->bc_btnum; 415960e3d707SDarrick J. Wong __entry->level = level; 416060e3d707SDarrick J. Wong __entry->nlevels = cur->bc_nlevels; 416160e3d707SDarrick J. Wong __entry->nr_this_level = nr_this_level; 416260e3d707SDarrick J. Wong __entry->nr_per_block = nr_per_block; 416360e3d707SDarrick J. Wong __entry->desired_npb = desired_npb; 416460e3d707SDarrick J. Wong __entry->blocks = blocks; 416560e3d707SDarrick J. Wong __entry->blocks_with_extra = blocks_with_extra; 416660e3d707SDarrick J. Wong ), 416760e3d707SDarrick 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", 416860e3d707SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 416960e3d707SDarrick J. Wong __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 417060e3d707SDarrick J. Wong __entry->level, 417160e3d707SDarrick J. Wong __entry->nlevels, 417260e3d707SDarrick J. Wong __entry->nr_this_level, 417360e3d707SDarrick J. Wong __entry->nr_per_block, 417460e3d707SDarrick J. Wong __entry->desired_npb, 417560e3d707SDarrick J. Wong __entry->blocks, 417660e3d707SDarrick J. Wong __entry->blocks_with_extra) 417760e3d707SDarrick J. Wong ) 417860e3d707SDarrick J. Wong 417960e3d707SDarrick J. Wong TRACE_EVENT(xfs_btree_bload_block, 418060e3d707SDarrick J. Wong TP_PROTO(struct xfs_btree_cur *cur, unsigned int level, 418160e3d707SDarrick J. Wong uint64_t block_idx, uint64_t nr_blocks, 418260e3d707SDarrick J. Wong union xfs_btree_ptr *ptr, unsigned int nr_records), 418360e3d707SDarrick J. Wong TP_ARGS(cur, level, block_idx, nr_blocks, ptr, nr_records), 418460e3d707SDarrick J. Wong TP_STRUCT__entry( 418560e3d707SDarrick J. Wong __field(dev_t, dev) 418650f02fe3SDave Chinner __field(xfs_btnum_t, btnum) 418760e3d707SDarrick J. Wong __field(unsigned int, level) 418860e3d707SDarrick J. Wong __field(unsigned long long, block_idx) 418960e3d707SDarrick J. Wong __field(unsigned long long, nr_blocks) 419060e3d707SDarrick J. Wong __field(xfs_agnumber_t, agno) 4191f7b08163SDarrick J. Wong __field(xfs_agblock_t, agbno) 419260e3d707SDarrick J. Wong __field(unsigned int, nr_records) 419360e3d707SDarrick J. Wong ), 419460e3d707SDarrick J. Wong TP_fast_assign( 419560e3d707SDarrick J. Wong __entry->dev = cur->bc_mp->m_super->s_dev; 419660e3d707SDarrick J. Wong __entry->btnum = cur->bc_btnum; 419760e3d707SDarrick J. Wong __entry->level = level; 419860e3d707SDarrick J. Wong __entry->block_idx = block_idx; 419960e3d707SDarrick J. Wong __entry->nr_blocks = nr_blocks; 420060e3d707SDarrick J. Wong if (cur->bc_flags & XFS_BTREE_LONG_PTRS) { 420160e3d707SDarrick J. Wong xfs_fsblock_t fsb = be64_to_cpu(ptr->l); 420206dbf82bSDarrick J. Wong 420306dbf82bSDarrick J. Wong __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsb); 420406dbf82bSDarrick J. Wong __entry->agbno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsb); 420506dbf82bSDarrick J. Wong } else { 420606dbf82bSDarrick J. Wong __entry->agno = cur->bc_ag.pag->pag_agno; 420706dbf82bSDarrick J. Wong __entry->agbno = be32_to_cpu(ptr->s); 420806dbf82bSDarrick J. Wong } 420906dbf82bSDarrick J. Wong __entry->nr_records = nr_records; 421006dbf82bSDarrick J. Wong ), 421106dbf82bSDarrick J. Wong TP_printk("dev %d:%d btree %s level %u block %llu/%llu agno 0x%x agbno 0x%x recs %u", 421206dbf82bSDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 421306dbf82bSDarrick J. Wong __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 421406dbf82bSDarrick J. Wong __entry->level, 421506dbf82bSDarrick J. Wong __entry->block_idx, 421606dbf82bSDarrick J. Wong __entry->nr_blocks, 421706dbf82bSDarrick J. Wong __entry->agno, 421806dbf82bSDarrick J. Wong __entry->agbno, 421906dbf82bSDarrick J. Wong __entry->nr_records) 422006dbf82bSDarrick J. Wong ) 422106dbf82bSDarrick J. Wong 422206dbf82bSDarrick J. Wong DECLARE_EVENT_CLASS(xfs_timestamp_range_class, 422306dbf82bSDarrick J. Wong TP_PROTO(struct xfs_mount *mp, time64_t min, time64_t max), 422406dbf82bSDarrick J. Wong TP_ARGS(mp, min, max), 422506dbf82bSDarrick J. Wong TP_STRUCT__entry( 422606dbf82bSDarrick J. Wong __field(dev_t, dev) 422706dbf82bSDarrick J. Wong __field(long long, min) 4228b26b2bf1SDarrick J. Wong __field(long long, max) 4229b26b2bf1SDarrick J. Wong ), 423038899f80SDarrick J. Wong TP_fast_assign( 4231b26b2bf1SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 423238899f80SDarrick J. Wong __entry->min = min; 423338899f80SDarrick J. Wong __entry->max = max; 423438899f80SDarrick J. Wong ), 423538899f80SDarrick J. Wong TP_printk("dev %d:%d min %lld max %lld", 423638899f80SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 423738899f80SDarrick J. Wong __entry->min, 423838899f80SDarrick J. Wong __entry->max) 423910be350bSDarrick J. Wong ) 424038899f80SDarrick J. Wong 424138899f80SDarrick J. Wong #define DEFINE_TIMESTAMP_RANGE_EVENT(name) \ 424238899f80SDarrick J. Wong DEFINE_EVENT(xfs_timestamp_range_class, name, \ 424338899f80SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, long long min, long long max), \ 4244b26b2bf1SDarrick J. Wong TP_ARGS(mp, min, max)) 4245b26b2bf1SDarrick J. Wong DEFINE_TIMESTAMP_RANGE_EVENT(xfs_inode_timestamp_range); 4246b26b2bf1SDarrick J. Wong DEFINE_TIMESTAMP_RANGE_EVENT(xfs_quota_expiry_range); 4247b26b2bf1SDarrick J. Wong 4248b26b2bf1SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_icwalk_class, 4249b26b2bf1SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, struct xfs_icwalk *icw, 4250b26b2bf1SDarrick J. Wong unsigned long caller_ip), 4251b26b2bf1SDarrick J. Wong TP_ARGS(mp, icw, caller_ip), 425238899f80SDarrick J. Wong TP_STRUCT__entry( 425338899f80SDarrick J. Wong __field(dev_t, dev) 425410be350bSDarrick J. Wong __field(__u32, flags) 425538899f80SDarrick J. Wong __field(uint32_t, uid) 425638899f80SDarrick J. Wong __field(uint32_t, gid) 425738899f80SDarrick J. Wong __field(prid_t, prid) 425838899f80SDarrick J. Wong __field(__u64, min_file_size) 425938899f80SDarrick J. Wong __field(long, scan_limit) 426038899f80SDarrick J. Wong __field(unsigned long, caller_ip) 4261f1bc5c56SDarrick J. Wong ), 426238899f80SDarrick J. Wong TP_fast_assign( 426338899f80SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 4264b26b2bf1SDarrick J. Wong __entry->flags = icw ? icw->icw_flags : 0; 4265b26b2bf1SDarrick J. Wong __entry->uid = icw ? from_kuid(mp->m_super->s_user_ns, 4266b26b2bf1SDarrick J. Wong icw->icw_uid) : 0; 426738899f80SDarrick J. Wong __entry->gid = icw ? from_kgid(mp->m_super->s_user_ns, 4268b26b2bf1SDarrick J. Wong icw->icw_gid) : 0; 4269b26b2bf1SDarrick J. Wong __entry->prid = icw ? icw->icw_prid : 0; 4270b26b2bf1SDarrick J. Wong __entry->min_file_size = icw ? icw->icw_min_file_size : 0; 427138899f80SDarrick J. Wong __entry->scan_limit = icw ? icw->icw_scan_limit : 0; 4272956f6daaSDave Chinner __entry->caller_ip = caller_ip; 4273956f6daaSDave Chinner ), 4274956f6daaSDave Chinner TP_printk("dev %d:%d flags 0x%x uid %u gid %u prid %u minsize %llu scan_limit %ld caller %pS", 4275956f6daaSDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 4276956f6daaSDave Chinner __entry->flags, 4277956f6daaSDave Chinner __entry->uid, 4278956f6daaSDave Chinner __entry->gid, 4279956f6daaSDave Chinner __entry->prid, 4280956f6daaSDave Chinner __entry->min_file_size, 4281956f6daaSDave Chinner __entry->scan_limit, 4282956f6daaSDave Chinner (char *)__entry->caller_ip) 4283956f6daaSDave Chinner ); 4284956f6daaSDave Chinner #define DEFINE_ICWALK_EVENT(name) \ 4285956f6daaSDave Chinner DEFINE_EVENT(xfs_icwalk_class, name, \ 4286956f6daaSDave Chinner TP_PROTO(struct xfs_mount *mp, struct xfs_icwalk *icw, \ 4287b2ae3a9eSDave Chinner unsigned long caller_ip), \ 4288956f6daaSDave Chinner TP_ARGS(mp, icw, caller_ip)) 4289956f6daaSDave Chinner DEFINE_ICWALK_EVENT(xfs_ioc_free_eofblocks); 4290956f6daaSDave Chinner DEFINE_ICWALK_EVENT(xfs_blockgc_free_space); 4291956f6daaSDave Chinner 4292956f6daaSDave Chinner TRACE_DEFINE_ENUM(XLOG_STATE_ACTIVE); 4293956f6daaSDave Chinner TRACE_DEFINE_ENUM(XLOG_STATE_WANT_SYNC); 4294956f6daaSDave Chinner TRACE_DEFINE_ENUM(XLOG_STATE_SYNCING); 4295956f6daaSDave Chinner TRACE_DEFINE_ENUM(XLOG_STATE_DONE_SYNC); 4296b2ae3a9eSDave Chinner TRACE_DEFINE_ENUM(XLOG_STATE_CALLBACK); 4297956f6daaSDave Chinner TRACE_DEFINE_ENUM(XLOG_STATE_DIRTY); 4298956f6daaSDave Chinner 4299956f6daaSDave Chinner DECLARE_EVENT_CLASS(xlog_iclog_class, 4300b2ae3a9eSDave Chinner TP_PROTO(struct xlog_in_core *iclog, unsigned long caller_ip), 4301956f6daaSDave Chinner TP_ARGS(iclog, caller_ip), 4302956f6daaSDave Chinner TP_STRUCT__entry( 4303956f6daaSDave Chinner __field(dev_t, dev) 4304956f6daaSDave Chinner __field(uint32_t, state) 4305956f6daaSDave Chinner __field(int32_t, refcount) 4306b2ae3a9eSDave Chinner __field(uint32_t, offset) 4307956f6daaSDave Chinner __field(uint32_t, flags) 4308956f6daaSDave Chinner __field(unsigned long long, lsn) 4309956f6daaSDave Chinner __field(unsigned long, caller_ip) 4310956f6daaSDave Chinner ), 4311956f6daaSDave Chinner TP_fast_assign( 4312956f6daaSDave Chinner __entry->dev = iclog->ic_log->l_mp->m_super->s_dev; 4313956f6daaSDave Chinner __entry->state = iclog->ic_state; 4314956f6daaSDave Chinner __entry->refcount = atomic_read(&iclog->ic_refcnt); 4315956f6daaSDave Chinner __entry->offset = iclog->ic_offset; 4316956f6daaSDave Chinner __entry->flags = iclog->ic_flags; 4317956f6daaSDave Chinner __entry->lsn = be64_to_cpu(iclog->ic_header.h_lsn); 4318956f6daaSDave Chinner __entry->caller_ip = caller_ip; 4319956f6daaSDave Chinner ), 4320956f6daaSDave Chinner TP_printk("dev %d:%d state %s refcnt %d offset %u lsn 0x%llx flags %s caller %pS", 4321956f6daaSDave Chinner MAJOR(__entry->dev), MINOR(__entry->dev), 4322956f6daaSDave Chinner __print_symbolic(__entry->state, XLOG_STATE_STRINGS), 4323956f6daaSDave Chinner __entry->refcount, 4324956f6daaSDave Chinner __entry->offset, 4325956f6daaSDave Chinner __entry->lsn, 4326956f6daaSDave Chinner __print_flags(__entry->flags, "|", XLOG_ICL_STRINGS), 4327956f6daaSDave Chinner (char *)__entry->caller_ip) 4328956f6daaSDave Chinner 4329956f6daaSDave Chinner ); 4330956f6daaSDave Chinner 4331956f6daaSDave Chinner #define DEFINE_ICLOG_EVENT(name) \ 4332956f6daaSDave Chinner DEFINE_EVENT(xlog_iclog_class, name, \ 4333e0c41089SDave Chinner TP_PROTO(struct xlog_in_core *iclog, unsigned long caller_ip), \ 4334e0c41089SDave Chinner TP_ARGS(iclog, caller_ip)) 4335e5d5596aSDave Chinner 4336fdaf1bb3SDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_activate); 4337e5d5596aSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_clean); 4338fdaf1bb3SDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_callback); 4339e5d5596aSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_callbacks_start); 43407d035336SDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_callbacks_done); 43412157d169SDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_force); 43427d035336SDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_force_lsn); 4343411b434aSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_get_space); 43442e7ef218SDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_release); 4345b11fa61bSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_switch); 43467d035336SDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_sync); 43477d035336SDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_syncing); 43487d035336SDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_sync_done); 4349411b434aSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_want_sync); 43502e7ef218SDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_wait_on); 4351b11fa61bSDave Chinner DEFINE_ICLOG_EVENT(xlog_iclog_write); 4352b11fa61bSDave Chinner 4353e0c41089SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_UNINIT); 4354df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_SF_ADD); 4355df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_SF_REMOVE); 4356df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_LEAF_ADD); 4357df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_LEAF_REMOVE); 4358df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_NODE_ADD); 4359df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_NODE_REMOVE); 4360df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_LEAF_SET_RMT); 4361df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_LEAF_ALLOC_RMT); 4362df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_LEAF_REPLACE); 4363df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_LEAF_REMOVE_OLD); 4364df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_LEAF_REMOVE_RMT); 4365e0c41089SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_LEAF_REMOVE_ATTR); 4366e0c41089SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_NODE_SET_RMT); 4367e0c41089SDave Chinner TRACE_DEFINE_ENUM(XFS_DAS_NODE_ALLOC_RMT); 4368df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_NODE_REPLACE); 4369df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_NODE_REMOVE_OLD); 4370df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_NODE_REMOVE_RMT); 4371df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_NODE_REMOVE_ATTR); 4372df082631SAllison Henderson TRACE_DEFINE_ENUM(XFS_DAS_DONE); 4373df082631SAllison Henderson 4374df082631SAllison Henderson DECLARE_EVENT_CLASS(xfs_das_state_class, 4375df082631SAllison Henderson TP_PROTO(int das, struct xfs_inode *ip), 4376cd1549d6SAllison Henderson TP_ARGS(das, ip), 4377df082631SAllison Henderson TP_STRUCT__entry( 4378df082631SAllison Henderson __field(int, das) 43797d035336SDave Chinner __field(xfs_ino_t, ino) 4380df082631SAllison Henderson ), 4381709c8632SDave Chinner TP_fast_assign( 4382709c8632SDave Chinner __entry->das = das; 4383709c8632SDave Chinner __entry->ino = ip->i_ino; 4384709c8632SDave Chinner ), 43857f89c838SDarrick J. Wong TP_printk("state change %s ino 0x%llx", 43867f89c838SDarrick J. Wong __print_symbolic(__entry->das, XFS_DAS_STRINGS), 43877f89c838SDarrick J. Wong __entry->ino) 43887f89c838SDarrick J. Wong ) 43897f89c838SDarrick J. Wong 43907f89c838SDarrick J. Wong #define DEFINE_DAS_STATE_EVENT(name) \ 43917f89c838SDarrick J. Wong DEFINE_EVENT(xfs_das_state_class, name, \ 43927f89c838SDarrick J. Wong TP_PROTO(int das, struct xfs_inode *ip), \ 43937f89c838SDarrick J. Wong TP_ARGS(das, ip)) 43947f89c838SDarrick J. Wong DEFINE_DAS_STATE_EVENT(xfs_attr_sf_addname_return); 43957f89c838SDarrick J. Wong DEFINE_DAS_STATE_EVENT(xfs_attr_set_iter_return); 43967f89c838SDarrick J. Wong DEFINE_DAS_STATE_EVENT(xfs_attr_leaf_addname_return); 43977f89c838SDarrick J. Wong DEFINE_DAS_STATE_EVENT(xfs_attr_node_addname_return); 43987f89c838SDarrick J. Wong DEFINE_DAS_STATE_EVENT(xfs_attr_remove_iter_return); 43997f89c838SDarrick J. Wong DEFINE_DAS_STATE_EVENT(xfs_attr_rmtval_alloc); 44007f89c838SDarrick J. Wong DEFINE_DAS_STATE_EVENT(xfs_attr_rmtval_remove_return); 44017f89c838SDarrick J. Wong DEFINE_DAS_STATE_EVENT(xfs_attr_defer_add); 44027f89c838SDarrick J. Wong DEFINE_DAS_STATE_EVENT(xfs_attr_defer_replace); 44037f89c838SDarrick J. Wong DEFINE_DAS_STATE_EVENT(xfs_attr_defer_remove); 44047f89c838SDarrick J. Wong 44057f89c838SDarrick J. Wong 44067f89c838SDarrick J. Wong TRACE_EVENT(xfs_force_shutdown, 44077f89c838SDarrick J. Wong TP_PROTO(struct xfs_mount *mp, int ptag, int flags, const char *fname, 44087f89c838SDarrick J. Wong int line_num), 44097f89c838SDarrick J. Wong TP_ARGS(mp, ptag, flags, fname, line_num), 44107f89c838SDarrick J. Wong TP_STRUCT__entry( 44117f89c838SDarrick J. Wong __field(dev_t, dev) 4412d5c88131SDarrick J. Wong __field(int, ptag) 4413d5c88131SDarrick J. Wong __field(int, flags) 4414d5c88131SDarrick J. Wong __string(fname, fname) 4415d5c88131SDarrick J. Wong __field(int, line_num) 4416d5c88131SDarrick J. Wong ), 4417d5c88131SDarrick J. Wong TP_fast_assign( 4418d5c88131SDarrick J. Wong __entry->dev = mp->m_super->s_dev; 4419d5c88131SDarrick J. Wong __entry->ptag = ptag; 4420d5c88131SDarrick J. Wong __entry->flags = flags; 4421d5c88131SDarrick J. Wong __assign_str(fname, fname); 4422d5c88131SDarrick J. Wong __entry->line_num = line_num; 4423d5c88131SDarrick J. Wong ), 4424d5c88131SDarrick J. Wong TP_printk("dev %d:%d tag %s flags %s file %s line_num %d", 4425d5c88131SDarrick J. Wong MAJOR(__entry->dev), MINOR(__entry->dev), 4426d5c88131SDarrick J. Wong __print_flags(__entry->ptag, "|", XFS_PTAG_STRINGS), 4427d5c88131SDarrick J. Wong __print_flags(__entry->flags, "|", XFS_SHUTDOWN_STRINGS), 4428d5c88131SDarrick J. Wong __get_str(fname), 4429d5c88131SDarrick J. Wong __entry->line_num) 4430d5c88131SDarrick J. Wong ); 4431d5c88131SDarrick J. Wong 4432d5c88131SDarrick J. Wong #ifdef CONFIG_XFS_DRAIN_INTENTS 4433d5c88131SDarrick J. Wong DECLARE_EVENT_CLASS(xfs_perag_intents_class, 4434d5c88131SDarrick J. Wong TP_PROTO(struct xfs_perag *pag, void *caller_ip), 4435d5c88131SDarrick J. Wong TP_ARGS(pag, caller_ip), 4436d5c88131SDarrick J. Wong TP_STRUCT__entry( 4437d5c88131SDarrick J. Wong __field(dev_t, dev) 4438d5c88131SDarrick J. Wong __field(xfs_agnumber_t, agno) 4439d5c88131SDarrick J. Wong __field(long, nr_intents) 4440d5c88131SDarrick J. Wong __field(void *, caller_ip) 4441d5c88131SDarrick J. Wong ), 4442d5c88131SDarrick J. Wong TP_fast_assign( 4443d5c88131SDarrick J. Wong __entry->dev = pag->pag_mount->m_super->s_dev; 4444d5c88131SDarrick J. Wong __entry->agno = pag->pag_agno; 4445c59d87c4SChristoph Hellwig __entry->nr_intents = atomic_read(&pag->pag_intents_drain.dr_count); 4446c59d87c4SChristoph Hellwig __entry->caller_ip = caller_ip; 4447c59d87c4SChristoph Hellwig ), 4448c59d87c4SChristoph Hellwig TP_printk("dev %d:%d agno 0x%x intents %ld caller %pS", 4449c59d87c4SChristoph Hellwig MAJOR(__entry->dev), MINOR(__entry->dev), 4450c59d87c4SChristoph Hellwig __entry->agno, 4451 __entry->nr_intents, 4452 __entry->caller_ip) 4453 ); 4454 4455 #define DEFINE_PERAG_INTENTS_EVENT(name) \ 4456 DEFINE_EVENT(xfs_perag_intents_class, name, \ 4457 TP_PROTO(struct xfs_perag *pag, void *caller_ip), \ 4458 TP_ARGS(pag, caller_ip)) 4459 DEFINE_PERAG_INTENTS_EVENT(xfs_perag_intent_hold); 4460 DEFINE_PERAG_INTENTS_EVENT(xfs_perag_intent_rele); 4461 DEFINE_PERAG_INTENTS_EVENT(xfs_perag_wait_intents); 4462 4463 #endif /* CONFIG_XFS_DRAIN_INTENTS */ 4464 4465 #endif /* _TRACE_XFS_H */ 4466 4467 #undef TRACE_INCLUDE_PATH 4468 #define TRACE_INCLUDE_PATH . 4469 #define TRACE_INCLUDE_FILE xfs_trace 4470 #include <trace/define_trace.h> 4471