162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2009, Christoph Hellwig 462306a36Sopenharmony_ci * All Rights Reserved. 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * NOTE: none of these tracepoints shall be considered a stable kernel ABI 762306a36Sopenharmony_ci * as they can change at any time. 862306a36Sopenharmony_ci * 962306a36Sopenharmony_ci * Current conventions for printing numbers measuring specific units: 1062306a36Sopenharmony_ci * 1162306a36Sopenharmony_ci * agno: allocation group number 1262306a36Sopenharmony_ci * 1362306a36Sopenharmony_ci * agino: per-AG inode number 1462306a36Sopenharmony_ci * ino: filesystem inode number 1562306a36Sopenharmony_ci * 1662306a36Sopenharmony_ci * agbno: per-AG block number in fs blocks 1762306a36Sopenharmony_ci * startblock: physical block number for file mappings. This is either a 1862306a36Sopenharmony_ci * segmented fsblock for data device mappings, or a rfsblock 1962306a36Sopenharmony_ci * for realtime device mappings 2062306a36Sopenharmony_ci * fsbcount: number of blocks in an extent, in fs blocks 2162306a36Sopenharmony_ci * 2262306a36Sopenharmony_ci * daddr: physical block number in 512b blocks 2362306a36Sopenharmony_ci * bbcount: number of blocks in a physical extent, in 512b blocks 2462306a36Sopenharmony_ci * 2562306a36Sopenharmony_ci * rtx: physical rt extent number for extent mappings 2662306a36Sopenharmony_ci * rtxcount: number of rt extents in an extent mapping 2762306a36Sopenharmony_ci * 2862306a36Sopenharmony_ci * owner: reverse-mapping owner, usually inodes 2962306a36Sopenharmony_ci * 3062306a36Sopenharmony_ci * fileoff: file offset, in fs blocks 3162306a36Sopenharmony_ci * pos: file offset, in bytes 3262306a36Sopenharmony_ci * bytecount: number of bytes 3362306a36Sopenharmony_ci * 3462306a36Sopenharmony_ci * disize: ondisk file size, in bytes 3562306a36Sopenharmony_ci * isize: incore file size, in bytes 3662306a36Sopenharmony_ci * 3762306a36Sopenharmony_ci * forkoff: inode fork offset, in bytes 3862306a36Sopenharmony_ci * 3962306a36Sopenharmony_ci * ireccount: number of inode records 4062306a36Sopenharmony_ci * 4162306a36Sopenharmony_ci * Numbers describing space allocations (blocks, extents, inodes) should be 4262306a36Sopenharmony_ci * formatted in hexadecimal. 4362306a36Sopenharmony_ci */ 4462306a36Sopenharmony_ci#undef TRACE_SYSTEM 4562306a36Sopenharmony_ci#define TRACE_SYSTEM xfs 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci#if !defined(_TRACE_XFS_H) || defined(TRACE_HEADER_MULTI_READ) 4862306a36Sopenharmony_ci#define _TRACE_XFS_H 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci#include <linux/tracepoint.h> 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_cistruct xfs_agf; 5362306a36Sopenharmony_cistruct xfs_alloc_arg; 5462306a36Sopenharmony_cistruct xfs_attr_list_context; 5562306a36Sopenharmony_cistruct xfs_buf_log_item; 5662306a36Sopenharmony_cistruct xfs_da_args; 5762306a36Sopenharmony_cistruct xfs_da_node_entry; 5862306a36Sopenharmony_cistruct xfs_dquot; 5962306a36Sopenharmony_cistruct xfs_log_item; 6062306a36Sopenharmony_cistruct xlog; 6162306a36Sopenharmony_cistruct xlog_ticket; 6262306a36Sopenharmony_cistruct xlog_recover; 6362306a36Sopenharmony_cistruct xlog_recover_item; 6462306a36Sopenharmony_cistruct xlog_rec_header; 6562306a36Sopenharmony_cistruct xlog_in_core; 6662306a36Sopenharmony_cistruct xfs_buf_log_format; 6762306a36Sopenharmony_cistruct xfs_inode_log_format; 6862306a36Sopenharmony_cistruct xfs_bmbt_irec; 6962306a36Sopenharmony_cistruct xfs_btree_cur; 7062306a36Sopenharmony_cistruct xfs_refcount_irec; 7162306a36Sopenharmony_cistruct xfs_fsmap; 7262306a36Sopenharmony_cistruct xfs_rmap_irec; 7362306a36Sopenharmony_cistruct xfs_icreate_log; 7462306a36Sopenharmony_cistruct xfs_owner_info; 7562306a36Sopenharmony_cistruct xfs_trans_res; 7662306a36Sopenharmony_cistruct xfs_inobt_rec_incore; 7762306a36Sopenharmony_ciunion xfs_btree_ptr; 7862306a36Sopenharmony_cistruct xfs_dqtrx; 7962306a36Sopenharmony_cistruct xfs_icwalk; 8062306a36Sopenharmony_cistruct xfs_perag; 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci#define XFS_ATTR_FILTER_FLAGS \ 8362306a36Sopenharmony_ci { XFS_ATTR_ROOT, "ROOT" }, \ 8462306a36Sopenharmony_ci { XFS_ATTR_SECURE, "SECURE" }, \ 8562306a36Sopenharmony_ci { XFS_ATTR_INCOMPLETE, "INCOMPLETE" } 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_attr_list_class, 8862306a36Sopenharmony_ci TP_PROTO(struct xfs_attr_list_context *ctx), 8962306a36Sopenharmony_ci TP_ARGS(ctx), 9062306a36Sopenharmony_ci TP_STRUCT__entry( 9162306a36Sopenharmony_ci __field(dev_t, dev) 9262306a36Sopenharmony_ci __field(xfs_ino_t, ino) 9362306a36Sopenharmony_ci __field(u32, hashval) 9462306a36Sopenharmony_ci __field(u32, blkno) 9562306a36Sopenharmony_ci __field(u32, offset) 9662306a36Sopenharmony_ci __field(void *, buffer) 9762306a36Sopenharmony_ci __field(int, bufsize) 9862306a36Sopenharmony_ci __field(int, count) 9962306a36Sopenharmony_ci __field(int, firstu) 10062306a36Sopenharmony_ci __field(int, dupcnt) 10162306a36Sopenharmony_ci __field(unsigned int, attr_filter) 10262306a36Sopenharmony_ci ), 10362306a36Sopenharmony_ci TP_fast_assign( 10462306a36Sopenharmony_ci __entry->dev = VFS_I(ctx->dp)->i_sb->s_dev; 10562306a36Sopenharmony_ci __entry->ino = ctx->dp->i_ino; 10662306a36Sopenharmony_ci __entry->hashval = ctx->cursor.hashval; 10762306a36Sopenharmony_ci __entry->blkno = ctx->cursor.blkno; 10862306a36Sopenharmony_ci __entry->offset = ctx->cursor.offset; 10962306a36Sopenharmony_ci __entry->buffer = ctx->buffer; 11062306a36Sopenharmony_ci __entry->bufsize = ctx->bufsize; 11162306a36Sopenharmony_ci __entry->count = ctx->count; 11262306a36Sopenharmony_ci __entry->firstu = ctx->firstu; 11362306a36Sopenharmony_ci __entry->attr_filter = ctx->attr_filter; 11462306a36Sopenharmony_ci ), 11562306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx cursor h/b/o 0x%x/0x%x/%u dupcnt %u " 11662306a36Sopenharmony_ci "buffer %p size %u count %u firstu %u filter %s", 11762306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 11862306a36Sopenharmony_ci __entry->ino, 11962306a36Sopenharmony_ci __entry->hashval, 12062306a36Sopenharmony_ci __entry->blkno, 12162306a36Sopenharmony_ci __entry->offset, 12262306a36Sopenharmony_ci __entry->dupcnt, 12362306a36Sopenharmony_ci __entry->buffer, 12462306a36Sopenharmony_ci __entry->bufsize, 12562306a36Sopenharmony_ci __entry->count, 12662306a36Sopenharmony_ci __entry->firstu, 12762306a36Sopenharmony_ci __print_flags(__entry->attr_filter, "|", 12862306a36Sopenharmony_ci XFS_ATTR_FILTER_FLAGS) 12962306a36Sopenharmony_ci ) 13062306a36Sopenharmony_ci) 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ci#define DEFINE_ATTR_LIST_EVENT(name) \ 13362306a36Sopenharmony_ciDEFINE_EVENT(xfs_attr_list_class, name, \ 13462306a36Sopenharmony_ci TP_PROTO(struct xfs_attr_list_context *ctx), \ 13562306a36Sopenharmony_ci TP_ARGS(ctx)) 13662306a36Sopenharmony_ciDEFINE_ATTR_LIST_EVENT(xfs_attr_list_sf); 13762306a36Sopenharmony_ciDEFINE_ATTR_LIST_EVENT(xfs_attr_list_sf_all); 13862306a36Sopenharmony_ciDEFINE_ATTR_LIST_EVENT(xfs_attr_list_leaf); 13962306a36Sopenharmony_ciDEFINE_ATTR_LIST_EVENT(xfs_attr_list_leaf_end); 14062306a36Sopenharmony_ciDEFINE_ATTR_LIST_EVENT(xfs_attr_list_full); 14162306a36Sopenharmony_ciDEFINE_ATTR_LIST_EVENT(xfs_attr_list_add); 14262306a36Sopenharmony_ciDEFINE_ATTR_LIST_EVENT(xfs_attr_list_wrong_blk); 14362306a36Sopenharmony_ciDEFINE_ATTR_LIST_EVENT(xfs_attr_list_notfound); 14462306a36Sopenharmony_ciDEFINE_ATTR_LIST_EVENT(xfs_attr_leaf_list); 14562306a36Sopenharmony_ciDEFINE_ATTR_LIST_EVENT(xfs_attr_node_list); 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ciTRACE_EVENT(xlog_intent_recovery_failed, 14862306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, int error, void *function), 14962306a36Sopenharmony_ci TP_ARGS(mp, error, function), 15062306a36Sopenharmony_ci TP_STRUCT__entry( 15162306a36Sopenharmony_ci __field(dev_t, dev) 15262306a36Sopenharmony_ci __field(int, error) 15362306a36Sopenharmony_ci __field(void *, function) 15462306a36Sopenharmony_ci ), 15562306a36Sopenharmony_ci TP_fast_assign( 15662306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 15762306a36Sopenharmony_ci __entry->error = error; 15862306a36Sopenharmony_ci __entry->function = function; 15962306a36Sopenharmony_ci ), 16062306a36Sopenharmony_ci TP_printk("dev %d:%d error %d function %pS", 16162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 16262306a36Sopenharmony_ci __entry->error, __entry->function) 16362306a36Sopenharmony_ci); 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_perag_class, 16662306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, unsigned long caller_ip), 16762306a36Sopenharmony_ci TP_ARGS(pag, caller_ip), 16862306a36Sopenharmony_ci TP_STRUCT__entry( 16962306a36Sopenharmony_ci __field(dev_t, dev) 17062306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 17162306a36Sopenharmony_ci __field(int, refcount) 17262306a36Sopenharmony_ci __field(int, active_refcount) 17362306a36Sopenharmony_ci __field(unsigned long, caller_ip) 17462306a36Sopenharmony_ci ), 17562306a36Sopenharmony_ci TP_fast_assign( 17662306a36Sopenharmony_ci __entry->dev = pag->pag_mount->m_super->s_dev; 17762306a36Sopenharmony_ci __entry->agno = pag->pag_agno; 17862306a36Sopenharmony_ci __entry->refcount = atomic_read(&pag->pag_ref); 17962306a36Sopenharmony_ci __entry->active_refcount = atomic_read(&pag->pag_active_ref); 18062306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 18162306a36Sopenharmony_ci ), 18262306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x passive refs %d active refs %d caller %pS", 18362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 18462306a36Sopenharmony_ci __entry->agno, 18562306a36Sopenharmony_ci __entry->refcount, 18662306a36Sopenharmony_ci __entry->active_refcount, 18762306a36Sopenharmony_ci (char *)__entry->caller_ip) 18862306a36Sopenharmony_ci); 18962306a36Sopenharmony_ci 19062306a36Sopenharmony_ci#define DEFINE_PERAG_REF_EVENT(name) \ 19162306a36Sopenharmony_ciDEFINE_EVENT(xfs_perag_class, name, \ 19262306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, unsigned long caller_ip), \ 19362306a36Sopenharmony_ci TP_ARGS(pag, caller_ip)) 19462306a36Sopenharmony_ciDEFINE_PERAG_REF_EVENT(xfs_perag_get); 19562306a36Sopenharmony_ciDEFINE_PERAG_REF_EVENT(xfs_perag_get_tag); 19662306a36Sopenharmony_ciDEFINE_PERAG_REF_EVENT(xfs_perag_hold); 19762306a36Sopenharmony_ciDEFINE_PERAG_REF_EVENT(xfs_perag_put); 19862306a36Sopenharmony_ciDEFINE_PERAG_REF_EVENT(xfs_perag_grab); 19962306a36Sopenharmony_ciDEFINE_PERAG_REF_EVENT(xfs_perag_grab_tag); 20062306a36Sopenharmony_ciDEFINE_PERAG_REF_EVENT(xfs_perag_rele); 20162306a36Sopenharmony_ciDEFINE_PERAG_REF_EVENT(xfs_perag_set_inode_tag); 20262306a36Sopenharmony_ciDEFINE_PERAG_REF_EVENT(xfs_perag_clear_inode_tag); 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ciTRACE_EVENT(xfs_inodegc_worker, 20562306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, unsigned int shrinker_hits), 20662306a36Sopenharmony_ci TP_ARGS(mp, shrinker_hits), 20762306a36Sopenharmony_ci TP_STRUCT__entry( 20862306a36Sopenharmony_ci __field(dev_t, dev) 20962306a36Sopenharmony_ci __field(unsigned int, shrinker_hits) 21062306a36Sopenharmony_ci ), 21162306a36Sopenharmony_ci TP_fast_assign( 21262306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 21362306a36Sopenharmony_ci __entry->shrinker_hits = shrinker_hits; 21462306a36Sopenharmony_ci ), 21562306a36Sopenharmony_ci TP_printk("dev %d:%d shrinker_hits %u", 21662306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 21762306a36Sopenharmony_ci __entry->shrinker_hits) 21862306a36Sopenharmony_ci); 21962306a36Sopenharmony_ci 22062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_fs_class, 22162306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, void *caller_ip), 22262306a36Sopenharmony_ci TP_ARGS(mp, caller_ip), 22362306a36Sopenharmony_ci TP_STRUCT__entry( 22462306a36Sopenharmony_ci __field(dev_t, dev) 22562306a36Sopenharmony_ci __field(unsigned long long, mflags) 22662306a36Sopenharmony_ci __field(unsigned long, opstate) 22762306a36Sopenharmony_ci __field(unsigned long, sbflags) 22862306a36Sopenharmony_ci __field(void *, caller_ip) 22962306a36Sopenharmony_ci ), 23062306a36Sopenharmony_ci TP_fast_assign( 23162306a36Sopenharmony_ci if (mp) { 23262306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 23362306a36Sopenharmony_ci __entry->mflags = mp->m_features; 23462306a36Sopenharmony_ci __entry->opstate = mp->m_opstate; 23562306a36Sopenharmony_ci __entry->sbflags = mp->m_super->s_flags; 23662306a36Sopenharmony_ci } 23762306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 23862306a36Sopenharmony_ci ), 23962306a36Sopenharmony_ci TP_printk("dev %d:%d m_features 0x%llx opstate (%s) s_flags 0x%lx caller %pS", 24062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 24162306a36Sopenharmony_ci __entry->mflags, 24262306a36Sopenharmony_ci __print_flags(__entry->opstate, "|", XFS_OPSTATE_STRINGS), 24362306a36Sopenharmony_ci __entry->sbflags, 24462306a36Sopenharmony_ci __entry->caller_ip) 24562306a36Sopenharmony_ci); 24662306a36Sopenharmony_ci 24762306a36Sopenharmony_ci#define DEFINE_FS_EVENT(name) \ 24862306a36Sopenharmony_ciDEFINE_EVENT(xfs_fs_class, name, \ 24962306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, void *caller_ip), \ 25062306a36Sopenharmony_ci TP_ARGS(mp, caller_ip)) 25162306a36Sopenharmony_ciDEFINE_FS_EVENT(xfs_inodegc_flush); 25262306a36Sopenharmony_ciDEFINE_FS_EVENT(xfs_inodegc_push); 25362306a36Sopenharmony_ciDEFINE_FS_EVENT(xfs_inodegc_start); 25462306a36Sopenharmony_ciDEFINE_FS_EVENT(xfs_inodegc_stop); 25562306a36Sopenharmony_ciDEFINE_FS_EVENT(xfs_inodegc_queue); 25662306a36Sopenharmony_ciDEFINE_FS_EVENT(xfs_inodegc_throttle); 25762306a36Sopenharmony_ciDEFINE_FS_EVENT(xfs_fs_sync_fs); 25862306a36Sopenharmony_ciDEFINE_FS_EVENT(xfs_blockgc_start); 25962306a36Sopenharmony_ciDEFINE_FS_EVENT(xfs_blockgc_stop); 26062306a36Sopenharmony_ciDEFINE_FS_EVENT(xfs_blockgc_worker); 26162306a36Sopenharmony_ciDEFINE_FS_EVENT(xfs_blockgc_flush_all); 26262306a36Sopenharmony_ci 26362306a36Sopenharmony_ciTRACE_EVENT(xfs_inodegc_shrinker_scan, 26462306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, struct shrink_control *sc, 26562306a36Sopenharmony_ci void *caller_ip), 26662306a36Sopenharmony_ci TP_ARGS(mp, sc, caller_ip), 26762306a36Sopenharmony_ci TP_STRUCT__entry( 26862306a36Sopenharmony_ci __field(dev_t, dev) 26962306a36Sopenharmony_ci __field(unsigned long, nr_to_scan) 27062306a36Sopenharmony_ci __field(void *, caller_ip) 27162306a36Sopenharmony_ci ), 27262306a36Sopenharmony_ci TP_fast_assign( 27362306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 27462306a36Sopenharmony_ci __entry->nr_to_scan = sc->nr_to_scan; 27562306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 27662306a36Sopenharmony_ci ), 27762306a36Sopenharmony_ci TP_printk("dev %d:%d nr_to_scan %lu caller %pS", 27862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 27962306a36Sopenharmony_ci __entry->nr_to_scan, 28062306a36Sopenharmony_ci __entry->caller_ip) 28162306a36Sopenharmony_ci); 28262306a36Sopenharmony_ci 28362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_ag_class, 28462306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno), 28562306a36Sopenharmony_ci TP_ARGS(mp, agno), 28662306a36Sopenharmony_ci TP_STRUCT__entry( 28762306a36Sopenharmony_ci __field(dev_t, dev) 28862306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 28962306a36Sopenharmony_ci ), 29062306a36Sopenharmony_ci TP_fast_assign( 29162306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 29262306a36Sopenharmony_ci __entry->agno = agno; 29362306a36Sopenharmony_ci ), 29462306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x", 29562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 29662306a36Sopenharmony_ci __entry->agno) 29762306a36Sopenharmony_ci); 29862306a36Sopenharmony_ci#define DEFINE_AG_EVENT(name) \ 29962306a36Sopenharmony_ciDEFINE_EVENT(xfs_ag_class, name, \ 30062306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno), \ 30162306a36Sopenharmony_ci TP_ARGS(mp, agno)) 30262306a36Sopenharmony_ci 30362306a36Sopenharmony_ciDEFINE_AG_EVENT(xfs_read_agf); 30462306a36Sopenharmony_ciDEFINE_AG_EVENT(xfs_alloc_read_agf); 30562306a36Sopenharmony_ciDEFINE_AG_EVENT(xfs_read_agi); 30662306a36Sopenharmony_ciDEFINE_AG_EVENT(xfs_ialloc_read_agi); 30762306a36Sopenharmony_ci 30862306a36Sopenharmony_ciTRACE_EVENT(xfs_attr_list_node_descend, 30962306a36Sopenharmony_ci TP_PROTO(struct xfs_attr_list_context *ctx, 31062306a36Sopenharmony_ci struct xfs_da_node_entry *btree), 31162306a36Sopenharmony_ci TP_ARGS(ctx, btree), 31262306a36Sopenharmony_ci TP_STRUCT__entry( 31362306a36Sopenharmony_ci __field(dev_t, dev) 31462306a36Sopenharmony_ci __field(xfs_ino_t, ino) 31562306a36Sopenharmony_ci __field(u32, hashval) 31662306a36Sopenharmony_ci __field(u32, blkno) 31762306a36Sopenharmony_ci __field(u32, offset) 31862306a36Sopenharmony_ci __field(void *, buffer) 31962306a36Sopenharmony_ci __field(int, bufsize) 32062306a36Sopenharmony_ci __field(int, count) 32162306a36Sopenharmony_ci __field(int, firstu) 32262306a36Sopenharmony_ci __field(int, dupcnt) 32362306a36Sopenharmony_ci __field(unsigned int, attr_filter) 32462306a36Sopenharmony_ci __field(u32, bt_hashval) 32562306a36Sopenharmony_ci __field(u32, bt_before) 32662306a36Sopenharmony_ci ), 32762306a36Sopenharmony_ci TP_fast_assign( 32862306a36Sopenharmony_ci __entry->dev = VFS_I(ctx->dp)->i_sb->s_dev; 32962306a36Sopenharmony_ci __entry->ino = ctx->dp->i_ino; 33062306a36Sopenharmony_ci __entry->hashval = ctx->cursor.hashval; 33162306a36Sopenharmony_ci __entry->blkno = ctx->cursor.blkno; 33262306a36Sopenharmony_ci __entry->offset = ctx->cursor.offset; 33362306a36Sopenharmony_ci __entry->buffer = ctx->buffer; 33462306a36Sopenharmony_ci __entry->bufsize = ctx->bufsize; 33562306a36Sopenharmony_ci __entry->count = ctx->count; 33662306a36Sopenharmony_ci __entry->firstu = ctx->firstu; 33762306a36Sopenharmony_ci __entry->attr_filter = ctx->attr_filter; 33862306a36Sopenharmony_ci __entry->bt_hashval = be32_to_cpu(btree->hashval); 33962306a36Sopenharmony_ci __entry->bt_before = be32_to_cpu(btree->before); 34062306a36Sopenharmony_ci ), 34162306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx cursor h/b/o 0x%x/0x%x/%u dupcnt %u " 34262306a36Sopenharmony_ci "buffer %p size %u count %u firstu %u filter %s " 34362306a36Sopenharmony_ci "node hashval %u, node before %u", 34462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 34562306a36Sopenharmony_ci __entry->ino, 34662306a36Sopenharmony_ci __entry->hashval, 34762306a36Sopenharmony_ci __entry->blkno, 34862306a36Sopenharmony_ci __entry->offset, 34962306a36Sopenharmony_ci __entry->dupcnt, 35062306a36Sopenharmony_ci __entry->buffer, 35162306a36Sopenharmony_ci __entry->bufsize, 35262306a36Sopenharmony_ci __entry->count, 35362306a36Sopenharmony_ci __entry->firstu, 35462306a36Sopenharmony_ci __print_flags(__entry->attr_filter, "|", 35562306a36Sopenharmony_ci XFS_ATTR_FILTER_FLAGS), 35662306a36Sopenharmony_ci __entry->bt_hashval, 35762306a36Sopenharmony_ci __entry->bt_before) 35862306a36Sopenharmony_ci); 35962306a36Sopenharmony_ci 36062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_bmap_class, 36162306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, struct xfs_iext_cursor *cur, int state, 36262306a36Sopenharmony_ci unsigned long caller_ip), 36362306a36Sopenharmony_ci TP_ARGS(ip, cur, state, caller_ip), 36462306a36Sopenharmony_ci TP_STRUCT__entry( 36562306a36Sopenharmony_ci __field(dev_t, dev) 36662306a36Sopenharmony_ci __field(xfs_ino_t, ino) 36762306a36Sopenharmony_ci __field(void *, leaf) 36862306a36Sopenharmony_ci __field(int, pos) 36962306a36Sopenharmony_ci __field(xfs_fileoff_t, startoff) 37062306a36Sopenharmony_ci __field(xfs_fsblock_t, startblock) 37162306a36Sopenharmony_ci __field(xfs_filblks_t, blockcount) 37262306a36Sopenharmony_ci __field(xfs_exntst_t, state) 37362306a36Sopenharmony_ci __field(int, bmap_state) 37462306a36Sopenharmony_ci __field(unsigned long, caller_ip) 37562306a36Sopenharmony_ci ), 37662306a36Sopenharmony_ci TP_fast_assign( 37762306a36Sopenharmony_ci struct xfs_ifork *ifp; 37862306a36Sopenharmony_ci struct xfs_bmbt_irec r; 37962306a36Sopenharmony_ci 38062306a36Sopenharmony_ci ifp = xfs_iext_state_to_fork(ip, state); 38162306a36Sopenharmony_ci xfs_iext_get_extent(ifp, cur, &r); 38262306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 38362306a36Sopenharmony_ci __entry->ino = ip->i_ino; 38462306a36Sopenharmony_ci __entry->leaf = cur->leaf; 38562306a36Sopenharmony_ci __entry->pos = cur->pos; 38662306a36Sopenharmony_ci __entry->startoff = r.br_startoff; 38762306a36Sopenharmony_ci __entry->startblock = r.br_startblock; 38862306a36Sopenharmony_ci __entry->blockcount = r.br_blockcount; 38962306a36Sopenharmony_ci __entry->state = r.br_state; 39062306a36Sopenharmony_ci __entry->bmap_state = state; 39162306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 39262306a36Sopenharmony_ci ), 39362306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx state %s cur %p/%d " 39462306a36Sopenharmony_ci "fileoff 0x%llx startblock 0x%llx fsbcount 0x%llx flag %d caller %pS", 39562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 39662306a36Sopenharmony_ci __entry->ino, 39762306a36Sopenharmony_ci __print_flags(__entry->bmap_state, "|", XFS_BMAP_EXT_FLAGS), 39862306a36Sopenharmony_ci __entry->leaf, 39962306a36Sopenharmony_ci __entry->pos, 40062306a36Sopenharmony_ci __entry->startoff, 40162306a36Sopenharmony_ci (int64_t)__entry->startblock, 40262306a36Sopenharmony_ci __entry->blockcount, 40362306a36Sopenharmony_ci __entry->state, 40462306a36Sopenharmony_ci (char *)__entry->caller_ip) 40562306a36Sopenharmony_ci) 40662306a36Sopenharmony_ci 40762306a36Sopenharmony_ci#define DEFINE_BMAP_EVENT(name) \ 40862306a36Sopenharmony_ciDEFINE_EVENT(xfs_bmap_class, name, \ 40962306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, struct xfs_iext_cursor *cur, int state, \ 41062306a36Sopenharmony_ci unsigned long caller_ip), \ 41162306a36Sopenharmony_ci TP_ARGS(ip, cur, state, caller_ip)) 41262306a36Sopenharmony_ciDEFINE_BMAP_EVENT(xfs_iext_insert); 41362306a36Sopenharmony_ciDEFINE_BMAP_EVENT(xfs_iext_remove); 41462306a36Sopenharmony_ciDEFINE_BMAP_EVENT(xfs_bmap_pre_update); 41562306a36Sopenharmony_ciDEFINE_BMAP_EVENT(xfs_bmap_post_update); 41662306a36Sopenharmony_ciDEFINE_BMAP_EVENT(xfs_read_extent); 41762306a36Sopenharmony_ciDEFINE_BMAP_EVENT(xfs_write_extent); 41862306a36Sopenharmony_ci 41962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_buf_class, 42062306a36Sopenharmony_ci TP_PROTO(struct xfs_buf *bp, unsigned long caller_ip), 42162306a36Sopenharmony_ci TP_ARGS(bp, caller_ip), 42262306a36Sopenharmony_ci TP_STRUCT__entry( 42362306a36Sopenharmony_ci __field(dev_t, dev) 42462306a36Sopenharmony_ci __field(xfs_daddr_t, bno) 42562306a36Sopenharmony_ci __field(int, nblks) 42662306a36Sopenharmony_ci __field(int, hold) 42762306a36Sopenharmony_ci __field(int, pincount) 42862306a36Sopenharmony_ci __field(unsigned, lockval) 42962306a36Sopenharmony_ci __field(unsigned, flags) 43062306a36Sopenharmony_ci __field(unsigned long, caller_ip) 43162306a36Sopenharmony_ci __field(const void *, buf_ops) 43262306a36Sopenharmony_ci ), 43362306a36Sopenharmony_ci TP_fast_assign( 43462306a36Sopenharmony_ci __entry->dev = bp->b_target->bt_dev; 43562306a36Sopenharmony_ci __entry->bno = xfs_buf_daddr(bp); 43662306a36Sopenharmony_ci __entry->nblks = bp->b_length; 43762306a36Sopenharmony_ci __entry->hold = atomic_read(&bp->b_hold); 43862306a36Sopenharmony_ci __entry->pincount = atomic_read(&bp->b_pin_count); 43962306a36Sopenharmony_ci __entry->lockval = bp->b_sema.count; 44062306a36Sopenharmony_ci __entry->flags = bp->b_flags; 44162306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 44262306a36Sopenharmony_ci __entry->buf_ops = bp->b_ops; 44362306a36Sopenharmony_ci ), 44462306a36Sopenharmony_ci TP_printk("dev %d:%d daddr 0x%llx bbcount 0x%x hold %d pincount %d " 44562306a36Sopenharmony_ci "lock %d flags %s bufops %pS caller %pS", 44662306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 44762306a36Sopenharmony_ci (unsigned long long)__entry->bno, 44862306a36Sopenharmony_ci __entry->nblks, 44962306a36Sopenharmony_ci __entry->hold, 45062306a36Sopenharmony_ci __entry->pincount, 45162306a36Sopenharmony_ci __entry->lockval, 45262306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XFS_BUF_FLAGS), 45362306a36Sopenharmony_ci __entry->buf_ops, 45462306a36Sopenharmony_ci (void *)__entry->caller_ip) 45562306a36Sopenharmony_ci) 45662306a36Sopenharmony_ci 45762306a36Sopenharmony_ci#define DEFINE_BUF_EVENT(name) \ 45862306a36Sopenharmony_ciDEFINE_EVENT(xfs_buf_class, name, \ 45962306a36Sopenharmony_ci TP_PROTO(struct xfs_buf *bp, unsigned long caller_ip), \ 46062306a36Sopenharmony_ci TP_ARGS(bp, caller_ip)) 46162306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_init); 46262306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_free); 46362306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_hold); 46462306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_rele); 46562306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_iodone); 46662306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_submit); 46762306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_lock); 46862306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_lock_done); 46962306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_trylock_fail); 47062306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_trylock); 47162306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_unlock); 47262306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_iowait); 47362306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_iowait_done); 47462306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_delwri_queue); 47562306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_delwri_queued); 47662306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_delwri_split); 47762306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_delwri_pushbuf); 47862306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_get_uncached); 47962306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_item_relse); 48062306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_iodone_async); 48162306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_error_relse); 48262306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_buf_drain_buftarg); 48362306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_trans_read_buf_shut); 48462306a36Sopenharmony_ci 48562306a36Sopenharmony_ci/* not really buffer traces, but the buf provides useful information */ 48662306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_btree_corrupt); 48762306a36Sopenharmony_ciDEFINE_BUF_EVENT(xfs_reset_dqcounts); 48862306a36Sopenharmony_ci 48962306a36Sopenharmony_ci/* pass flags explicitly */ 49062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_buf_flags_class, 49162306a36Sopenharmony_ci TP_PROTO(struct xfs_buf *bp, unsigned flags, unsigned long caller_ip), 49262306a36Sopenharmony_ci TP_ARGS(bp, flags, caller_ip), 49362306a36Sopenharmony_ci TP_STRUCT__entry( 49462306a36Sopenharmony_ci __field(dev_t, dev) 49562306a36Sopenharmony_ci __field(xfs_daddr_t, bno) 49662306a36Sopenharmony_ci __field(unsigned int, length) 49762306a36Sopenharmony_ci __field(int, hold) 49862306a36Sopenharmony_ci __field(int, pincount) 49962306a36Sopenharmony_ci __field(unsigned, lockval) 50062306a36Sopenharmony_ci __field(unsigned, flags) 50162306a36Sopenharmony_ci __field(unsigned long, caller_ip) 50262306a36Sopenharmony_ci ), 50362306a36Sopenharmony_ci TP_fast_assign( 50462306a36Sopenharmony_ci __entry->dev = bp->b_target->bt_dev; 50562306a36Sopenharmony_ci __entry->bno = xfs_buf_daddr(bp); 50662306a36Sopenharmony_ci __entry->length = bp->b_length; 50762306a36Sopenharmony_ci __entry->flags = flags; 50862306a36Sopenharmony_ci __entry->hold = atomic_read(&bp->b_hold); 50962306a36Sopenharmony_ci __entry->pincount = atomic_read(&bp->b_pin_count); 51062306a36Sopenharmony_ci __entry->lockval = bp->b_sema.count; 51162306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 51262306a36Sopenharmony_ci ), 51362306a36Sopenharmony_ci TP_printk("dev %d:%d daddr 0x%llx bbcount 0x%x hold %d pincount %d " 51462306a36Sopenharmony_ci "lock %d flags %s caller %pS", 51562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 51662306a36Sopenharmony_ci (unsigned long long)__entry->bno, 51762306a36Sopenharmony_ci __entry->length, 51862306a36Sopenharmony_ci __entry->hold, 51962306a36Sopenharmony_ci __entry->pincount, 52062306a36Sopenharmony_ci __entry->lockval, 52162306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XFS_BUF_FLAGS), 52262306a36Sopenharmony_ci (void *)__entry->caller_ip) 52362306a36Sopenharmony_ci) 52462306a36Sopenharmony_ci 52562306a36Sopenharmony_ci#define DEFINE_BUF_FLAGS_EVENT(name) \ 52662306a36Sopenharmony_ciDEFINE_EVENT(xfs_buf_flags_class, name, \ 52762306a36Sopenharmony_ci TP_PROTO(struct xfs_buf *bp, unsigned flags, unsigned long caller_ip), \ 52862306a36Sopenharmony_ci TP_ARGS(bp, flags, caller_ip)) 52962306a36Sopenharmony_ciDEFINE_BUF_FLAGS_EVENT(xfs_buf_find); 53062306a36Sopenharmony_ciDEFINE_BUF_FLAGS_EVENT(xfs_buf_get); 53162306a36Sopenharmony_ciDEFINE_BUF_FLAGS_EVENT(xfs_buf_read); 53262306a36Sopenharmony_ci 53362306a36Sopenharmony_ciTRACE_EVENT(xfs_buf_ioerror, 53462306a36Sopenharmony_ci TP_PROTO(struct xfs_buf *bp, int error, xfs_failaddr_t caller_ip), 53562306a36Sopenharmony_ci TP_ARGS(bp, error, caller_ip), 53662306a36Sopenharmony_ci TP_STRUCT__entry( 53762306a36Sopenharmony_ci __field(dev_t, dev) 53862306a36Sopenharmony_ci __field(xfs_daddr_t, bno) 53962306a36Sopenharmony_ci __field(unsigned int, length) 54062306a36Sopenharmony_ci __field(unsigned, flags) 54162306a36Sopenharmony_ci __field(int, hold) 54262306a36Sopenharmony_ci __field(int, pincount) 54362306a36Sopenharmony_ci __field(unsigned, lockval) 54462306a36Sopenharmony_ci __field(int, error) 54562306a36Sopenharmony_ci __field(xfs_failaddr_t, caller_ip) 54662306a36Sopenharmony_ci ), 54762306a36Sopenharmony_ci TP_fast_assign( 54862306a36Sopenharmony_ci __entry->dev = bp->b_target->bt_dev; 54962306a36Sopenharmony_ci __entry->bno = xfs_buf_daddr(bp); 55062306a36Sopenharmony_ci __entry->length = bp->b_length; 55162306a36Sopenharmony_ci __entry->hold = atomic_read(&bp->b_hold); 55262306a36Sopenharmony_ci __entry->pincount = atomic_read(&bp->b_pin_count); 55362306a36Sopenharmony_ci __entry->lockval = bp->b_sema.count; 55462306a36Sopenharmony_ci __entry->error = error; 55562306a36Sopenharmony_ci __entry->flags = bp->b_flags; 55662306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 55762306a36Sopenharmony_ci ), 55862306a36Sopenharmony_ci TP_printk("dev %d:%d daddr 0x%llx bbcount 0x%x hold %d pincount %d " 55962306a36Sopenharmony_ci "lock %d error %d flags %s caller %pS", 56062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 56162306a36Sopenharmony_ci (unsigned long long)__entry->bno, 56262306a36Sopenharmony_ci __entry->length, 56362306a36Sopenharmony_ci __entry->hold, 56462306a36Sopenharmony_ci __entry->pincount, 56562306a36Sopenharmony_ci __entry->lockval, 56662306a36Sopenharmony_ci __entry->error, 56762306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XFS_BUF_FLAGS), 56862306a36Sopenharmony_ci (void *)__entry->caller_ip) 56962306a36Sopenharmony_ci); 57062306a36Sopenharmony_ci 57162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_buf_item_class, 57262306a36Sopenharmony_ci TP_PROTO(struct xfs_buf_log_item *bip), 57362306a36Sopenharmony_ci TP_ARGS(bip), 57462306a36Sopenharmony_ci TP_STRUCT__entry( 57562306a36Sopenharmony_ci __field(dev_t, dev) 57662306a36Sopenharmony_ci __field(xfs_daddr_t, buf_bno) 57762306a36Sopenharmony_ci __field(unsigned int, buf_len) 57862306a36Sopenharmony_ci __field(int, buf_hold) 57962306a36Sopenharmony_ci __field(int, buf_pincount) 58062306a36Sopenharmony_ci __field(int, buf_lockval) 58162306a36Sopenharmony_ci __field(unsigned, buf_flags) 58262306a36Sopenharmony_ci __field(unsigned, bli_recur) 58362306a36Sopenharmony_ci __field(int, bli_refcount) 58462306a36Sopenharmony_ci __field(unsigned, bli_flags) 58562306a36Sopenharmony_ci __field(unsigned long, li_flags) 58662306a36Sopenharmony_ci ), 58762306a36Sopenharmony_ci TP_fast_assign( 58862306a36Sopenharmony_ci __entry->dev = bip->bli_buf->b_target->bt_dev; 58962306a36Sopenharmony_ci __entry->bli_flags = bip->bli_flags; 59062306a36Sopenharmony_ci __entry->bli_recur = bip->bli_recur; 59162306a36Sopenharmony_ci __entry->bli_refcount = atomic_read(&bip->bli_refcount); 59262306a36Sopenharmony_ci __entry->buf_bno = xfs_buf_daddr(bip->bli_buf); 59362306a36Sopenharmony_ci __entry->buf_len = bip->bli_buf->b_length; 59462306a36Sopenharmony_ci __entry->buf_flags = bip->bli_buf->b_flags; 59562306a36Sopenharmony_ci __entry->buf_hold = atomic_read(&bip->bli_buf->b_hold); 59662306a36Sopenharmony_ci __entry->buf_pincount = atomic_read(&bip->bli_buf->b_pin_count); 59762306a36Sopenharmony_ci __entry->buf_lockval = bip->bli_buf->b_sema.count; 59862306a36Sopenharmony_ci __entry->li_flags = bip->bli_item.li_flags; 59962306a36Sopenharmony_ci ), 60062306a36Sopenharmony_ci TP_printk("dev %d:%d daddr 0x%llx bbcount 0x%x hold %d pincount %d " 60162306a36Sopenharmony_ci "lock %d flags %s recur %d refcount %d bliflags %s " 60262306a36Sopenharmony_ci "liflags %s", 60362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 60462306a36Sopenharmony_ci (unsigned long long)__entry->buf_bno, 60562306a36Sopenharmony_ci __entry->buf_len, 60662306a36Sopenharmony_ci __entry->buf_hold, 60762306a36Sopenharmony_ci __entry->buf_pincount, 60862306a36Sopenharmony_ci __entry->buf_lockval, 60962306a36Sopenharmony_ci __print_flags(__entry->buf_flags, "|", XFS_BUF_FLAGS), 61062306a36Sopenharmony_ci __entry->bli_recur, 61162306a36Sopenharmony_ci __entry->bli_refcount, 61262306a36Sopenharmony_ci __print_flags(__entry->bli_flags, "|", XFS_BLI_FLAGS), 61362306a36Sopenharmony_ci __print_flags(__entry->li_flags, "|", XFS_LI_FLAGS)) 61462306a36Sopenharmony_ci) 61562306a36Sopenharmony_ci 61662306a36Sopenharmony_ci#define DEFINE_BUF_ITEM_EVENT(name) \ 61762306a36Sopenharmony_ciDEFINE_EVENT(xfs_buf_item_class, name, \ 61862306a36Sopenharmony_ci TP_PROTO(struct xfs_buf_log_item *bip), \ 61962306a36Sopenharmony_ci TP_ARGS(bip)) 62062306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_buf_item_size); 62162306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_buf_item_size_ordered); 62262306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_buf_item_size_stale); 62362306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_buf_item_format); 62462306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_buf_item_format_stale); 62562306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_buf_item_ordered); 62662306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_buf_item_pin); 62762306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_buf_item_unpin); 62862306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_buf_item_unpin_stale); 62962306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_buf_item_release); 63062306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_buf_item_committed); 63162306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_buf_item_push); 63262306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf); 63362306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_trans_get_buf_recur); 63462306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_trans_getsb); 63562306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_trans_getsb_recur); 63662306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_trans_read_buf); 63762306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_trans_read_buf_recur); 63862306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_trans_log_buf); 63962306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_trans_brelse); 64062306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_trans_bjoin); 64162306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_trans_bhold); 64262306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_trans_bhold_release); 64362306a36Sopenharmony_ciDEFINE_BUF_ITEM_EVENT(xfs_trans_binval); 64462306a36Sopenharmony_ci 64562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_filestream_class, 64662306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, xfs_ino_t ino), 64762306a36Sopenharmony_ci TP_ARGS(pag, ino), 64862306a36Sopenharmony_ci TP_STRUCT__entry( 64962306a36Sopenharmony_ci __field(dev_t, dev) 65062306a36Sopenharmony_ci __field(xfs_ino_t, ino) 65162306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 65262306a36Sopenharmony_ci __field(int, streams) 65362306a36Sopenharmony_ci ), 65462306a36Sopenharmony_ci TP_fast_assign( 65562306a36Sopenharmony_ci __entry->dev = pag->pag_mount->m_super->s_dev; 65662306a36Sopenharmony_ci __entry->ino = ino; 65762306a36Sopenharmony_ci __entry->agno = pag->pag_agno; 65862306a36Sopenharmony_ci __entry->streams = atomic_read(&pag->pagf_fstrms); 65962306a36Sopenharmony_ci ), 66062306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx agno 0x%x streams %d", 66162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 66262306a36Sopenharmony_ci __entry->ino, 66362306a36Sopenharmony_ci __entry->agno, 66462306a36Sopenharmony_ci __entry->streams) 66562306a36Sopenharmony_ci) 66662306a36Sopenharmony_ci#define DEFINE_FILESTREAM_EVENT(name) \ 66762306a36Sopenharmony_ciDEFINE_EVENT(xfs_filestream_class, name, \ 66862306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, xfs_ino_t ino), \ 66962306a36Sopenharmony_ci TP_ARGS(pag, ino)) 67062306a36Sopenharmony_ciDEFINE_FILESTREAM_EVENT(xfs_filestream_free); 67162306a36Sopenharmony_ciDEFINE_FILESTREAM_EVENT(xfs_filestream_lookup); 67262306a36Sopenharmony_ciDEFINE_FILESTREAM_EVENT(xfs_filestream_scan); 67362306a36Sopenharmony_ci 67462306a36Sopenharmony_ciTRACE_EVENT(xfs_filestream_pick, 67562306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, xfs_ino_t ino, xfs_extlen_t free), 67662306a36Sopenharmony_ci TP_ARGS(pag, ino, free), 67762306a36Sopenharmony_ci TP_STRUCT__entry( 67862306a36Sopenharmony_ci __field(dev_t, dev) 67962306a36Sopenharmony_ci __field(xfs_ino_t, ino) 68062306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 68162306a36Sopenharmony_ci __field(int, streams) 68262306a36Sopenharmony_ci __field(xfs_extlen_t, free) 68362306a36Sopenharmony_ci ), 68462306a36Sopenharmony_ci TP_fast_assign( 68562306a36Sopenharmony_ci __entry->dev = pag->pag_mount->m_super->s_dev; 68662306a36Sopenharmony_ci __entry->ino = ino; 68762306a36Sopenharmony_ci if (pag) { 68862306a36Sopenharmony_ci __entry->agno = pag->pag_agno; 68962306a36Sopenharmony_ci __entry->streams = atomic_read(&pag->pagf_fstrms); 69062306a36Sopenharmony_ci } else { 69162306a36Sopenharmony_ci __entry->agno = NULLAGNUMBER; 69262306a36Sopenharmony_ci __entry->streams = 0; 69362306a36Sopenharmony_ci } 69462306a36Sopenharmony_ci __entry->free = free; 69562306a36Sopenharmony_ci ), 69662306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx agno 0x%x streams %d free %d", 69762306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 69862306a36Sopenharmony_ci __entry->ino, 69962306a36Sopenharmony_ci __entry->agno, 70062306a36Sopenharmony_ci __entry->streams, 70162306a36Sopenharmony_ci __entry->free) 70262306a36Sopenharmony_ci); 70362306a36Sopenharmony_ci 70462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_lock_class, 70562306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, unsigned lock_flags, 70662306a36Sopenharmony_ci unsigned long caller_ip), 70762306a36Sopenharmony_ci TP_ARGS(ip, lock_flags, caller_ip), 70862306a36Sopenharmony_ci TP_STRUCT__entry( 70962306a36Sopenharmony_ci __field(dev_t, dev) 71062306a36Sopenharmony_ci __field(xfs_ino_t, ino) 71162306a36Sopenharmony_ci __field(int, lock_flags) 71262306a36Sopenharmony_ci __field(unsigned long, caller_ip) 71362306a36Sopenharmony_ci ), 71462306a36Sopenharmony_ci TP_fast_assign( 71562306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 71662306a36Sopenharmony_ci __entry->ino = ip->i_ino; 71762306a36Sopenharmony_ci __entry->lock_flags = lock_flags; 71862306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 71962306a36Sopenharmony_ci ), 72062306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx flags %s caller %pS", 72162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 72262306a36Sopenharmony_ci __entry->ino, 72362306a36Sopenharmony_ci __print_flags(__entry->lock_flags, "|", XFS_LOCK_FLAGS), 72462306a36Sopenharmony_ci (void *)__entry->caller_ip) 72562306a36Sopenharmony_ci) 72662306a36Sopenharmony_ci 72762306a36Sopenharmony_ci#define DEFINE_LOCK_EVENT(name) \ 72862306a36Sopenharmony_ciDEFINE_EVENT(xfs_lock_class, name, \ 72962306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, unsigned lock_flags, \ 73062306a36Sopenharmony_ci unsigned long caller_ip), \ 73162306a36Sopenharmony_ci TP_ARGS(ip, lock_flags, caller_ip)) 73262306a36Sopenharmony_ciDEFINE_LOCK_EVENT(xfs_ilock); 73362306a36Sopenharmony_ciDEFINE_LOCK_EVENT(xfs_ilock_nowait); 73462306a36Sopenharmony_ciDEFINE_LOCK_EVENT(xfs_ilock_demote); 73562306a36Sopenharmony_ciDEFINE_LOCK_EVENT(xfs_iunlock); 73662306a36Sopenharmony_ci 73762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_inode_class, 73862306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip), 73962306a36Sopenharmony_ci TP_ARGS(ip), 74062306a36Sopenharmony_ci TP_STRUCT__entry( 74162306a36Sopenharmony_ci __field(dev_t, dev) 74262306a36Sopenharmony_ci __field(xfs_ino_t, ino) 74362306a36Sopenharmony_ci __field(unsigned long, iflags) 74462306a36Sopenharmony_ci ), 74562306a36Sopenharmony_ci TP_fast_assign( 74662306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 74762306a36Sopenharmony_ci __entry->ino = ip->i_ino; 74862306a36Sopenharmony_ci __entry->iflags = ip->i_flags; 74962306a36Sopenharmony_ci ), 75062306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx iflags 0x%lx", 75162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 75262306a36Sopenharmony_ci __entry->ino, 75362306a36Sopenharmony_ci __entry->iflags) 75462306a36Sopenharmony_ci) 75562306a36Sopenharmony_ci 75662306a36Sopenharmony_ci#define DEFINE_INODE_EVENT(name) \ 75762306a36Sopenharmony_ciDEFINE_EVENT(xfs_inode_class, name, \ 75862306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip), \ 75962306a36Sopenharmony_ci TP_ARGS(ip)) 76062306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_iget_skip); 76162306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_iget_recycle); 76262306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_iget_recycle_fail); 76362306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_iget_hit); 76462306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_iget_miss); 76562306a36Sopenharmony_ci 76662306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_getattr); 76762306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_setattr); 76862306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_readlink); 76962306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_inactive_symlink); 77062306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_alloc_file_space); 77162306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_free_file_space); 77262306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_zero_file_space); 77362306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_collapse_file_space); 77462306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_insert_file_space); 77562306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_readdir); 77662306a36Sopenharmony_ci#ifdef CONFIG_XFS_POSIX_ACL 77762306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_get_acl); 77862306a36Sopenharmony_ci#endif 77962306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_vm_bmap); 78062306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_file_ioctl); 78162306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_file_compat_ioctl); 78262306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_ioctl_setattr); 78362306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_dir_fsync); 78462306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_file_fsync); 78562306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_destroy_inode); 78662306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_update_time); 78762306a36Sopenharmony_ci 78862306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_dquot_dqalloc); 78962306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_dquot_dqdetach); 79062306a36Sopenharmony_ci 79162306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_inode_set_eofblocks_tag); 79262306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_inode_clear_eofblocks_tag); 79362306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_inode_free_eofblocks_invalid); 79462306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_inode_set_cowblocks_tag); 79562306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_inode_clear_cowblocks_tag); 79662306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_inode_free_cowblocks_invalid); 79762306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_inode_set_reclaimable); 79862306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_inode_reclaiming); 79962306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_inode_set_need_inactive); 80062306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_inode_inactivating); 80162306a36Sopenharmony_ci 80262306a36Sopenharmony_ci/* 80362306a36Sopenharmony_ci * ftrace's __print_symbolic requires that all enum values be wrapped in the 80462306a36Sopenharmony_ci * TRACE_DEFINE_ENUM macro so that the enum value can be encoded in the ftrace 80562306a36Sopenharmony_ci * ring buffer. Somehow this was only worth mentioning in the ftrace sample 80662306a36Sopenharmony_ci * code. 80762306a36Sopenharmony_ci */ 80862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_REFC_DOMAIN_SHARED); 80962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_REFC_DOMAIN_COW); 81062306a36Sopenharmony_ci 81162306a36Sopenharmony_ciTRACE_EVENT(xfs_filemap_fault, 81262306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, unsigned int order, bool write_fault), 81362306a36Sopenharmony_ci TP_ARGS(ip, order, write_fault), 81462306a36Sopenharmony_ci TP_STRUCT__entry( 81562306a36Sopenharmony_ci __field(dev_t, dev) 81662306a36Sopenharmony_ci __field(xfs_ino_t, ino) 81762306a36Sopenharmony_ci __field(unsigned int, order) 81862306a36Sopenharmony_ci __field(bool, write_fault) 81962306a36Sopenharmony_ci ), 82062306a36Sopenharmony_ci TP_fast_assign( 82162306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 82262306a36Sopenharmony_ci __entry->ino = ip->i_ino; 82362306a36Sopenharmony_ci __entry->order = order; 82462306a36Sopenharmony_ci __entry->write_fault = write_fault; 82562306a36Sopenharmony_ci ), 82662306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx order %u write_fault %d", 82762306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 82862306a36Sopenharmony_ci __entry->ino, 82962306a36Sopenharmony_ci __entry->order, 83062306a36Sopenharmony_ci __entry->write_fault) 83162306a36Sopenharmony_ci) 83262306a36Sopenharmony_ci 83362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_iref_class, 83462306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip), 83562306a36Sopenharmony_ci TP_ARGS(ip, caller_ip), 83662306a36Sopenharmony_ci TP_STRUCT__entry( 83762306a36Sopenharmony_ci __field(dev_t, dev) 83862306a36Sopenharmony_ci __field(xfs_ino_t, ino) 83962306a36Sopenharmony_ci __field(int, count) 84062306a36Sopenharmony_ci __field(int, pincount) 84162306a36Sopenharmony_ci __field(unsigned long, caller_ip) 84262306a36Sopenharmony_ci ), 84362306a36Sopenharmony_ci TP_fast_assign( 84462306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 84562306a36Sopenharmony_ci __entry->ino = ip->i_ino; 84662306a36Sopenharmony_ci __entry->count = atomic_read(&VFS_I(ip)->i_count); 84762306a36Sopenharmony_ci __entry->pincount = atomic_read(&ip->i_pincount); 84862306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 84962306a36Sopenharmony_ci ), 85062306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx count %d pincount %d caller %pS", 85162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 85262306a36Sopenharmony_ci __entry->ino, 85362306a36Sopenharmony_ci __entry->count, 85462306a36Sopenharmony_ci __entry->pincount, 85562306a36Sopenharmony_ci (char *)__entry->caller_ip) 85662306a36Sopenharmony_ci) 85762306a36Sopenharmony_ci 85862306a36Sopenharmony_ciTRACE_EVENT(xfs_iomap_prealloc_size, 85962306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, xfs_fsblock_t blocks, int shift, 86062306a36Sopenharmony_ci unsigned int writeio_blocks), 86162306a36Sopenharmony_ci TP_ARGS(ip, blocks, shift, writeio_blocks), 86262306a36Sopenharmony_ci TP_STRUCT__entry( 86362306a36Sopenharmony_ci __field(dev_t, dev) 86462306a36Sopenharmony_ci __field(xfs_ino_t, ino) 86562306a36Sopenharmony_ci __field(xfs_fsblock_t, blocks) 86662306a36Sopenharmony_ci __field(int, shift) 86762306a36Sopenharmony_ci __field(unsigned int, writeio_blocks) 86862306a36Sopenharmony_ci ), 86962306a36Sopenharmony_ci TP_fast_assign( 87062306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 87162306a36Sopenharmony_ci __entry->ino = ip->i_ino; 87262306a36Sopenharmony_ci __entry->blocks = blocks; 87362306a36Sopenharmony_ci __entry->shift = shift; 87462306a36Sopenharmony_ci __entry->writeio_blocks = writeio_blocks; 87562306a36Sopenharmony_ci ), 87662306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx prealloc blocks %llu shift %d " 87762306a36Sopenharmony_ci "m_allocsize_blocks %u", 87862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), __entry->ino, 87962306a36Sopenharmony_ci __entry->blocks, __entry->shift, __entry->writeio_blocks) 88062306a36Sopenharmony_ci) 88162306a36Sopenharmony_ci 88262306a36Sopenharmony_ciTRACE_EVENT(xfs_irec_merge_pre, 88362306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t agino, 88462306a36Sopenharmony_ci uint16_t holemask, xfs_agino_t nagino, uint16_t nholemask), 88562306a36Sopenharmony_ci TP_ARGS(mp, agno, agino, holemask, nagino, nholemask), 88662306a36Sopenharmony_ci TP_STRUCT__entry( 88762306a36Sopenharmony_ci __field(dev_t, dev) 88862306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 88962306a36Sopenharmony_ci __field(xfs_agino_t, agino) 89062306a36Sopenharmony_ci __field(uint16_t, holemask) 89162306a36Sopenharmony_ci __field(xfs_agino_t, nagino) 89262306a36Sopenharmony_ci __field(uint16_t, nholemask) 89362306a36Sopenharmony_ci ), 89462306a36Sopenharmony_ci TP_fast_assign( 89562306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 89662306a36Sopenharmony_ci __entry->agno = agno; 89762306a36Sopenharmony_ci __entry->agino = agino; 89862306a36Sopenharmony_ci __entry->holemask = holemask; 89962306a36Sopenharmony_ci __entry->nagino = nagino; 90062306a36Sopenharmony_ci __entry->nholemask = holemask; 90162306a36Sopenharmony_ci ), 90262306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agino 0x%x holemask 0x%x new_agino 0x%x new_holemask 0x%x", 90362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 90462306a36Sopenharmony_ci __entry->agno, 90562306a36Sopenharmony_ci __entry->agino, 90662306a36Sopenharmony_ci __entry->holemask, 90762306a36Sopenharmony_ci __entry->nagino, 90862306a36Sopenharmony_ci __entry->nholemask) 90962306a36Sopenharmony_ci) 91062306a36Sopenharmony_ci 91162306a36Sopenharmony_ciTRACE_EVENT(xfs_irec_merge_post, 91262306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t agino, 91362306a36Sopenharmony_ci uint16_t holemask), 91462306a36Sopenharmony_ci TP_ARGS(mp, agno, agino, holemask), 91562306a36Sopenharmony_ci TP_STRUCT__entry( 91662306a36Sopenharmony_ci __field(dev_t, dev) 91762306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 91862306a36Sopenharmony_ci __field(xfs_agino_t, agino) 91962306a36Sopenharmony_ci __field(uint16_t, holemask) 92062306a36Sopenharmony_ci ), 92162306a36Sopenharmony_ci TP_fast_assign( 92262306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 92362306a36Sopenharmony_ci __entry->agno = agno; 92462306a36Sopenharmony_ci __entry->agino = agino; 92562306a36Sopenharmony_ci __entry->holemask = holemask; 92662306a36Sopenharmony_ci ), 92762306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agino 0x%x holemask 0x%x", 92862306a36Sopenharmony_ci MAJOR(__entry->dev), 92962306a36Sopenharmony_ci MINOR(__entry->dev), 93062306a36Sopenharmony_ci __entry->agno, 93162306a36Sopenharmony_ci __entry->agino, 93262306a36Sopenharmony_ci __entry->holemask) 93362306a36Sopenharmony_ci) 93462306a36Sopenharmony_ci 93562306a36Sopenharmony_ci#define DEFINE_IREF_EVENT(name) \ 93662306a36Sopenharmony_ciDEFINE_EVENT(xfs_iref_class, name, \ 93762306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, unsigned long caller_ip), \ 93862306a36Sopenharmony_ci TP_ARGS(ip, caller_ip)) 93962306a36Sopenharmony_ciDEFINE_IREF_EVENT(xfs_irele); 94062306a36Sopenharmony_ciDEFINE_IREF_EVENT(xfs_inode_pin); 94162306a36Sopenharmony_ciDEFINE_IREF_EVENT(xfs_inode_unpin); 94262306a36Sopenharmony_ciDEFINE_IREF_EVENT(xfs_inode_unpin_nowait); 94362306a36Sopenharmony_ci 94462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_namespace_class, 94562306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *dp, const struct xfs_name *name), 94662306a36Sopenharmony_ci TP_ARGS(dp, name), 94762306a36Sopenharmony_ci TP_STRUCT__entry( 94862306a36Sopenharmony_ci __field(dev_t, dev) 94962306a36Sopenharmony_ci __field(xfs_ino_t, dp_ino) 95062306a36Sopenharmony_ci __field(int, namelen) 95162306a36Sopenharmony_ci __dynamic_array(char, name, name->len) 95262306a36Sopenharmony_ci ), 95362306a36Sopenharmony_ci TP_fast_assign( 95462306a36Sopenharmony_ci __entry->dev = VFS_I(dp)->i_sb->s_dev; 95562306a36Sopenharmony_ci __entry->dp_ino = dp->i_ino; 95662306a36Sopenharmony_ci __entry->namelen = name->len; 95762306a36Sopenharmony_ci memcpy(__get_str(name), name->name, name->len); 95862306a36Sopenharmony_ci ), 95962306a36Sopenharmony_ci TP_printk("dev %d:%d dp ino 0x%llx name %.*s", 96062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 96162306a36Sopenharmony_ci __entry->dp_ino, 96262306a36Sopenharmony_ci __entry->namelen, 96362306a36Sopenharmony_ci __get_str(name)) 96462306a36Sopenharmony_ci) 96562306a36Sopenharmony_ci 96662306a36Sopenharmony_ci#define DEFINE_NAMESPACE_EVENT(name) \ 96762306a36Sopenharmony_ciDEFINE_EVENT(xfs_namespace_class, name, \ 96862306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *dp, const struct xfs_name *name), \ 96962306a36Sopenharmony_ci TP_ARGS(dp, name)) 97062306a36Sopenharmony_ciDEFINE_NAMESPACE_EVENT(xfs_remove); 97162306a36Sopenharmony_ciDEFINE_NAMESPACE_EVENT(xfs_link); 97262306a36Sopenharmony_ciDEFINE_NAMESPACE_EVENT(xfs_lookup); 97362306a36Sopenharmony_ciDEFINE_NAMESPACE_EVENT(xfs_create); 97462306a36Sopenharmony_ciDEFINE_NAMESPACE_EVENT(xfs_symlink); 97562306a36Sopenharmony_ci 97662306a36Sopenharmony_ciTRACE_EVENT(xfs_rename, 97762306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *src_dp, struct xfs_inode *target_dp, 97862306a36Sopenharmony_ci struct xfs_name *src_name, struct xfs_name *target_name), 97962306a36Sopenharmony_ci TP_ARGS(src_dp, target_dp, src_name, target_name), 98062306a36Sopenharmony_ci TP_STRUCT__entry( 98162306a36Sopenharmony_ci __field(dev_t, dev) 98262306a36Sopenharmony_ci __field(xfs_ino_t, src_dp_ino) 98362306a36Sopenharmony_ci __field(xfs_ino_t, target_dp_ino) 98462306a36Sopenharmony_ci __field(int, src_namelen) 98562306a36Sopenharmony_ci __field(int, target_namelen) 98662306a36Sopenharmony_ci __dynamic_array(char, src_name, src_name->len) 98762306a36Sopenharmony_ci __dynamic_array(char, target_name, target_name->len) 98862306a36Sopenharmony_ci ), 98962306a36Sopenharmony_ci TP_fast_assign( 99062306a36Sopenharmony_ci __entry->dev = VFS_I(src_dp)->i_sb->s_dev; 99162306a36Sopenharmony_ci __entry->src_dp_ino = src_dp->i_ino; 99262306a36Sopenharmony_ci __entry->target_dp_ino = target_dp->i_ino; 99362306a36Sopenharmony_ci __entry->src_namelen = src_name->len; 99462306a36Sopenharmony_ci __entry->target_namelen = target_name->len; 99562306a36Sopenharmony_ci memcpy(__get_str(src_name), src_name->name, src_name->len); 99662306a36Sopenharmony_ci memcpy(__get_str(target_name), target_name->name, 99762306a36Sopenharmony_ci target_name->len); 99862306a36Sopenharmony_ci ), 99962306a36Sopenharmony_ci TP_printk("dev %d:%d src dp ino 0x%llx target dp ino 0x%llx" 100062306a36Sopenharmony_ci " src name %.*s target name %.*s", 100162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 100262306a36Sopenharmony_ci __entry->src_dp_ino, 100362306a36Sopenharmony_ci __entry->target_dp_ino, 100462306a36Sopenharmony_ci __entry->src_namelen, 100562306a36Sopenharmony_ci __get_str(src_name), 100662306a36Sopenharmony_ci __entry->target_namelen, 100762306a36Sopenharmony_ci __get_str(target_name)) 100862306a36Sopenharmony_ci) 100962306a36Sopenharmony_ci 101062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_dquot_class, 101162306a36Sopenharmony_ci TP_PROTO(struct xfs_dquot *dqp), 101262306a36Sopenharmony_ci TP_ARGS(dqp), 101362306a36Sopenharmony_ci TP_STRUCT__entry( 101462306a36Sopenharmony_ci __field(dev_t, dev) 101562306a36Sopenharmony_ci __field(u32, id) 101662306a36Sopenharmony_ci __field(xfs_dqtype_t, type) 101762306a36Sopenharmony_ci __field(unsigned, flags) 101862306a36Sopenharmony_ci __field(unsigned, nrefs) 101962306a36Sopenharmony_ci __field(unsigned long long, res_bcount) 102062306a36Sopenharmony_ci __field(unsigned long long, res_rtbcount) 102162306a36Sopenharmony_ci __field(unsigned long long, res_icount) 102262306a36Sopenharmony_ci 102362306a36Sopenharmony_ci __field(unsigned long long, bcount) 102462306a36Sopenharmony_ci __field(unsigned long long, rtbcount) 102562306a36Sopenharmony_ci __field(unsigned long long, icount) 102662306a36Sopenharmony_ci 102762306a36Sopenharmony_ci __field(unsigned long long, blk_hardlimit) 102862306a36Sopenharmony_ci __field(unsigned long long, blk_softlimit) 102962306a36Sopenharmony_ci __field(unsigned long long, rtb_hardlimit) 103062306a36Sopenharmony_ci __field(unsigned long long, rtb_softlimit) 103162306a36Sopenharmony_ci __field(unsigned long long, ino_hardlimit) 103262306a36Sopenharmony_ci __field(unsigned long long, ino_softlimit) 103362306a36Sopenharmony_ci ), 103462306a36Sopenharmony_ci TP_fast_assign( 103562306a36Sopenharmony_ci __entry->dev = dqp->q_mount->m_super->s_dev; 103662306a36Sopenharmony_ci __entry->id = dqp->q_id; 103762306a36Sopenharmony_ci __entry->type = dqp->q_type; 103862306a36Sopenharmony_ci __entry->flags = dqp->q_flags; 103962306a36Sopenharmony_ci __entry->nrefs = dqp->q_nrefs; 104062306a36Sopenharmony_ci 104162306a36Sopenharmony_ci __entry->res_bcount = dqp->q_blk.reserved; 104262306a36Sopenharmony_ci __entry->res_rtbcount = dqp->q_rtb.reserved; 104362306a36Sopenharmony_ci __entry->res_icount = dqp->q_ino.reserved; 104462306a36Sopenharmony_ci 104562306a36Sopenharmony_ci __entry->bcount = dqp->q_blk.count; 104662306a36Sopenharmony_ci __entry->rtbcount = dqp->q_rtb.count; 104762306a36Sopenharmony_ci __entry->icount = dqp->q_ino.count; 104862306a36Sopenharmony_ci 104962306a36Sopenharmony_ci __entry->blk_hardlimit = dqp->q_blk.hardlimit; 105062306a36Sopenharmony_ci __entry->blk_softlimit = dqp->q_blk.softlimit; 105162306a36Sopenharmony_ci __entry->rtb_hardlimit = dqp->q_rtb.hardlimit; 105262306a36Sopenharmony_ci __entry->rtb_softlimit = dqp->q_rtb.softlimit; 105362306a36Sopenharmony_ci __entry->ino_hardlimit = dqp->q_ino.hardlimit; 105462306a36Sopenharmony_ci __entry->ino_softlimit = dqp->q_ino.softlimit; 105562306a36Sopenharmony_ci ), 105662306a36Sopenharmony_ci TP_printk("dev %d:%d id 0x%x type %s flags %s nrefs %u " 105762306a36Sopenharmony_ci "res_bc 0x%llx res_rtbc 0x%llx res_ic 0x%llx " 105862306a36Sopenharmony_ci "bcnt 0x%llx bhardlimit 0x%llx bsoftlimit 0x%llx " 105962306a36Sopenharmony_ci "rtbcnt 0x%llx rtbhardlimit 0x%llx rtbsoftlimit 0x%llx " 106062306a36Sopenharmony_ci "icnt 0x%llx ihardlimit 0x%llx isoftlimit 0x%llx]", 106162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 106262306a36Sopenharmony_ci __entry->id, 106362306a36Sopenharmony_ci __print_flags(__entry->type, "|", XFS_DQTYPE_STRINGS), 106462306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XFS_DQFLAG_STRINGS), 106562306a36Sopenharmony_ci __entry->nrefs, 106662306a36Sopenharmony_ci __entry->res_bcount, 106762306a36Sopenharmony_ci __entry->res_rtbcount, 106862306a36Sopenharmony_ci __entry->res_icount, 106962306a36Sopenharmony_ci __entry->bcount, 107062306a36Sopenharmony_ci __entry->blk_hardlimit, 107162306a36Sopenharmony_ci __entry->blk_softlimit, 107262306a36Sopenharmony_ci __entry->rtbcount, 107362306a36Sopenharmony_ci __entry->rtb_hardlimit, 107462306a36Sopenharmony_ci __entry->rtb_softlimit, 107562306a36Sopenharmony_ci __entry->icount, 107662306a36Sopenharmony_ci __entry->ino_hardlimit, 107762306a36Sopenharmony_ci __entry->ino_softlimit) 107862306a36Sopenharmony_ci) 107962306a36Sopenharmony_ci 108062306a36Sopenharmony_ci#define DEFINE_DQUOT_EVENT(name) \ 108162306a36Sopenharmony_ciDEFINE_EVENT(xfs_dquot_class, name, \ 108262306a36Sopenharmony_ci TP_PROTO(struct xfs_dquot *dqp), \ 108362306a36Sopenharmony_ci TP_ARGS(dqp)) 108462306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqadjust); 108562306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqreclaim_want); 108662306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqreclaim_dirty); 108762306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqreclaim_busy); 108862306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqreclaim_done); 108962306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqattach_found); 109062306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqattach_get); 109162306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqalloc); 109262306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqtobp_read); 109362306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqread); 109462306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqread_fail); 109562306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqget_hit); 109662306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqget_miss); 109762306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqget_freeing); 109862306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqget_dup); 109962306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqput); 110062306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqput_free); 110162306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqrele); 110262306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqflush); 110362306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqflush_force); 110462306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_dqflush_done); 110562306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_trans_apply_dquot_deltas_before); 110662306a36Sopenharmony_ciDEFINE_DQUOT_EVENT(xfs_trans_apply_dquot_deltas_after); 110762306a36Sopenharmony_ci 110862306a36Sopenharmony_ciTRACE_EVENT(xfs_trans_mod_dquot, 110962306a36Sopenharmony_ci TP_PROTO(struct xfs_trans *tp, struct xfs_dquot *dqp, 111062306a36Sopenharmony_ci unsigned int field, int64_t delta), 111162306a36Sopenharmony_ci TP_ARGS(tp, dqp, field, delta), 111262306a36Sopenharmony_ci TP_STRUCT__entry( 111362306a36Sopenharmony_ci __field(dev_t, dev) 111462306a36Sopenharmony_ci __field(xfs_dqtype_t, type) 111562306a36Sopenharmony_ci __field(unsigned int, flags) 111662306a36Sopenharmony_ci __field(unsigned int, dqid) 111762306a36Sopenharmony_ci __field(unsigned int, field) 111862306a36Sopenharmony_ci __field(int64_t, delta) 111962306a36Sopenharmony_ci ), 112062306a36Sopenharmony_ci TP_fast_assign( 112162306a36Sopenharmony_ci __entry->dev = tp->t_mountp->m_super->s_dev; 112262306a36Sopenharmony_ci __entry->type = dqp->q_type; 112362306a36Sopenharmony_ci __entry->flags = dqp->q_flags; 112462306a36Sopenharmony_ci __entry->dqid = dqp->q_id; 112562306a36Sopenharmony_ci __entry->field = field; 112662306a36Sopenharmony_ci __entry->delta = delta; 112762306a36Sopenharmony_ci ), 112862306a36Sopenharmony_ci TP_printk("dev %d:%d dquot id 0x%x type %s flags %s field %s delta %lld", 112962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 113062306a36Sopenharmony_ci __entry->dqid, 113162306a36Sopenharmony_ci __print_flags(__entry->type, "|", XFS_DQTYPE_STRINGS), 113262306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XFS_DQFLAG_STRINGS), 113362306a36Sopenharmony_ci __print_flags(__entry->field, "|", XFS_QMOPT_FLAGS), 113462306a36Sopenharmony_ci __entry->delta) 113562306a36Sopenharmony_ci); 113662306a36Sopenharmony_ci 113762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_dqtrx_class, 113862306a36Sopenharmony_ci TP_PROTO(struct xfs_dqtrx *qtrx), 113962306a36Sopenharmony_ci TP_ARGS(qtrx), 114062306a36Sopenharmony_ci TP_STRUCT__entry( 114162306a36Sopenharmony_ci __field(dev_t, dev) 114262306a36Sopenharmony_ci __field(xfs_dqtype_t, type) 114362306a36Sopenharmony_ci __field(unsigned int, flags) 114462306a36Sopenharmony_ci __field(u32, dqid) 114562306a36Sopenharmony_ci 114662306a36Sopenharmony_ci __field(uint64_t, blk_res) 114762306a36Sopenharmony_ci __field(int64_t, bcount_delta) 114862306a36Sopenharmony_ci __field(int64_t, delbcnt_delta) 114962306a36Sopenharmony_ci 115062306a36Sopenharmony_ci __field(uint64_t, rtblk_res) 115162306a36Sopenharmony_ci __field(uint64_t, rtblk_res_used) 115262306a36Sopenharmony_ci __field(int64_t, rtbcount_delta) 115362306a36Sopenharmony_ci __field(int64_t, delrtb_delta) 115462306a36Sopenharmony_ci 115562306a36Sopenharmony_ci __field(uint64_t, ino_res) 115662306a36Sopenharmony_ci __field(uint64_t, ino_res_used) 115762306a36Sopenharmony_ci __field(int64_t, icount_delta) 115862306a36Sopenharmony_ci ), 115962306a36Sopenharmony_ci TP_fast_assign( 116062306a36Sopenharmony_ci __entry->dev = qtrx->qt_dquot->q_mount->m_super->s_dev; 116162306a36Sopenharmony_ci __entry->type = qtrx->qt_dquot->q_type; 116262306a36Sopenharmony_ci __entry->flags = qtrx->qt_dquot->q_flags; 116362306a36Sopenharmony_ci __entry->dqid = qtrx->qt_dquot->q_id; 116462306a36Sopenharmony_ci 116562306a36Sopenharmony_ci __entry->blk_res = qtrx->qt_blk_res; 116662306a36Sopenharmony_ci __entry->bcount_delta = qtrx->qt_bcount_delta; 116762306a36Sopenharmony_ci __entry->delbcnt_delta = qtrx->qt_delbcnt_delta; 116862306a36Sopenharmony_ci 116962306a36Sopenharmony_ci __entry->rtblk_res = qtrx->qt_rtblk_res; 117062306a36Sopenharmony_ci __entry->rtblk_res_used = qtrx->qt_rtblk_res_used; 117162306a36Sopenharmony_ci __entry->rtbcount_delta = qtrx->qt_rtbcount_delta; 117262306a36Sopenharmony_ci __entry->delrtb_delta = qtrx->qt_delrtb_delta; 117362306a36Sopenharmony_ci 117462306a36Sopenharmony_ci __entry->ino_res = qtrx->qt_ino_res; 117562306a36Sopenharmony_ci __entry->ino_res_used = qtrx->qt_ino_res_used; 117662306a36Sopenharmony_ci __entry->icount_delta = qtrx->qt_icount_delta; 117762306a36Sopenharmony_ci ), 117862306a36Sopenharmony_ci TP_printk("dev %d:%d dquot id 0x%x type %s flags %s " 117962306a36Sopenharmony_ci "blk_res %llu bcount_delta %lld delbcnt_delta %lld " 118062306a36Sopenharmony_ci "rtblk_res %llu rtblk_res_used %llu rtbcount_delta %lld delrtb_delta %lld " 118162306a36Sopenharmony_ci "ino_res %llu ino_res_used %llu icount_delta %lld", 118262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 118362306a36Sopenharmony_ci __entry->dqid, 118462306a36Sopenharmony_ci __print_flags(__entry->type, "|", XFS_DQTYPE_STRINGS), 118562306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XFS_DQFLAG_STRINGS), 118662306a36Sopenharmony_ci 118762306a36Sopenharmony_ci __entry->blk_res, 118862306a36Sopenharmony_ci __entry->bcount_delta, 118962306a36Sopenharmony_ci __entry->delbcnt_delta, 119062306a36Sopenharmony_ci 119162306a36Sopenharmony_ci __entry->rtblk_res, 119262306a36Sopenharmony_ci __entry->rtblk_res_used, 119362306a36Sopenharmony_ci __entry->rtbcount_delta, 119462306a36Sopenharmony_ci __entry->delrtb_delta, 119562306a36Sopenharmony_ci 119662306a36Sopenharmony_ci __entry->ino_res, 119762306a36Sopenharmony_ci __entry->ino_res_used, 119862306a36Sopenharmony_ci __entry->icount_delta) 119962306a36Sopenharmony_ci) 120062306a36Sopenharmony_ci 120162306a36Sopenharmony_ci#define DEFINE_DQTRX_EVENT(name) \ 120262306a36Sopenharmony_ciDEFINE_EVENT(xfs_dqtrx_class, name, \ 120362306a36Sopenharmony_ci TP_PROTO(struct xfs_dqtrx *qtrx), \ 120462306a36Sopenharmony_ci TP_ARGS(qtrx)) 120562306a36Sopenharmony_ciDEFINE_DQTRX_EVENT(xfs_trans_apply_dquot_deltas); 120662306a36Sopenharmony_ciDEFINE_DQTRX_EVENT(xfs_trans_mod_dquot_before); 120762306a36Sopenharmony_ciDEFINE_DQTRX_EVENT(xfs_trans_mod_dquot_after); 120862306a36Sopenharmony_ci 120962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_loggrant_class, 121062306a36Sopenharmony_ci TP_PROTO(struct xlog *log, struct xlog_ticket *tic), 121162306a36Sopenharmony_ci TP_ARGS(log, tic), 121262306a36Sopenharmony_ci TP_STRUCT__entry( 121362306a36Sopenharmony_ci __field(dev_t, dev) 121462306a36Sopenharmony_ci __field(char, ocnt) 121562306a36Sopenharmony_ci __field(char, cnt) 121662306a36Sopenharmony_ci __field(int, curr_res) 121762306a36Sopenharmony_ci __field(int, unit_res) 121862306a36Sopenharmony_ci __field(unsigned int, flags) 121962306a36Sopenharmony_ci __field(int, reserveq) 122062306a36Sopenharmony_ci __field(int, writeq) 122162306a36Sopenharmony_ci __field(int, grant_reserve_cycle) 122262306a36Sopenharmony_ci __field(int, grant_reserve_bytes) 122362306a36Sopenharmony_ci __field(int, grant_write_cycle) 122462306a36Sopenharmony_ci __field(int, grant_write_bytes) 122562306a36Sopenharmony_ci __field(int, curr_cycle) 122662306a36Sopenharmony_ci __field(int, curr_block) 122762306a36Sopenharmony_ci __field(xfs_lsn_t, tail_lsn) 122862306a36Sopenharmony_ci ), 122962306a36Sopenharmony_ci TP_fast_assign( 123062306a36Sopenharmony_ci __entry->dev = log->l_mp->m_super->s_dev; 123162306a36Sopenharmony_ci __entry->ocnt = tic->t_ocnt; 123262306a36Sopenharmony_ci __entry->cnt = tic->t_cnt; 123362306a36Sopenharmony_ci __entry->curr_res = tic->t_curr_res; 123462306a36Sopenharmony_ci __entry->unit_res = tic->t_unit_res; 123562306a36Sopenharmony_ci __entry->flags = tic->t_flags; 123662306a36Sopenharmony_ci __entry->reserveq = list_empty(&log->l_reserve_head.waiters); 123762306a36Sopenharmony_ci __entry->writeq = list_empty(&log->l_write_head.waiters); 123862306a36Sopenharmony_ci xlog_crack_grant_head(&log->l_reserve_head.grant, 123962306a36Sopenharmony_ci &__entry->grant_reserve_cycle, 124062306a36Sopenharmony_ci &__entry->grant_reserve_bytes); 124162306a36Sopenharmony_ci xlog_crack_grant_head(&log->l_write_head.grant, 124262306a36Sopenharmony_ci &__entry->grant_write_cycle, 124362306a36Sopenharmony_ci &__entry->grant_write_bytes); 124462306a36Sopenharmony_ci __entry->curr_cycle = log->l_curr_cycle; 124562306a36Sopenharmony_ci __entry->curr_block = log->l_curr_block; 124662306a36Sopenharmony_ci __entry->tail_lsn = atomic64_read(&log->l_tail_lsn); 124762306a36Sopenharmony_ci ), 124862306a36Sopenharmony_ci TP_printk("dev %d:%d t_ocnt %u t_cnt %u t_curr_res %u " 124962306a36Sopenharmony_ci "t_unit_res %u t_flags %s reserveq %s " 125062306a36Sopenharmony_ci "writeq %s grant_reserve_cycle %d " 125162306a36Sopenharmony_ci "grant_reserve_bytes %d grant_write_cycle %d " 125262306a36Sopenharmony_ci "grant_write_bytes %d curr_cycle %d curr_block %d " 125362306a36Sopenharmony_ci "tail_cycle %d tail_block %d", 125462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 125562306a36Sopenharmony_ci __entry->ocnt, 125662306a36Sopenharmony_ci __entry->cnt, 125762306a36Sopenharmony_ci __entry->curr_res, 125862306a36Sopenharmony_ci __entry->unit_res, 125962306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XLOG_TIC_FLAGS), 126062306a36Sopenharmony_ci __entry->reserveq ? "empty" : "active", 126162306a36Sopenharmony_ci __entry->writeq ? "empty" : "active", 126262306a36Sopenharmony_ci __entry->grant_reserve_cycle, 126362306a36Sopenharmony_ci __entry->grant_reserve_bytes, 126462306a36Sopenharmony_ci __entry->grant_write_cycle, 126562306a36Sopenharmony_ci __entry->grant_write_bytes, 126662306a36Sopenharmony_ci __entry->curr_cycle, 126762306a36Sopenharmony_ci __entry->curr_block, 126862306a36Sopenharmony_ci CYCLE_LSN(__entry->tail_lsn), 126962306a36Sopenharmony_ci BLOCK_LSN(__entry->tail_lsn) 127062306a36Sopenharmony_ci ) 127162306a36Sopenharmony_ci) 127262306a36Sopenharmony_ci 127362306a36Sopenharmony_ci#define DEFINE_LOGGRANT_EVENT(name) \ 127462306a36Sopenharmony_ciDEFINE_EVENT(xfs_loggrant_class, name, \ 127562306a36Sopenharmony_ci TP_PROTO(struct xlog *log, struct xlog_ticket *tic), \ 127662306a36Sopenharmony_ci TP_ARGS(log, tic)) 127762306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_umount_write); 127862306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_grant_sleep); 127962306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_grant_wake); 128062306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_grant_wake_up); 128162306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_reserve); 128262306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_reserve_exit); 128362306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_regrant); 128462306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_regrant_exit); 128562306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant); 128662306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant_exit); 128762306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_ticket_regrant_sub); 128862306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_ticket_ungrant); 128962306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_ticket_ungrant_sub); 129062306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_ticket_ungrant_exit); 129162306a36Sopenharmony_ciDEFINE_LOGGRANT_EVENT(xfs_log_cil_wait); 129262306a36Sopenharmony_ci 129362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_log_item_class, 129462306a36Sopenharmony_ci TP_PROTO(struct xfs_log_item *lip), 129562306a36Sopenharmony_ci TP_ARGS(lip), 129662306a36Sopenharmony_ci TP_STRUCT__entry( 129762306a36Sopenharmony_ci __field(dev_t, dev) 129862306a36Sopenharmony_ci __field(void *, lip) 129962306a36Sopenharmony_ci __field(uint, type) 130062306a36Sopenharmony_ci __field(unsigned long, flags) 130162306a36Sopenharmony_ci __field(xfs_lsn_t, lsn) 130262306a36Sopenharmony_ci ), 130362306a36Sopenharmony_ci TP_fast_assign( 130462306a36Sopenharmony_ci __entry->dev = lip->li_log->l_mp->m_super->s_dev; 130562306a36Sopenharmony_ci __entry->lip = lip; 130662306a36Sopenharmony_ci __entry->type = lip->li_type; 130762306a36Sopenharmony_ci __entry->flags = lip->li_flags; 130862306a36Sopenharmony_ci __entry->lsn = lip->li_lsn; 130962306a36Sopenharmony_ci ), 131062306a36Sopenharmony_ci TP_printk("dev %d:%d lip %p lsn %d/%d type %s flags %s", 131162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 131262306a36Sopenharmony_ci __entry->lip, 131362306a36Sopenharmony_ci CYCLE_LSN(__entry->lsn), BLOCK_LSN(__entry->lsn), 131462306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_LI_TYPE_DESC), 131562306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XFS_LI_FLAGS)) 131662306a36Sopenharmony_ci) 131762306a36Sopenharmony_ci 131862306a36Sopenharmony_ciTRACE_EVENT(xfs_log_force, 131962306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_lsn_t lsn, unsigned long caller_ip), 132062306a36Sopenharmony_ci TP_ARGS(mp, lsn, caller_ip), 132162306a36Sopenharmony_ci TP_STRUCT__entry( 132262306a36Sopenharmony_ci __field(dev_t, dev) 132362306a36Sopenharmony_ci __field(xfs_lsn_t, lsn) 132462306a36Sopenharmony_ci __field(unsigned long, caller_ip) 132562306a36Sopenharmony_ci ), 132662306a36Sopenharmony_ci TP_fast_assign( 132762306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 132862306a36Sopenharmony_ci __entry->lsn = lsn; 132962306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 133062306a36Sopenharmony_ci ), 133162306a36Sopenharmony_ci TP_printk("dev %d:%d lsn 0x%llx caller %pS", 133262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 133362306a36Sopenharmony_ci __entry->lsn, (void *)__entry->caller_ip) 133462306a36Sopenharmony_ci) 133562306a36Sopenharmony_ci 133662306a36Sopenharmony_ci#define DEFINE_LOG_ITEM_EVENT(name) \ 133762306a36Sopenharmony_ciDEFINE_EVENT(xfs_log_item_class, name, \ 133862306a36Sopenharmony_ci TP_PROTO(struct xfs_log_item *lip), \ 133962306a36Sopenharmony_ci TP_ARGS(lip)) 134062306a36Sopenharmony_ciDEFINE_LOG_ITEM_EVENT(xfs_ail_push); 134162306a36Sopenharmony_ciDEFINE_LOG_ITEM_EVENT(xfs_ail_pinned); 134262306a36Sopenharmony_ciDEFINE_LOG_ITEM_EVENT(xfs_ail_locked); 134362306a36Sopenharmony_ciDEFINE_LOG_ITEM_EVENT(xfs_ail_flushing); 134462306a36Sopenharmony_ciDEFINE_LOG_ITEM_EVENT(xfs_cil_whiteout_mark); 134562306a36Sopenharmony_ciDEFINE_LOG_ITEM_EVENT(xfs_cil_whiteout_skip); 134662306a36Sopenharmony_ciDEFINE_LOG_ITEM_EVENT(xfs_cil_whiteout_unpin); 134762306a36Sopenharmony_ci 134862306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_ail_class, 134962306a36Sopenharmony_ci TP_PROTO(struct xfs_log_item *lip, xfs_lsn_t old_lsn, xfs_lsn_t new_lsn), 135062306a36Sopenharmony_ci TP_ARGS(lip, old_lsn, new_lsn), 135162306a36Sopenharmony_ci TP_STRUCT__entry( 135262306a36Sopenharmony_ci __field(dev_t, dev) 135362306a36Sopenharmony_ci __field(void *, lip) 135462306a36Sopenharmony_ci __field(uint, type) 135562306a36Sopenharmony_ci __field(unsigned long, flags) 135662306a36Sopenharmony_ci __field(xfs_lsn_t, old_lsn) 135762306a36Sopenharmony_ci __field(xfs_lsn_t, new_lsn) 135862306a36Sopenharmony_ci ), 135962306a36Sopenharmony_ci TP_fast_assign( 136062306a36Sopenharmony_ci __entry->dev = lip->li_log->l_mp->m_super->s_dev; 136162306a36Sopenharmony_ci __entry->lip = lip; 136262306a36Sopenharmony_ci __entry->type = lip->li_type; 136362306a36Sopenharmony_ci __entry->flags = lip->li_flags; 136462306a36Sopenharmony_ci __entry->old_lsn = old_lsn; 136562306a36Sopenharmony_ci __entry->new_lsn = new_lsn; 136662306a36Sopenharmony_ci ), 136762306a36Sopenharmony_ci TP_printk("dev %d:%d lip %p old lsn %d/%d new lsn %d/%d type %s flags %s", 136862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 136962306a36Sopenharmony_ci __entry->lip, 137062306a36Sopenharmony_ci CYCLE_LSN(__entry->old_lsn), BLOCK_LSN(__entry->old_lsn), 137162306a36Sopenharmony_ci CYCLE_LSN(__entry->new_lsn), BLOCK_LSN(__entry->new_lsn), 137262306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_LI_TYPE_DESC), 137362306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XFS_LI_FLAGS)) 137462306a36Sopenharmony_ci) 137562306a36Sopenharmony_ci 137662306a36Sopenharmony_ci#define DEFINE_AIL_EVENT(name) \ 137762306a36Sopenharmony_ciDEFINE_EVENT(xfs_ail_class, name, \ 137862306a36Sopenharmony_ci TP_PROTO(struct xfs_log_item *lip, xfs_lsn_t old_lsn, xfs_lsn_t new_lsn), \ 137962306a36Sopenharmony_ci TP_ARGS(lip, old_lsn, new_lsn)) 138062306a36Sopenharmony_ciDEFINE_AIL_EVENT(xfs_ail_insert); 138162306a36Sopenharmony_ciDEFINE_AIL_EVENT(xfs_ail_move); 138262306a36Sopenharmony_ciDEFINE_AIL_EVENT(xfs_ail_delete); 138362306a36Sopenharmony_ci 138462306a36Sopenharmony_ciTRACE_EVENT(xfs_log_assign_tail_lsn, 138562306a36Sopenharmony_ci TP_PROTO(struct xlog *log, xfs_lsn_t new_lsn), 138662306a36Sopenharmony_ci TP_ARGS(log, new_lsn), 138762306a36Sopenharmony_ci TP_STRUCT__entry( 138862306a36Sopenharmony_ci __field(dev_t, dev) 138962306a36Sopenharmony_ci __field(xfs_lsn_t, new_lsn) 139062306a36Sopenharmony_ci __field(xfs_lsn_t, old_lsn) 139162306a36Sopenharmony_ci __field(xfs_lsn_t, last_sync_lsn) 139262306a36Sopenharmony_ci ), 139362306a36Sopenharmony_ci TP_fast_assign( 139462306a36Sopenharmony_ci __entry->dev = log->l_mp->m_super->s_dev; 139562306a36Sopenharmony_ci __entry->new_lsn = new_lsn; 139662306a36Sopenharmony_ci __entry->old_lsn = atomic64_read(&log->l_tail_lsn); 139762306a36Sopenharmony_ci __entry->last_sync_lsn = atomic64_read(&log->l_last_sync_lsn); 139862306a36Sopenharmony_ci ), 139962306a36Sopenharmony_ci TP_printk("dev %d:%d new tail lsn %d/%d, old lsn %d/%d, last sync %d/%d", 140062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 140162306a36Sopenharmony_ci CYCLE_LSN(__entry->new_lsn), BLOCK_LSN(__entry->new_lsn), 140262306a36Sopenharmony_ci CYCLE_LSN(__entry->old_lsn), BLOCK_LSN(__entry->old_lsn), 140362306a36Sopenharmony_ci CYCLE_LSN(__entry->last_sync_lsn), BLOCK_LSN(__entry->last_sync_lsn)) 140462306a36Sopenharmony_ci) 140562306a36Sopenharmony_ci 140662306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_file_class, 140762306a36Sopenharmony_ci TP_PROTO(struct kiocb *iocb, struct iov_iter *iter), 140862306a36Sopenharmony_ci TP_ARGS(iocb, iter), 140962306a36Sopenharmony_ci TP_STRUCT__entry( 141062306a36Sopenharmony_ci __field(dev_t, dev) 141162306a36Sopenharmony_ci __field(xfs_ino_t, ino) 141262306a36Sopenharmony_ci __field(xfs_fsize_t, size) 141362306a36Sopenharmony_ci __field(loff_t, offset) 141462306a36Sopenharmony_ci __field(size_t, count) 141562306a36Sopenharmony_ci ), 141662306a36Sopenharmony_ci TP_fast_assign( 141762306a36Sopenharmony_ci __entry->dev = file_inode(iocb->ki_filp)->i_sb->s_dev; 141862306a36Sopenharmony_ci __entry->ino = XFS_I(file_inode(iocb->ki_filp))->i_ino; 141962306a36Sopenharmony_ci __entry->size = XFS_I(file_inode(iocb->ki_filp))->i_disk_size; 142062306a36Sopenharmony_ci __entry->offset = iocb->ki_pos; 142162306a36Sopenharmony_ci __entry->count = iov_iter_count(iter); 142262306a36Sopenharmony_ci ), 142362306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx disize 0x%llx pos 0x%llx bytecount 0x%zx", 142462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 142562306a36Sopenharmony_ci __entry->ino, 142662306a36Sopenharmony_ci __entry->size, 142762306a36Sopenharmony_ci __entry->offset, 142862306a36Sopenharmony_ci __entry->count) 142962306a36Sopenharmony_ci) 143062306a36Sopenharmony_ci 143162306a36Sopenharmony_ci#define DEFINE_RW_EVENT(name) \ 143262306a36Sopenharmony_ciDEFINE_EVENT(xfs_file_class, name, \ 143362306a36Sopenharmony_ci TP_PROTO(struct kiocb *iocb, struct iov_iter *iter), \ 143462306a36Sopenharmony_ci TP_ARGS(iocb, iter)) 143562306a36Sopenharmony_ciDEFINE_RW_EVENT(xfs_file_buffered_read); 143662306a36Sopenharmony_ciDEFINE_RW_EVENT(xfs_file_direct_read); 143762306a36Sopenharmony_ciDEFINE_RW_EVENT(xfs_file_dax_read); 143862306a36Sopenharmony_ciDEFINE_RW_EVENT(xfs_file_buffered_write); 143962306a36Sopenharmony_ciDEFINE_RW_EVENT(xfs_file_direct_write); 144062306a36Sopenharmony_ciDEFINE_RW_EVENT(xfs_file_dax_write); 144162306a36Sopenharmony_ciDEFINE_RW_EVENT(xfs_reflink_bounce_dio_write); 144262306a36Sopenharmony_ci 144362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_imap_class, 144462306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count, 144562306a36Sopenharmony_ci int whichfork, struct xfs_bmbt_irec *irec), 144662306a36Sopenharmony_ci TP_ARGS(ip, offset, count, whichfork, irec), 144762306a36Sopenharmony_ci TP_STRUCT__entry( 144862306a36Sopenharmony_ci __field(dev_t, dev) 144962306a36Sopenharmony_ci __field(xfs_ino_t, ino) 145062306a36Sopenharmony_ci __field(loff_t, size) 145162306a36Sopenharmony_ci __field(loff_t, offset) 145262306a36Sopenharmony_ci __field(size_t, count) 145362306a36Sopenharmony_ci __field(int, whichfork) 145462306a36Sopenharmony_ci __field(xfs_fileoff_t, startoff) 145562306a36Sopenharmony_ci __field(xfs_fsblock_t, startblock) 145662306a36Sopenharmony_ci __field(xfs_filblks_t, blockcount) 145762306a36Sopenharmony_ci ), 145862306a36Sopenharmony_ci TP_fast_assign( 145962306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 146062306a36Sopenharmony_ci __entry->ino = ip->i_ino; 146162306a36Sopenharmony_ci __entry->size = ip->i_disk_size; 146262306a36Sopenharmony_ci __entry->offset = offset; 146362306a36Sopenharmony_ci __entry->count = count; 146462306a36Sopenharmony_ci __entry->whichfork = whichfork; 146562306a36Sopenharmony_ci __entry->startoff = irec ? irec->br_startoff : 0; 146662306a36Sopenharmony_ci __entry->startblock = irec ? irec->br_startblock : 0; 146762306a36Sopenharmony_ci __entry->blockcount = irec ? irec->br_blockcount : 0; 146862306a36Sopenharmony_ci ), 146962306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx disize 0x%llx pos 0x%llx bytecount 0x%zx " 147062306a36Sopenharmony_ci "fork %s startoff 0x%llx startblock 0x%llx fsbcount 0x%llx", 147162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 147262306a36Sopenharmony_ci __entry->ino, 147362306a36Sopenharmony_ci __entry->size, 147462306a36Sopenharmony_ci __entry->offset, 147562306a36Sopenharmony_ci __entry->count, 147662306a36Sopenharmony_ci __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS), 147762306a36Sopenharmony_ci __entry->startoff, 147862306a36Sopenharmony_ci (int64_t)__entry->startblock, 147962306a36Sopenharmony_ci __entry->blockcount) 148062306a36Sopenharmony_ci) 148162306a36Sopenharmony_ci 148262306a36Sopenharmony_ci#define DEFINE_IMAP_EVENT(name) \ 148362306a36Sopenharmony_ciDEFINE_EVENT(xfs_imap_class, name, \ 148462306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count, \ 148562306a36Sopenharmony_ci int whichfork, struct xfs_bmbt_irec *irec), \ 148662306a36Sopenharmony_ci TP_ARGS(ip, offset, count, whichfork, irec)) 148762306a36Sopenharmony_ciDEFINE_IMAP_EVENT(xfs_map_blocks_found); 148862306a36Sopenharmony_ciDEFINE_IMAP_EVENT(xfs_map_blocks_alloc); 148962306a36Sopenharmony_ciDEFINE_IMAP_EVENT(xfs_iomap_alloc); 149062306a36Sopenharmony_ciDEFINE_IMAP_EVENT(xfs_iomap_found); 149162306a36Sopenharmony_ci 149262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_simple_io_class, 149362306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count), 149462306a36Sopenharmony_ci TP_ARGS(ip, offset, count), 149562306a36Sopenharmony_ci TP_STRUCT__entry( 149662306a36Sopenharmony_ci __field(dev_t, dev) 149762306a36Sopenharmony_ci __field(xfs_ino_t, ino) 149862306a36Sopenharmony_ci __field(loff_t, isize) 149962306a36Sopenharmony_ci __field(loff_t, disize) 150062306a36Sopenharmony_ci __field(loff_t, offset) 150162306a36Sopenharmony_ci __field(size_t, count) 150262306a36Sopenharmony_ci ), 150362306a36Sopenharmony_ci TP_fast_assign( 150462306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 150562306a36Sopenharmony_ci __entry->ino = ip->i_ino; 150662306a36Sopenharmony_ci __entry->isize = VFS_I(ip)->i_size; 150762306a36Sopenharmony_ci __entry->disize = ip->i_disk_size; 150862306a36Sopenharmony_ci __entry->offset = offset; 150962306a36Sopenharmony_ci __entry->count = count; 151062306a36Sopenharmony_ci ), 151162306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx isize 0x%llx disize 0x%llx " 151262306a36Sopenharmony_ci "pos 0x%llx bytecount 0x%zx", 151362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 151462306a36Sopenharmony_ci __entry->ino, 151562306a36Sopenharmony_ci __entry->isize, 151662306a36Sopenharmony_ci __entry->disize, 151762306a36Sopenharmony_ci __entry->offset, 151862306a36Sopenharmony_ci __entry->count) 151962306a36Sopenharmony_ci); 152062306a36Sopenharmony_ci 152162306a36Sopenharmony_ci#define DEFINE_SIMPLE_IO_EVENT(name) \ 152262306a36Sopenharmony_ciDEFINE_EVENT(xfs_simple_io_class, name, \ 152362306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, xfs_off_t offset, ssize_t count), \ 152462306a36Sopenharmony_ci TP_ARGS(ip, offset, count)) 152562306a36Sopenharmony_ciDEFINE_SIMPLE_IO_EVENT(xfs_delalloc_enospc); 152662306a36Sopenharmony_ciDEFINE_SIMPLE_IO_EVENT(xfs_unwritten_convert); 152762306a36Sopenharmony_ciDEFINE_SIMPLE_IO_EVENT(xfs_setfilesize); 152862306a36Sopenharmony_ciDEFINE_SIMPLE_IO_EVENT(xfs_zero_eof); 152962306a36Sopenharmony_ciDEFINE_SIMPLE_IO_EVENT(xfs_end_io_direct_write); 153062306a36Sopenharmony_ciDEFINE_SIMPLE_IO_EVENT(xfs_end_io_direct_write_unwritten); 153162306a36Sopenharmony_ciDEFINE_SIMPLE_IO_EVENT(xfs_end_io_direct_write_append); 153262306a36Sopenharmony_ciDEFINE_SIMPLE_IO_EVENT(xfs_file_splice_read); 153362306a36Sopenharmony_ci 153462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_itrunc_class, 153562306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), 153662306a36Sopenharmony_ci TP_ARGS(ip, new_size), 153762306a36Sopenharmony_ci TP_STRUCT__entry( 153862306a36Sopenharmony_ci __field(dev_t, dev) 153962306a36Sopenharmony_ci __field(xfs_ino_t, ino) 154062306a36Sopenharmony_ci __field(xfs_fsize_t, size) 154162306a36Sopenharmony_ci __field(xfs_fsize_t, new_size) 154262306a36Sopenharmony_ci ), 154362306a36Sopenharmony_ci TP_fast_assign( 154462306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 154562306a36Sopenharmony_ci __entry->ino = ip->i_ino; 154662306a36Sopenharmony_ci __entry->size = ip->i_disk_size; 154762306a36Sopenharmony_ci __entry->new_size = new_size; 154862306a36Sopenharmony_ci ), 154962306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx disize 0x%llx new_size 0x%llx", 155062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 155162306a36Sopenharmony_ci __entry->ino, 155262306a36Sopenharmony_ci __entry->size, 155362306a36Sopenharmony_ci __entry->new_size) 155462306a36Sopenharmony_ci) 155562306a36Sopenharmony_ci 155662306a36Sopenharmony_ci#define DEFINE_ITRUNC_EVENT(name) \ 155762306a36Sopenharmony_ciDEFINE_EVENT(xfs_itrunc_class, name, \ 155862306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, xfs_fsize_t new_size), \ 155962306a36Sopenharmony_ci TP_ARGS(ip, new_size)) 156062306a36Sopenharmony_ciDEFINE_ITRUNC_EVENT(xfs_itruncate_extents_start); 156162306a36Sopenharmony_ciDEFINE_ITRUNC_EVENT(xfs_itruncate_extents_end); 156262306a36Sopenharmony_ci 156362306a36Sopenharmony_ciTRACE_EVENT(xfs_pagecache_inval, 156462306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, xfs_off_t start, xfs_off_t finish), 156562306a36Sopenharmony_ci TP_ARGS(ip, start, finish), 156662306a36Sopenharmony_ci TP_STRUCT__entry( 156762306a36Sopenharmony_ci __field(dev_t, dev) 156862306a36Sopenharmony_ci __field(xfs_ino_t, ino) 156962306a36Sopenharmony_ci __field(xfs_fsize_t, size) 157062306a36Sopenharmony_ci __field(xfs_off_t, start) 157162306a36Sopenharmony_ci __field(xfs_off_t, finish) 157262306a36Sopenharmony_ci ), 157362306a36Sopenharmony_ci TP_fast_assign( 157462306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 157562306a36Sopenharmony_ci __entry->ino = ip->i_ino; 157662306a36Sopenharmony_ci __entry->size = ip->i_disk_size; 157762306a36Sopenharmony_ci __entry->start = start; 157862306a36Sopenharmony_ci __entry->finish = finish; 157962306a36Sopenharmony_ci ), 158062306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx disize 0x%llx start 0x%llx finish 0x%llx", 158162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 158262306a36Sopenharmony_ci __entry->ino, 158362306a36Sopenharmony_ci __entry->size, 158462306a36Sopenharmony_ci __entry->start, 158562306a36Sopenharmony_ci __entry->finish) 158662306a36Sopenharmony_ci); 158762306a36Sopenharmony_ci 158862306a36Sopenharmony_ciTRACE_EVENT(xfs_bunmap, 158962306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, xfs_fileoff_t fileoff, xfs_filblks_t len, 159062306a36Sopenharmony_ci int flags, unsigned long caller_ip), 159162306a36Sopenharmony_ci TP_ARGS(ip, fileoff, len, flags, caller_ip), 159262306a36Sopenharmony_ci TP_STRUCT__entry( 159362306a36Sopenharmony_ci __field(dev_t, dev) 159462306a36Sopenharmony_ci __field(xfs_ino_t, ino) 159562306a36Sopenharmony_ci __field(xfs_fsize_t, size) 159662306a36Sopenharmony_ci __field(xfs_fileoff_t, fileoff) 159762306a36Sopenharmony_ci __field(xfs_filblks_t, len) 159862306a36Sopenharmony_ci __field(unsigned long, caller_ip) 159962306a36Sopenharmony_ci __field(int, flags) 160062306a36Sopenharmony_ci ), 160162306a36Sopenharmony_ci TP_fast_assign( 160262306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 160362306a36Sopenharmony_ci __entry->ino = ip->i_ino; 160462306a36Sopenharmony_ci __entry->size = ip->i_disk_size; 160562306a36Sopenharmony_ci __entry->fileoff = fileoff; 160662306a36Sopenharmony_ci __entry->len = len; 160762306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 160862306a36Sopenharmony_ci __entry->flags = flags; 160962306a36Sopenharmony_ci ), 161062306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx disize 0x%llx fileoff 0x%llx fsbcount 0x%llx " 161162306a36Sopenharmony_ci "flags %s caller %pS", 161262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 161362306a36Sopenharmony_ci __entry->ino, 161462306a36Sopenharmony_ci __entry->size, 161562306a36Sopenharmony_ci __entry->fileoff, 161662306a36Sopenharmony_ci __entry->len, 161762306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XFS_BMAPI_FLAGS), 161862306a36Sopenharmony_ci (void *)__entry->caller_ip) 161962306a36Sopenharmony_ci 162062306a36Sopenharmony_ci); 162162306a36Sopenharmony_ci 162262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_extent_busy_class, 162362306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 162462306a36Sopenharmony_ci xfs_agblock_t agbno, xfs_extlen_t len), 162562306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, len), 162662306a36Sopenharmony_ci TP_STRUCT__entry( 162762306a36Sopenharmony_ci __field(dev_t, dev) 162862306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 162962306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 163062306a36Sopenharmony_ci __field(xfs_extlen_t, len) 163162306a36Sopenharmony_ci ), 163262306a36Sopenharmony_ci TP_fast_assign( 163362306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 163462306a36Sopenharmony_ci __entry->agno = agno; 163562306a36Sopenharmony_ci __entry->agbno = agbno; 163662306a36Sopenharmony_ci __entry->len = len; 163762306a36Sopenharmony_ci ), 163862306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x", 163962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 164062306a36Sopenharmony_ci __entry->agno, 164162306a36Sopenharmony_ci __entry->agbno, 164262306a36Sopenharmony_ci __entry->len) 164362306a36Sopenharmony_ci); 164462306a36Sopenharmony_ci#define DEFINE_BUSY_EVENT(name) \ 164562306a36Sopenharmony_ciDEFINE_EVENT(xfs_extent_busy_class, name, \ 164662306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 164762306a36Sopenharmony_ci xfs_agblock_t agbno, xfs_extlen_t len), \ 164862306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, len)) 164962306a36Sopenharmony_ciDEFINE_BUSY_EVENT(xfs_extent_busy); 165062306a36Sopenharmony_ciDEFINE_BUSY_EVENT(xfs_extent_busy_enomem); 165162306a36Sopenharmony_ciDEFINE_BUSY_EVENT(xfs_extent_busy_force); 165262306a36Sopenharmony_ciDEFINE_BUSY_EVENT(xfs_extent_busy_reuse); 165362306a36Sopenharmony_ciDEFINE_BUSY_EVENT(xfs_extent_busy_clear); 165462306a36Sopenharmony_ci 165562306a36Sopenharmony_ciTRACE_EVENT(xfs_extent_busy_trim, 165662306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 165762306a36Sopenharmony_ci xfs_agblock_t agbno, xfs_extlen_t len, 165862306a36Sopenharmony_ci xfs_agblock_t tbno, xfs_extlen_t tlen), 165962306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, len, tbno, tlen), 166062306a36Sopenharmony_ci TP_STRUCT__entry( 166162306a36Sopenharmony_ci __field(dev_t, dev) 166262306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 166362306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 166462306a36Sopenharmony_ci __field(xfs_extlen_t, len) 166562306a36Sopenharmony_ci __field(xfs_agblock_t, tbno) 166662306a36Sopenharmony_ci __field(xfs_extlen_t, tlen) 166762306a36Sopenharmony_ci ), 166862306a36Sopenharmony_ci TP_fast_assign( 166962306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 167062306a36Sopenharmony_ci __entry->agno = agno; 167162306a36Sopenharmony_ci __entry->agbno = agbno; 167262306a36Sopenharmony_ci __entry->len = len; 167362306a36Sopenharmony_ci __entry->tbno = tbno; 167462306a36Sopenharmony_ci __entry->tlen = tlen; 167562306a36Sopenharmony_ci ), 167662306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x found_agbno 0x%x found_fsbcount 0x%x", 167762306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 167862306a36Sopenharmony_ci __entry->agno, 167962306a36Sopenharmony_ci __entry->agbno, 168062306a36Sopenharmony_ci __entry->len, 168162306a36Sopenharmony_ci __entry->tbno, 168262306a36Sopenharmony_ci __entry->tlen) 168362306a36Sopenharmony_ci); 168462306a36Sopenharmony_ci 168562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_agf_class, 168662306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, struct xfs_agf *agf, int flags, 168762306a36Sopenharmony_ci unsigned long caller_ip), 168862306a36Sopenharmony_ci TP_ARGS(mp, agf, flags, caller_ip), 168962306a36Sopenharmony_ci TP_STRUCT__entry( 169062306a36Sopenharmony_ci __field(dev_t, dev) 169162306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 169262306a36Sopenharmony_ci __field(int, flags) 169362306a36Sopenharmony_ci __field(__u32, length) 169462306a36Sopenharmony_ci __field(__u32, bno_root) 169562306a36Sopenharmony_ci __field(__u32, cnt_root) 169662306a36Sopenharmony_ci __field(__u32, bno_level) 169762306a36Sopenharmony_ci __field(__u32, cnt_level) 169862306a36Sopenharmony_ci __field(__u32, flfirst) 169962306a36Sopenharmony_ci __field(__u32, fllast) 170062306a36Sopenharmony_ci __field(__u32, flcount) 170162306a36Sopenharmony_ci __field(__u32, freeblks) 170262306a36Sopenharmony_ci __field(__u32, longest) 170362306a36Sopenharmony_ci __field(unsigned long, caller_ip) 170462306a36Sopenharmony_ci ), 170562306a36Sopenharmony_ci TP_fast_assign( 170662306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 170762306a36Sopenharmony_ci __entry->agno = be32_to_cpu(agf->agf_seqno), 170862306a36Sopenharmony_ci __entry->flags = flags; 170962306a36Sopenharmony_ci __entry->length = be32_to_cpu(agf->agf_length), 171062306a36Sopenharmony_ci __entry->bno_root = be32_to_cpu(agf->agf_roots[XFS_BTNUM_BNO]), 171162306a36Sopenharmony_ci __entry->cnt_root = be32_to_cpu(agf->agf_roots[XFS_BTNUM_CNT]), 171262306a36Sopenharmony_ci __entry->bno_level = 171362306a36Sopenharmony_ci be32_to_cpu(agf->agf_levels[XFS_BTNUM_BNO]), 171462306a36Sopenharmony_ci __entry->cnt_level = 171562306a36Sopenharmony_ci be32_to_cpu(agf->agf_levels[XFS_BTNUM_CNT]), 171662306a36Sopenharmony_ci __entry->flfirst = be32_to_cpu(agf->agf_flfirst), 171762306a36Sopenharmony_ci __entry->fllast = be32_to_cpu(agf->agf_fllast), 171862306a36Sopenharmony_ci __entry->flcount = be32_to_cpu(agf->agf_flcount), 171962306a36Sopenharmony_ci __entry->freeblks = be32_to_cpu(agf->agf_freeblks), 172062306a36Sopenharmony_ci __entry->longest = be32_to_cpu(agf->agf_longest); 172162306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 172262306a36Sopenharmony_ci ), 172362306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x flags %s length %u roots b %u c %u " 172462306a36Sopenharmony_ci "levels b %u c %u flfirst %u fllast %u flcount %u " 172562306a36Sopenharmony_ci "freeblks %u longest %u caller %pS", 172662306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 172762306a36Sopenharmony_ci __entry->agno, 172862306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XFS_AGF_FLAGS), 172962306a36Sopenharmony_ci __entry->length, 173062306a36Sopenharmony_ci __entry->bno_root, 173162306a36Sopenharmony_ci __entry->cnt_root, 173262306a36Sopenharmony_ci __entry->bno_level, 173362306a36Sopenharmony_ci __entry->cnt_level, 173462306a36Sopenharmony_ci __entry->flfirst, 173562306a36Sopenharmony_ci __entry->fllast, 173662306a36Sopenharmony_ci __entry->flcount, 173762306a36Sopenharmony_ci __entry->freeblks, 173862306a36Sopenharmony_ci __entry->longest, 173962306a36Sopenharmony_ci (void *)__entry->caller_ip) 174062306a36Sopenharmony_ci); 174162306a36Sopenharmony_ci#define DEFINE_AGF_EVENT(name) \ 174262306a36Sopenharmony_ciDEFINE_EVENT(xfs_agf_class, name, \ 174362306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, struct xfs_agf *agf, int flags, \ 174462306a36Sopenharmony_ci unsigned long caller_ip), \ 174562306a36Sopenharmony_ci TP_ARGS(mp, agf, flags, caller_ip)) 174662306a36Sopenharmony_ciDEFINE_AGF_EVENT(xfs_agf); 174762306a36Sopenharmony_ciDEFINE_AGF_EVENT(xfs_agfl_reset); 174862306a36Sopenharmony_ci 174962306a36Sopenharmony_ciTRACE_EVENT(xfs_free_extent, 175062306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agblock_t agbno, 175162306a36Sopenharmony_ci xfs_extlen_t len, enum xfs_ag_resv_type resv, int haveleft, 175262306a36Sopenharmony_ci int haveright), 175362306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, len, resv, haveleft, haveright), 175462306a36Sopenharmony_ci TP_STRUCT__entry( 175562306a36Sopenharmony_ci __field(dev_t, dev) 175662306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 175762306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 175862306a36Sopenharmony_ci __field(xfs_extlen_t, len) 175962306a36Sopenharmony_ci __field(int, resv) 176062306a36Sopenharmony_ci __field(int, haveleft) 176162306a36Sopenharmony_ci __field(int, haveright) 176262306a36Sopenharmony_ci ), 176362306a36Sopenharmony_ci TP_fast_assign( 176462306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 176562306a36Sopenharmony_ci __entry->agno = agno; 176662306a36Sopenharmony_ci __entry->agbno = agbno; 176762306a36Sopenharmony_ci __entry->len = len; 176862306a36Sopenharmony_ci __entry->resv = resv; 176962306a36Sopenharmony_ci __entry->haveleft = haveleft; 177062306a36Sopenharmony_ci __entry->haveright = haveright; 177162306a36Sopenharmony_ci ), 177262306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x resv %d %s", 177362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 177462306a36Sopenharmony_ci __entry->agno, 177562306a36Sopenharmony_ci __entry->agbno, 177662306a36Sopenharmony_ci __entry->len, 177762306a36Sopenharmony_ci __entry->resv, 177862306a36Sopenharmony_ci __entry->haveleft ? 177962306a36Sopenharmony_ci (__entry->haveright ? "both" : "left") : 178062306a36Sopenharmony_ci (__entry->haveright ? "right" : "none")) 178162306a36Sopenharmony_ci 178262306a36Sopenharmony_ci); 178362306a36Sopenharmony_ci 178462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_alloc_class, 178562306a36Sopenharmony_ci TP_PROTO(struct xfs_alloc_arg *args), 178662306a36Sopenharmony_ci TP_ARGS(args), 178762306a36Sopenharmony_ci TP_STRUCT__entry( 178862306a36Sopenharmony_ci __field(dev_t, dev) 178962306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 179062306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 179162306a36Sopenharmony_ci __field(xfs_extlen_t, minlen) 179262306a36Sopenharmony_ci __field(xfs_extlen_t, maxlen) 179362306a36Sopenharmony_ci __field(xfs_extlen_t, mod) 179462306a36Sopenharmony_ci __field(xfs_extlen_t, prod) 179562306a36Sopenharmony_ci __field(xfs_extlen_t, minleft) 179662306a36Sopenharmony_ci __field(xfs_extlen_t, total) 179762306a36Sopenharmony_ci __field(xfs_extlen_t, alignment) 179862306a36Sopenharmony_ci __field(xfs_extlen_t, minalignslop) 179962306a36Sopenharmony_ci __field(xfs_extlen_t, len) 180062306a36Sopenharmony_ci __field(char, wasdel) 180162306a36Sopenharmony_ci __field(char, wasfromfl) 180262306a36Sopenharmony_ci __field(int, resv) 180362306a36Sopenharmony_ci __field(int, datatype) 180462306a36Sopenharmony_ci __field(xfs_agnumber_t, highest_agno) 180562306a36Sopenharmony_ci ), 180662306a36Sopenharmony_ci TP_fast_assign( 180762306a36Sopenharmony_ci __entry->dev = args->mp->m_super->s_dev; 180862306a36Sopenharmony_ci __entry->agno = args->agno; 180962306a36Sopenharmony_ci __entry->agbno = args->agbno; 181062306a36Sopenharmony_ci __entry->minlen = args->minlen; 181162306a36Sopenharmony_ci __entry->maxlen = args->maxlen; 181262306a36Sopenharmony_ci __entry->mod = args->mod; 181362306a36Sopenharmony_ci __entry->prod = args->prod; 181462306a36Sopenharmony_ci __entry->minleft = args->minleft; 181562306a36Sopenharmony_ci __entry->total = args->total; 181662306a36Sopenharmony_ci __entry->alignment = args->alignment; 181762306a36Sopenharmony_ci __entry->minalignslop = args->minalignslop; 181862306a36Sopenharmony_ci __entry->len = args->len; 181962306a36Sopenharmony_ci __entry->wasdel = args->wasdel; 182062306a36Sopenharmony_ci __entry->wasfromfl = args->wasfromfl; 182162306a36Sopenharmony_ci __entry->resv = args->resv; 182262306a36Sopenharmony_ci __entry->datatype = args->datatype; 182362306a36Sopenharmony_ci __entry->highest_agno = args->tp->t_highest_agno; 182462306a36Sopenharmony_ci ), 182562306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x minlen %u maxlen %u mod %u " 182662306a36Sopenharmony_ci "prod %u minleft %u total %u alignment %u minalignslop %u " 182762306a36Sopenharmony_ci "len %u wasdel %d wasfromfl %d resv %d " 182862306a36Sopenharmony_ci "datatype 0x%x highest_agno 0x%x", 182962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 183062306a36Sopenharmony_ci __entry->agno, 183162306a36Sopenharmony_ci __entry->agbno, 183262306a36Sopenharmony_ci __entry->minlen, 183362306a36Sopenharmony_ci __entry->maxlen, 183462306a36Sopenharmony_ci __entry->mod, 183562306a36Sopenharmony_ci __entry->prod, 183662306a36Sopenharmony_ci __entry->minleft, 183762306a36Sopenharmony_ci __entry->total, 183862306a36Sopenharmony_ci __entry->alignment, 183962306a36Sopenharmony_ci __entry->minalignslop, 184062306a36Sopenharmony_ci __entry->len, 184162306a36Sopenharmony_ci __entry->wasdel, 184262306a36Sopenharmony_ci __entry->wasfromfl, 184362306a36Sopenharmony_ci __entry->resv, 184462306a36Sopenharmony_ci __entry->datatype, 184562306a36Sopenharmony_ci __entry->highest_agno) 184662306a36Sopenharmony_ci) 184762306a36Sopenharmony_ci 184862306a36Sopenharmony_ci#define DEFINE_ALLOC_EVENT(name) \ 184962306a36Sopenharmony_ciDEFINE_EVENT(xfs_alloc_class, name, \ 185062306a36Sopenharmony_ci TP_PROTO(struct xfs_alloc_arg *args), \ 185162306a36Sopenharmony_ci TP_ARGS(args)) 185262306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_exact_done); 185362306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_exact_notfound); 185462306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_exact_error); 185562306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_near_nominleft); 185662306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_near_first); 185762306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_cur); 185862306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_cur_right); 185962306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_cur_left); 186062306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_cur_lookup); 186162306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_cur_lookup_done); 186262306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_near_error); 186362306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_near_noentry); 186462306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_near_busy); 186562306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_size_neither); 186662306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_size_noentry); 186762306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_size_nominleft); 186862306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_size_done); 186962306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_size_error); 187062306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_size_busy); 187162306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_small_freelist); 187262306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_small_notenough); 187362306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_small_done); 187462306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_small_error); 187562306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_vextent_badargs); 187662306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_vextent_skip_deadlock); 187762306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_vextent_nofix); 187862306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_vextent_noagbp); 187962306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_vextent_loopfailed); 188062306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_vextent_allfailed); 188162306a36Sopenharmony_ci 188262306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_vextent_this_ag); 188362306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_vextent_start_ag); 188462306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_vextent_first_ag); 188562306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_vextent_exact_bno); 188662306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_vextent_near_bno); 188762306a36Sopenharmony_ciDEFINE_ALLOC_EVENT(xfs_alloc_vextent_finish); 188862306a36Sopenharmony_ci 188962306a36Sopenharmony_ciTRACE_EVENT(xfs_alloc_cur_check, 189062306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_btnum_t btnum, xfs_agblock_t bno, 189162306a36Sopenharmony_ci xfs_extlen_t len, xfs_extlen_t diff, bool new), 189262306a36Sopenharmony_ci TP_ARGS(mp, btnum, bno, len, diff, new), 189362306a36Sopenharmony_ci TP_STRUCT__entry( 189462306a36Sopenharmony_ci __field(dev_t, dev) 189562306a36Sopenharmony_ci __field(xfs_btnum_t, btnum) 189662306a36Sopenharmony_ci __field(xfs_agblock_t, bno) 189762306a36Sopenharmony_ci __field(xfs_extlen_t, len) 189862306a36Sopenharmony_ci __field(xfs_extlen_t, diff) 189962306a36Sopenharmony_ci __field(bool, new) 190062306a36Sopenharmony_ci ), 190162306a36Sopenharmony_ci TP_fast_assign( 190262306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 190362306a36Sopenharmony_ci __entry->btnum = btnum; 190462306a36Sopenharmony_ci __entry->bno = bno; 190562306a36Sopenharmony_ci __entry->len = len; 190662306a36Sopenharmony_ci __entry->diff = diff; 190762306a36Sopenharmony_ci __entry->new = new; 190862306a36Sopenharmony_ci ), 190962306a36Sopenharmony_ci TP_printk("dev %d:%d btree %s agbno 0x%x fsbcount 0x%x diff 0x%x new %d", 191062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 191162306a36Sopenharmony_ci __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 191262306a36Sopenharmony_ci __entry->bno, __entry->len, __entry->diff, __entry->new) 191362306a36Sopenharmony_ci) 191462306a36Sopenharmony_ci 191562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_da_class, 191662306a36Sopenharmony_ci TP_PROTO(struct xfs_da_args *args), 191762306a36Sopenharmony_ci TP_ARGS(args), 191862306a36Sopenharmony_ci TP_STRUCT__entry( 191962306a36Sopenharmony_ci __field(dev_t, dev) 192062306a36Sopenharmony_ci __field(xfs_ino_t, ino) 192162306a36Sopenharmony_ci __dynamic_array(char, name, args->namelen) 192262306a36Sopenharmony_ci __field(int, namelen) 192362306a36Sopenharmony_ci __field(xfs_dahash_t, hashval) 192462306a36Sopenharmony_ci __field(xfs_ino_t, inumber) 192562306a36Sopenharmony_ci __field(uint32_t, op_flags) 192662306a36Sopenharmony_ci ), 192762306a36Sopenharmony_ci TP_fast_assign( 192862306a36Sopenharmony_ci __entry->dev = VFS_I(args->dp)->i_sb->s_dev; 192962306a36Sopenharmony_ci __entry->ino = args->dp->i_ino; 193062306a36Sopenharmony_ci if (args->namelen) 193162306a36Sopenharmony_ci memcpy(__get_str(name), args->name, args->namelen); 193262306a36Sopenharmony_ci __entry->namelen = args->namelen; 193362306a36Sopenharmony_ci __entry->hashval = args->hashval; 193462306a36Sopenharmony_ci __entry->inumber = args->inumber; 193562306a36Sopenharmony_ci __entry->op_flags = args->op_flags; 193662306a36Sopenharmony_ci ), 193762306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx name %.*s namelen %d hashval 0x%x " 193862306a36Sopenharmony_ci "inumber 0x%llx op_flags %s", 193962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 194062306a36Sopenharmony_ci __entry->ino, 194162306a36Sopenharmony_ci __entry->namelen, 194262306a36Sopenharmony_ci __entry->namelen ? __get_str(name) : NULL, 194362306a36Sopenharmony_ci __entry->namelen, 194462306a36Sopenharmony_ci __entry->hashval, 194562306a36Sopenharmony_ci __entry->inumber, 194662306a36Sopenharmony_ci __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS)) 194762306a36Sopenharmony_ci) 194862306a36Sopenharmony_ci 194962306a36Sopenharmony_ci#define DEFINE_DIR2_EVENT(name) \ 195062306a36Sopenharmony_ciDEFINE_EVENT(xfs_da_class, name, \ 195162306a36Sopenharmony_ci TP_PROTO(struct xfs_da_args *args), \ 195262306a36Sopenharmony_ci TP_ARGS(args)) 195362306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_sf_addname); 195462306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_sf_create); 195562306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_sf_lookup); 195662306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_sf_replace); 195762306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_sf_removename); 195862306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_sf_toino4); 195962306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_sf_toino8); 196062306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_sf_to_block); 196162306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_block_addname); 196262306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_block_lookup); 196362306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_block_replace); 196462306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_block_removename); 196562306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_block_to_sf); 196662306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_block_to_leaf); 196762306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_leaf_addname); 196862306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_leaf_lookup); 196962306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_leaf_replace); 197062306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_leaf_removename); 197162306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_leaf_to_block); 197262306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_leaf_to_node); 197362306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_node_addname); 197462306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_node_lookup); 197562306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_node_replace); 197662306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_node_removename); 197762306a36Sopenharmony_ciDEFINE_DIR2_EVENT(xfs_dir2_node_to_leaf); 197862306a36Sopenharmony_ci 197962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_attr_class, 198062306a36Sopenharmony_ci TP_PROTO(struct xfs_da_args *args), 198162306a36Sopenharmony_ci TP_ARGS(args), 198262306a36Sopenharmony_ci TP_STRUCT__entry( 198362306a36Sopenharmony_ci __field(dev_t, dev) 198462306a36Sopenharmony_ci __field(xfs_ino_t, ino) 198562306a36Sopenharmony_ci __dynamic_array(char, name, args->namelen) 198662306a36Sopenharmony_ci __field(int, namelen) 198762306a36Sopenharmony_ci __field(int, valuelen) 198862306a36Sopenharmony_ci __field(xfs_dahash_t, hashval) 198962306a36Sopenharmony_ci __field(unsigned int, attr_filter) 199062306a36Sopenharmony_ci __field(unsigned int, attr_flags) 199162306a36Sopenharmony_ci __field(uint32_t, op_flags) 199262306a36Sopenharmony_ci ), 199362306a36Sopenharmony_ci TP_fast_assign( 199462306a36Sopenharmony_ci __entry->dev = VFS_I(args->dp)->i_sb->s_dev; 199562306a36Sopenharmony_ci __entry->ino = args->dp->i_ino; 199662306a36Sopenharmony_ci if (args->namelen) 199762306a36Sopenharmony_ci memcpy(__get_str(name), args->name, args->namelen); 199862306a36Sopenharmony_ci __entry->namelen = args->namelen; 199962306a36Sopenharmony_ci __entry->valuelen = args->valuelen; 200062306a36Sopenharmony_ci __entry->hashval = args->hashval; 200162306a36Sopenharmony_ci __entry->attr_filter = args->attr_filter; 200262306a36Sopenharmony_ci __entry->attr_flags = args->attr_flags; 200362306a36Sopenharmony_ci __entry->op_flags = args->op_flags; 200462306a36Sopenharmony_ci ), 200562306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx name %.*s namelen %d valuelen %d " 200662306a36Sopenharmony_ci "hashval 0x%x filter %s flags %s op_flags %s", 200762306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 200862306a36Sopenharmony_ci __entry->ino, 200962306a36Sopenharmony_ci __entry->namelen, 201062306a36Sopenharmony_ci __entry->namelen ? __get_str(name) : NULL, 201162306a36Sopenharmony_ci __entry->namelen, 201262306a36Sopenharmony_ci __entry->valuelen, 201362306a36Sopenharmony_ci __entry->hashval, 201462306a36Sopenharmony_ci __print_flags(__entry->attr_filter, "|", 201562306a36Sopenharmony_ci XFS_ATTR_FILTER_FLAGS), 201662306a36Sopenharmony_ci __print_flags(__entry->attr_flags, "|", 201762306a36Sopenharmony_ci { XATTR_CREATE, "CREATE" }, 201862306a36Sopenharmony_ci { XATTR_REPLACE, "REPLACE" }), 201962306a36Sopenharmony_ci __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS)) 202062306a36Sopenharmony_ci) 202162306a36Sopenharmony_ci 202262306a36Sopenharmony_ci#define DEFINE_ATTR_EVENT(name) \ 202362306a36Sopenharmony_ciDEFINE_EVENT(xfs_attr_class, name, \ 202462306a36Sopenharmony_ci TP_PROTO(struct xfs_da_args *args), \ 202562306a36Sopenharmony_ci TP_ARGS(args)) 202662306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_sf_add); 202762306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_sf_addname); 202862306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_sf_create); 202962306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_sf_lookup); 203062306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_sf_remove); 203162306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_sf_to_leaf); 203262306a36Sopenharmony_ci 203362306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_add); 203462306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_add_old); 203562306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_add_new); 203662306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_add_work); 203762306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_create); 203862306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_compact); 203962306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_get); 204062306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_lookup); 204162306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_replace); 204262306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_remove); 204362306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_removename); 204462306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_split); 204562306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_split_before); 204662306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_split_after); 204762306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_clearflag); 204862306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_setflag); 204962306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_flipflags); 205062306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_to_sf); 205162306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_to_node); 205262306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_rebalance); 205362306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_unbalance); 205462306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_leaf_toosmall); 205562306a36Sopenharmony_ci 205662306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_node_addname); 205762306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_node_get); 205862306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_node_replace); 205962306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_node_removename); 206062306a36Sopenharmony_ci 206162306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_fillstate); 206262306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_refillstate); 206362306a36Sopenharmony_ci 206462306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_rmtval_get); 206562306a36Sopenharmony_ciDEFINE_ATTR_EVENT(xfs_attr_rmtval_set); 206662306a36Sopenharmony_ci 206762306a36Sopenharmony_ci#define DEFINE_DA_EVENT(name) \ 206862306a36Sopenharmony_ciDEFINE_EVENT(xfs_da_class, name, \ 206962306a36Sopenharmony_ci TP_PROTO(struct xfs_da_args *args), \ 207062306a36Sopenharmony_ci TP_ARGS(args)) 207162306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_split); 207262306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_join); 207362306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_link_before); 207462306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_link_after); 207562306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_unlink_back); 207662306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_unlink_forward); 207762306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_root_split); 207862306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_root_join); 207962306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_node_add); 208062306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_node_create); 208162306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_node_split); 208262306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_node_remove); 208362306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_node_rebalance); 208462306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_node_unbalance); 208562306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_node_toosmall); 208662306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_swap_lastblock); 208762306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_grow_inode); 208862306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_shrink_inode); 208962306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_fixhashpath); 209062306a36Sopenharmony_ciDEFINE_DA_EVENT(xfs_da_path_shift); 209162306a36Sopenharmony_ci 209262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_dir2_space_class, 209362306a36Sopenharmony_ci TP_PROTO(struct xfs_da_args *args, int idx), 209462306a36Sopenharmony_ci TP_ARGS(args, idx), 209562306a36Sopenharmony_ci TP_STRUCT__entry( 209662306a36Sopenharmony_ci __field(dev_t, dev) 209762306a36Sopenharmony_ci __field(xfs_ino_t, ino) 209862306a36Sopenharmony_ci __field(uint32_t, op_flags) 209962306a36Sopenharmony_ci __field(int, idx) 210062306a36Sopenharmony_ci ), 210162306a36Sopenharmony_ci TP_fast_assign( 210262306a36Sopenharmony_ci __entry->dev = VFS_I(args->dp)->i_sb->s_dev; 210362306a36Sopenharmony_ci __entry->ino = args->dp->i_ino; 210462306a36Sopenharmony_ci __entry->op_flags = args->op_flags; 210562306a36Sopenharmony_ci __entry->idx = idx; 210662306a36Sopenharmony_ci ), 210762306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx op_flags %s index %d", 210862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 210962306a36Sopenharmony_ci __entry->ino, 211062306a36Sopenharmony_ci __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS), 211162306a36Sopenharmony_ci __entry->idx) 211262306a36Sopenharmony_ci) 211362306a36Sopenharmony_ci 211462306a36Sopenharmony_ci#define DEFINE_DIR2_SPACE_EVENT(name) \ 211562306a36Sopenharmony_ciDEFINE_EVENT(xfs_dir2_space_class, name, \ 211662306a36Sopenharmony_ci TP_PROTO(struct xfs_da_args *args, int idx), \ 211762306a36Sopenharmony_ci TP_ARGS(args, idx)) 211862306a36Sopenharmony_ciDEFINE_DIR2_SPACE_EVENT(xfs_dir2_leafn_add); 211962306a36Sopenharmony_ciDEFINE_DIR2_SPACE_EVENT(xfs_dir2_leafn_remove); 212062306a36Sopenharmony_ciDEFINE_DIR2_SPACE_EVENT(xfs_dir2_grow_inode); 212162306a36Sopenharmony_ciDEFINE_DIR2_SPACE_EVENT(xfs_dir2_shrink_inode); 212262306a36Sopenharmony_ci 212362306a36Sopenharmony_ciTRACE_EVENT(xfs_dir2_leafn_moveents, 212462306a36Sopenharmony_ci TP_PROTO(struct xfs_da_args *args, int src_idx, int dst_idx, int count), 212562306a36Sopenharmony_ci TP_ARGS(args, src_idx, dst_idx, count), 212662306a36Sopenharmony_ci TP_STRUCT__entry( 212762306a36Sopenharmony_ci __field(dev_t, dev) 212862306a36Sopenharmony_ci __field(xfs_ino_t, ino) 212962306a36Sopenharmony_ci __field(uint32_t, op_flags) 213062306a36Sopenharmony_ci __field(int, src_idx) 213162306a36Sopenharmony_ci __field(int, dst_idx) 213262306a36Sopenharmony_ci __field(int, count) 213362306a36Sopenharmony_ci ), 213462306a36Sopenharmony_ci TP_fast_assign( 213562306a36Sopenharmony_ci __entry->dev = VFS_I(args->dp)->i_sb->s_dev; 213662306a36Sopenharmony_ci __entry->ino = args->dp->i_ino; 213762306a36Sopenharmony_ci __entry->op_flags = args->op_flags; 213862306a36Sopenharmony_ci __entry->src_idx = src_idx; 213962306a36Sopenharmony_ci __entry->dst_idx = dst_idx; 214062306a36Sopenharmony_ci __entry->count = count; 214162306a36Sopenharmony_ci ), 214262306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx op_flags %s " 214362306a36Sopenharmony_ci "src_idx %d dst_idx %d count %d", 214462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 214562306a36Sopenharmony_ci __entry->ino, 214662306a36Sopenharmony_ci __print_flags(__entry->op_flags, "|", XFS_DA_OP_FLAGS), 214762306a36Sopenharmony_ci __entry->src_idx, 214862306a36Sopenharmony_ci __entry->dst_idx, 214962306a36Sopenharmony_ci __entry->count) 215062306a36Sopenharmony_ci); 215162306a36Sopenharmony_ci 215262306a36Sopenharmony_ci#define XFS_SWAPEXT_INODES \ 215362306a36Sopenharmony_ci { 0, "target" }, \ 215462306a36Sopenharmony_ci { 1, "temp" } 215562306a36Sopenharmony_ci 215662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DINODE_FMT_DEV); 215762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DINODE_FMT_LOCAL); 215862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DINODE_FMT_EXTENTS); 215962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DINODE_FMT_BTREE); 216062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DINODE_FMT_UUID); 216162306a36Sopenharmony_ci 216262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_swap_extent_class, 216362306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, int which), 216462306a36Sopenharmony_ci TP_ARGS(ip, which), 216562306a36Sopenharmony_ci TP_STRUCT__entry( 216662306a36Sopenharmony_ci __field(dev_t, dev) 216762306a36Sopenharmony_ci __field(int, which) 216862306a36Sopenharmony_ci __field(xfs_ino_t, ino) 216962306a36Sopenharmony_ci __field(int, format) 217062306a36Sopenharmony_ci __field(xfs_extnum_t, nex) 217162306a36Sopenharmony_ci __field(int, broot_size) 217262306a36Sopenharmony_ci __field(int, fork_off) 217362306a36Sopenharmony_ci ), 217462306a36Sopenharmony_ci TP_fast_assign( 217562306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 217662306a36Sopenharmony_ci __entry->which = which; 217762306a36Sopenharmony_ci __entry->ino = ip->i_ino; 217862306a36Sopenharmony_ci __entry->format = ip->i_df.if_format; 217962306a36Sopenharmony_ci __entry->nex = ip->i_df.if_nextents; 218062306a36Sopenharmony_ci __entry->broot_size = ip->i_df.if_broot_bytes; 218162306a36Sopenharmony_ci __entry->fork_off = xfs_inode_fork_boff(ip); 218262306a36Sopenharmony_ci ), 218362306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx (%s), %s format, num_extents %llu, " 218462306a36Sopenharmony_ci "broot size %d, forkoff 0x%x", 218562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 218662306a36Sopenharmony_ci __entry->ino, 218762306a36Sopenharmony_ci __print_symbolic(__entry->which, XFS_SWAPEXT_INODES), 218862306a36Sopenharmony_ci __print_symbolic(__entry->format, XFS_INODE_FORMAT_STR), 218962306a36Sopenharmony_ci __entry->nex, 219062306a36Sopenharmony_ci __entry->broot_size, 219162306a36Sopenharmony_ci __entry->fork_off) 219262306a36Sopenharmony_ci) 219362306a36Sopenharmony_ci 219462306a36Sopenharmony_ci#define DEFINE_SWAPEXT_EVENT(name) \ 219562306a36Sopenharmony_ciDEFINE_EVENT(xfs_swap_extent_class, name, \ 219662306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, int which), \ 219762306a36Sopenharmony_ci TP_ARGS(ip, which)) 219862306a36Sopenharmony_ci 219962306a36Sopenharmony_ciDEFINE_SWAPEXT_EVENT(xfs_swap_extent_before); 220062306a36Sopenharmony_ciDEFINE_SWAPEXT_EVENT(xfs_swap_extent_after); 220162306a36Sopenharmony_ci 220262306a36Sopenharmony_ciTRACE_EVENT(xfs_log_recover, 220362306a36Sopenharmony_ci TP_PROTO(struct xlog *log, xfs_daddr_t headblk, xfs_daddr_t tailblk), 220462306a36Sopenharmony_ci TP_ARGS(log, headblk, tailblk), 220562306a36Sopenharmony_ci TP_STRUCT__entry( 220662306a36Sopenharmony_ci __field(dev_t, dev) 220762306a36Sopenharmony_ci __field(xfs_daddr_t, headblk) 220862306a36Sopenharmony_ci __field(xfs_daddr_t, tailblk) 220962306a36Sopenharmony_ci ), 221062306a36Sopenharmony_ci TP_fast_assign( 221162306a36Sopenharmony_ci __entry->dev = log->l_mp->m_super->s_dev; 221262306a36Sopenharmony_ci __entry->headblk = headblk; 221362306a36Sopenharmony_ci __entry->tailblk = tailblk; 221462306a36Sopenharmony_ci ), 221562306a36Sopenharmony_ci TP_printk("dev %d:%d headblk 0x%llx tailblk 0x%llx", 221662306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), __entry->headblk, 221762306a36Sopenharmony_ci __entry->tailblk) 221862306a36Sopenharmony_ci) 221962306a36Sopenharmony_ci 222062306a36Sopenharmony_ciTRACE_EVENT(xfs_log_recover_record, 222162306a36Sopenharmony_ci TP_PROTO(struct xlog *log, struct xlog_rec_header *rhead, int pass), 222262306a36Sopenharmony_ci TP_ARGS(log, rhead, pass), 222362306a36Sopenharmony_ci TP_STRUCT__entry( 222462306a36Sopenharmony_ci __field(dev_t, dev) 222562306a36Sopenharmony_ci __field(xfs_lsn_t, lsn) 222662306a36Sopenharmony_ci __field(int, len) 222762306a36Sopenharmony_ci __field(int, num_logops) 222862306a36Sopenharmony_ci __field(int, pass) 222962306a36Sopenharmony_ci ), 223062306a36Sopenharmony_ci TP_fast_assign( 223162306a36Sopenharmony_ci __entry->dev = log->l_mp->m_super->s_dev; 223262306a36Sopenharmony_ci __entry->lsn = be64_to_cpu(rhead->h_lsn); 223362306a36Sopenharmony_ci __entry->len = be32_to_cpu(rhead->h_len); 223462306a36Sopenharmony_ci __entry->num_logops = be32_to_cpu(rhead->h_num_logops); 223562306a36Sopenharmony_ci __entry->pass = pass; 223662306a36Sopenharmony_ci ), 223762306a36Sopenharmony_ci TP_printk("dev %d:%d lsn 0x%llx len 0x%x num_logops 0x%x pass %d", 223862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 223962306a36Sopenharmony_ci __entry->lsn, __entry->len, __entry->num_logops, 224062306a36Sopenharmony_ci __entry->pass) 224162306a36Sopenharmony_ci) 224262306a36Sopenharmony_ci 224362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_log_recover_item_class, 224462306a36Sopenharmony_ci TP_PROTO(struct xlog *log, struct xlog_recover *trans, 224562306a36Sopenharmony_ci struct xlog_recover_item *item, int pass), 224662306a36Sopenharmony_ci TP_ARGS(log, trans, item, pass), 224762306a36Sopenharmony_ci TP_STRUCT__entry( 224862306a36Sopenharmony_ci __field(dev_t, dev) 224962306a36Sopenharmony_ci __field(unsigned long, item) 225062306a36Sopenharmony_ci __field(xlog_tid_t, tid) 225162306a36Sopenharmony_ci __field(xfs_lsn_t, lsn) 225262306a36Sopenharmony_ci __field(int, type) 225362306a36Sopenharmony_ci __field(int, pass) 225462306a36Sopenharmony_ci __field(int, count) 225562306a36Sopenharmony_ci __field(int, total) 225662306a36Sopenharmony_ci ), 225762306a36Sopenharmony_ci TP_fast_assign( 225862306a36Sopenharmony_ci __entry->dev = log->l_mp->m_super->s_dev; 225962306a36Sopenharmony_ci __entry->item = (unsigned long)item; 226062306a36Sopenharmony_ci __entry->tid = trans->r_log_tid; 226162306a36Sopenharmony_ci __entry->lsn = trans->r_lsn; 226262306a36Sopenharmony_ci __entry->type = ITEM_TYPE(item); 226362306a36Sopenharmony_ci __entry->pass = pass; 226462306a36Sopenharmony_ci __entry->count = item->ri_cnt; 226562306a36Sopenharmony_ci __entry->total = item->ri_total; 226662306a36Sopenharmony_ci ), 226762306a36Sopenharmony_ci TP_printk("dev %d:%d tid 0x%x lsn 0x%llx, pass %d, item %p, " 226862306a36Sopenharmony_ci "item type %s item region count/total %d/%d", 226962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 227062306a36Sopenharmony_ci __entry->tid, 227162306a36Sopenharmony_ci __entry->lsn, 227262306a36Sopenharmony_ci __entry->pass, 227362306a36Sopenharmony_ci (void *)__entry->item, 227462306a36Sopenharmony_ci __print_symbolic(__entry->type, XFS_LI_TYPE_DESC), 227562306a36Sopenharmony_ci __entry->count, 227662306a36Sopenharmony_ci __entry->total) 227762306a36Sopenharmony_ci) 227862306a36Sopenharmony_ci 227962306a36Sopenharmony_ci#define DEFINE_LOG_RECOVER_ITEM(name) \ 228062306a36Sopenharmony_ciDEFINE_EVENT(xfs_log_recover_item_class, name, \ 228162306a36Sopenharmony_ci TP_PROTO(struct xlog *log, struct xlog_recover *trans, \ 228262306a36Sopenharmony_ci struct xlog_recover_item *item, int pass), \ 228362306a36Sopenharmony_ci TP_ARGS(log, trans, item, pass)) 228462306a36Sopenharmony_ci 228562306a36Sopenharmony_ciDEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_add); 228662306a36Sopenharmony_ciDEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_add_cont); 228762306a36Sopenharmony_ciDEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_reorder_head); 228862306a36Sopenharmony_ciDEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_reorder_tail); 228962306a36Sopenharmony_ciDEFINE_LOG_RECOVER_ITEM(xfs_log_recover_item_recover); 229062306a36Sopenharmony_ci 229162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_log_recover_buf_item_class, 229262306a36Sopenharmony_ci TP_PROTO(struct xlog *log, struct xfs_buf_log_format *buf_f), 229362306a36Sopenharmony_ci TP_ARGS(log, buf_f), 229462306a36Sopenharmony_ci TP_STRUCT__entry( 229562306a36Sopenharmony_ci __field(dev_t, dev) 229662306a36Sopenharmony_ci __field(int64_t, blkno) 229762306a36Sopenharmony_ci __field(unsigned short, len) 229862306a36Sopenharmony_ci __field(unsigned short, flags) 229962306a36Sopenharmony_ci __field(unsigned short, size) 230062306a36Sopenharmony_ci __field(unsigned int, map_size) 230162306a36Sopenharmony_ci ), 230262306a36Sopenharmony_ci TP_fast_assign( 230362306a36Sopenharmony_ci __entry->dev = log->l_mp->m_super->s_dev; 230462306a36Sopenharmony_ci __entry->blkno = buf_f->blf_blkno; 230562306a36Sopenharmony_ci __entry->len = buf_f->blf_len; 230662306a36Sopenharmony_ci __entry->flags = buf_f->blf_flags; 230762306a36Sopenharmony_ci __entry->size = buf_f->blf_size; 230862306a36Sopenharmony_ci __entry->map_size = buf_f->blf_map_size; 230962306a36Sopenharmony_ci ), 231062306a36Sopenharmony_ci TP_printk("dev %d:%d daddr 0x%llx, bbcount 0x%x, flags 0x%x, size %d, " 231162306a36Sopenharmony_ci "map_size %d", 231262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 231362306a36Sopenharmony_ci __entry->blkno, 231462306a36Sopenharmony_ci __entry->len, 231562306a36Sopenharmony_ci __entry->flags, 231662306a36Sopenharmony_ci __entry->size, 231762306a36Sopenharmony_ci __entry->map_size) 231862306a36Sopenharmony_ci) 231962306a36Sopenharmony_ci 232062306a36Sopenharmony_ci#define DEFINE_LOG_RECOVER_BUF_ITEM(name) \ 232162306a36Sopenharmony_ciDEFINE_EVENT(xfs_log_recover_buf_item_class, name, \ 232262306a36Sopenharmony_ci TP_PROTO(struct xlog *log, struct xfs_buf_log_format *buf_f), \ 232362306a36Sopenharmony_ci TP_ARGS(log, buf_f)) 232462306a36Sopenharmony_ci 232562306a36Sopenharmony_ciDEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_not_cancel); 232662306a36Sopenharmony_ciDEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_cancel); 232762306a36Sopenharmony_ciDEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_cancel_add); 232862306a36Sopenharmony_ciDEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_cancel_ref_inc); 232962306a36Sopenharmony_ciDEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_recover); 233062306a36Sopenharmony_ciDEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_skip); 233162306a36Sopenharmony_ciDEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_inode_buf); 233262306a36Sopenharmony_ciDEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_reg_buf); 233362306a36Sopenharmony_ciDEFINE_LOG_RECOVER_BUF_ITEM(xfs_log_recover_buf_dquot_buf); 233462306a36Sopenharmony_ci 233562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_log_recover_ino_item_class, 233662306a36Sopenharmony_ci TP_PROTO(struct xlog *log, struct xfs_inode_log_format *in_f), 233762306a36Sopenharmony_ci TP_ARGS(log, in_f), 233862306a36Sopenharmony_ci TP_STRUCT__entry( 233962306a36Sopenharmony_ci __field(dev_t, dev) 234062306a36Sopenharmony_ci __field(xfs_ino_t, ino) 234162306a36Sopenharmony_ci __field(unsigned short, size) 234262306a36Sopenharmony_ci __field(int, fields) 234362306a36Sopenharmony_ci __field(unsigned short, asize) 234462306a36Sopenharmony_ci __field(unsigned short, dsize) 234562306a36Sopenharmony_ci __field(int64_t, blkno) 234662306a36Sopenharmony_ci __field(int, len) 234762306a36Sopenharmony_ci __field(int, boffset) 234862306a36Sopenharmony_ci ), 234962306a36Sopenharmony_ci TP_fast_assign( 235062306a36Sopenharmony_ci __entry->dev = log->l_mp->m_super->s_dev; 235162306a36Sopenharmony_ci __entry->ino = in_f->ilf_ino; 235262306a36Sopenharmony_ci __entry->size = in_f->ilf_size; 235362306a36Sopenharmony_ci __entry->fields = in_f->ilf_fields; 235462306a36Sopenharmony_ci __entry->asize = in_f->ilf_asize; 235562306a36Sopenharmony_ci __entry->dsize = in_f->ilf_dsize; 235662306a36Sopenharmony_ci __entry->blkno = in_f->ilf_blkno; 235762306a36Sopenharmony_ci __entry->len = in_f->ilf_len; 235862306a36Sopenharmony_ci __entry->boffset = in_f->ilf_boffset; 235962306a36Sopenharmony_ci ), 236062306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx, size %u, fields 0x%x, asize %d, " 236162306a36Sopenharmony_ci "dsize %d, daddr 0x%llx, bbcount 0x%x, boffset %d", 236262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 236362306a36Sopenharmony_ci __entry->ino, 236462306a36Sopenharmony_ci __entry->size, 236562306a36Sopenharmony_ci __entry->fields, 236662306a36Sopenharmony_ci __entry->asize, 236762306a36Sopenharmony_ci __entry->dsize, 236862306a36Sopenharmony_ci __entry->blkno, 236962306a36Sopenharmony_ci __entry->len, 237062306a36Sopenharmony_ci __entry->boffset) 237162306a36Sopenharmony_ci) 237262306a36Sopenharmony_ci#define DEFINE_LOG_RECOVER_INO_ITEM(name) \ 237362306a36Sopenharmony_ciDEFINE_EVENT(xfs_log_recover_ino_item_class, name, \ 237462306a36Sopenharmony_ci TP_PROTO(struct xlog *log, struct xfs_inode_log_format *in_f), \ 237562306a36Sopenharmony_ci TP_ARGS(log, in_f)) 237662306a36Sopenharmony_ci 237762306a36Sopenharmony_ciDEFINE_LOG_RECOVER_INO_ITEM(xfs_log_recover_inode_recover); 237862306a36Sopenharmony_ciDEFINE_LOG_RECOVER_INO_ITEM(xfs_log_recover_inode_cancel); 237962306a36Sopenharmony_ciDEFINE_LOG_RECOVER_INO_ITEM(xfs_log_recover_inode_skip); 238062306a36Sopenharmony_ci 238162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_log_recover_icreate_item_class, 238262306a36Sopenharmony_ci TP_PROTO(struct xlog *log, struct xfs_icreate_log *in_f), 238362306a36Sopenharmony_ci TP_ARGS(log, in_f), 238462306a36Sopenharmony_ci TP_STRUCT__entry( 238562306a36Sopenharmony_ci __field(dev_t, dev) 238662306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 238762306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 238862306a36Sopenharmony_ci __field(unsigned int, count) 238962306a36Sopenharmony_ci __field(unsigned int, isize) 239062306a36Sopenharmony_ci __field(xfs_agblock_t, length) 239162306a36Sopenharmony_ci __field(unsigned int, gen) 239262306a36Sopenharmony_ci ), 239362306a36Sopenharmony_ci TP_fast_assign( 239462306a36Sopenharmony_ci __entry->dev = log->l_mp->m_super->s_dev; 239562306a36Sopenharmony_ci __entry->agno = be32_to_cpu(in_f->icl_ag); 239662306a36Sopenharmony_ci __entry->agbno = be32_to_cpu(in_f->icl_agbno); 239762306a36Sopenharmony_ci __entry->count = be32_to_cpu(in_f->icl_count); 239862306a36Sopenharmony_ci __entry->isize = be32_to_cpu(in_f->icl_isize); 239962306a36Sopenharmony_ci __entry->length = be32_to_cpu(in_f->icl_length); 240062306a36Sopenharmony_ci __entry->gen = be32_to_cpu(in_f->icl_gen); 240162306a36Sopenharmony_ci ), 240262306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x ireccount %u isize %u gen 0x%x", 240362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 240462306a36Sopenharmony_ci __entry->agno, 240562306a36Sopenharmony_ci __entry->agbno, 240662306a36Sopenharmony_ci __entry->length, 240762306a36Sopenharmony_ci __entry->count, 240862306a36Sopenharmony_ci __entry->isize, 240962306a36Sopenharmony_ci __entry->gen) 241062306a36Sopenharmony_ci) 241162306a36Sopenharmony_ci#define DEFINE_LOG_RECOVER_ICREATE_ITEM(name) \ 241262306a36Sopenharmony_ciDEFINE_EVENT(xfs_log_recover_icreate_item_class, name, \ 241362306a36Sopenharmony_ci TP_PROTO(struct xlog *log, struct xfs_icreate_log *in_f), \ 241462306a36Sopenharmony_ci TP_ARGS(log, in_f)) 241562306a36Sopenharmony_ci 241662306a36Sopenharmony_ciDEFINE_LOG_RECOVER_ICREATE_ITEM(xfs_log_recover_icreate_cancel); 241762306a36Sopenharmony_ciDEFINE_LOG_RECOVER_ICREATE_ITEM(xfs_log_recover_icreate_recover); 241862306a36Sopenharmony_ci 241962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_discard_class, 242062306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 242162306a36Sopenharmony_ci xfs_agblock_t agbno, xfs_extlen_t len), 242262306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, len), 242362306a36Sopenharmony_ci TP_STRUCT__entry( 242462306a36Sopenharmony_ci __field(dev_t, dev) 242562306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 242662306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 242762306a36Sopenharmony_ci __field(xfs_extlen_t, len) 242862306a36Sopenharmony_ci ), 242962306a36Sopenharmony_ci TP_fast_assign( 243062306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 243162306a36Sopenharmony_ci __entry->agno = agno; 243262306a36Sopenharmony_ci __entry->agbno = agbno; 243362306a36Sopenharmony_ci __entry->len = len; 243462306a36Sopenharmony_ci ), 243562306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x", 243662306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 243762306a36Sopenharmony_ci __entry->agno, 243862306a36Sopenharmony_ci __entry->agbno, 243962306a36Sopenharmony_ci __entry->len) 244062306a36Sopenharmony_ci) 244162306a36Sopenharmony_ci 244262306a36Sopenharmony_ci#define DEFINE_DISCARD_EVENT(name) \ 244362306a36Sopenharmony_ciDEFINE_EVENT(xfs_discard_class, name, \ 244462306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 244562306a36Sopenharmony_ci xfs_agblock_t agbno, xfs_extlen_t len), \ 244662306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, len)) 244762306a36Sopenharmony_ciDEFINE_DISCARD_EVENT(xfs_discard_extent); 244862306a36Sopenharmony_ciDEFINE_DISCARD_EVENT(xfs_discard_toosmall); 244962306a36Sopenharmony_ciDEFINE_DISCARD_EVENT(xfs_discard_exclude); 245062306a36Sopenharmony_ciDEFINE_DISCARD_EVENT(xfs_discard_busy); 245162306a36Sopenharmony_ci 245262306a36Sopenharmony_ci/* btree cursor events */ 245362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_BNOi); 245462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_CNTi); 245562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_BMAPi); 245662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_INOi); 245762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_FINOi); 245862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_RMAPi); 245962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_BTNUM_REFCi); 246062306a36Sopenharmony_ci 246162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_btree_cur_class, 246262306a36Sopenharmony_ci TP_PROTO(struct xfs_btree_cur *cur, int level, struct xfs_buf *bp), 246362306a36Sopenharmony_ci TP_ARGS(cur, level, bp), 246462306a36Sopenharmony_ci TP_STRUCT__entry( 246562306a36Sopenharmony_ci __field(dev_t, dev) 246662306a36Sopenharmony_ci __field(xfs_btnum_t, btnum) 246762306a36Sopenharmony_ci __field(int, level) 246862306a36Sopenharmony_ci __field(int, nlevels) 246962306a36Sopenharmony_ci __field(int, ptr) 247062306a36Sopenharmony_ci __field(xfs_daddr_t, daddr) 247162306a36Sopenharmony_ci ), 247262306a36Sopenharmony_ci TP_fast_assign( 247362306a36Sopenharmony_ci __entry->dev = cur->bc_mp->m_super->s_dev; 247462306a36Sopenharmony_ci __entry->btnum = cur->bc_btnum; 247562306a36Sopenharmony_ci __entry->level = level; 247662306a36Sopenharmony_ci __entry->nlevels = cur->bc_nlevels; 247762306a36Sopenharmony_ci __entry->ptr = cur->bc_levels[level].ptr; 247862306a36Sopenharmony_ci __entry->daddr = bp ? xfs_buf_daddr(bp) : -1; 247962306a36Sopenharmony_ci ), 248062306a36Sopenharmony_ci TP_printk("dev %d:%d btree %s level %d/%d ptr %d daddr 0x%llx", 248162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 248262306a36Sopenharmony_ci __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 248362306a36Sopenharmony_ci __entry->level, 248462306a36Sopenharmony_ci __entry->nlevels, 248562306a36Sopenharmony_ci __entry->ptr, 248662306a36Sopenharmony_ci (unsigned long long)__entry->daddr) 248762306a36Sopenharmony_ci) 248862306a36Sopenharmony_ci 248962306a36Sopenharmony_ci#define DEFINE_BTREE_CUR_EVENT(name) \ 249062306a36Sopenharmony_ciDEFINE_EVENT(xfs_btree_cur_class, name, \ 249162306a36Sopenharmony_ci TP_PROTO(struct xfs_btree_cur *cur, int level, struct xfs_buf *bp), \ 249262306a36Sopenharmony_ci TP_ARGS(cur, level, bp)) 249362306a36Sopenharmony_ciDEFINE_BTREE_CUR_EVENT(xfs_btree_updkeys); 249462306a36Sopenharmony_ciDEFINE_BTREE_CUR_EVENT(xfs_btree_overlapped_query_range); 249562306a36Sopenharmony_ci 249662306a36Sopenharmony_ci/* deferred ops */ 249762306a36Sopenharmony_cistruct xfs_defer_pending; 249862306a36Sopenharmony_ci 249962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_defer_class, 250062306a36Sopenharmony_ci TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip), 250162306a36Sopenharmony_ci TP_ARGS(tp, caller_ip), 250262306a36Sopenharmony_ci TP_STRUCT__entry( 250362306a36Sopenharmony_ci __field(dev_t, dev) 250462306a36Sopenharmony_ci __field(struct xfs_trans *, tp) 250562306a36Sopenharmony_ci __field(char, committed) 250662306a36Sopenharmony_ci __field(unsigned long, caller_ip) 250762306a36Sopenharmony_ci ), 250862306a36Sopenharmony_ci TP_fast_assign( 250962306a36Sopenharmony_ci __entry->dev = tp->t_mountp->m_super->s_dev; 251062306a36Sopenharmony_ci __entry->tp = tp; 251162306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 251262306a36Sopenharmony_ci ), 251362306a36Sopenharmony_ci TP_printk("dev %d:%d tp %p caller %pS", 251462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 251562306a36Sopenharmony_ci __entry->tp, 251662306a36Sopenharmony_ci (char *)__entry->caller_ip) 251762306a36Sopenharmony_ci) 251862306a36Sopenharmony_ci#define DEFINE_DEFER_EVENT(name) \ 251962306a36Sopenharmony_ciDEFINE_EVENT(xfs_defer_class, name, \ 252062306a36Sopenharmony_ci TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip), \ 252162306a36Sopenharmony_ci TP_ARGS(tp, caller_ip)) 252262306a36Sopenharmony_ci 252362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_defer_error_class, 252462306a36Sopenharmony_ci TP_PROTO(struct xfs_trans *tp, int error), 252562306a36Sopenharmony_ci TP_ARGS(tp, error), 252662306a36Sopenharmony_ci TP_STRUCT__entry( 252762306a36Sopenharmony_ci __field(dev_t, dev) 252862306a36Sopenharmony_ci __field(struct xfs_trans *, tp) 252962306a36Sopenharmony_ci __field(char, committed) 253062306a36Sopenharmony_ci __field(int, error) 253162306a36Sopenharmony_ci ), 253262306a36Sopenharmony_ci TP_fast_assign( 253362306a36Sopenharmony_ci __entry->dev = tp->t_mountp->m_super->s_dev; 253462306a36Sopenharmony_ci __entry->tp = tp; 253562306a36Sopenharmony_ci __entry->error = error; 253662306a36Sopenharmony_ci ), 253762306a36Sopenharmony_ci TP_printk("dev %d:%d tp %p err %d", 253862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 253962306a36Sopenharmony_ci __entry->tp, 254062306a36Sopenharmony_ci __entry->error) 254162306a36Sopenharmony_ci) 254262306a36Sopenharmony_ci#define DEFINE_DEFER_ERROR_EVENT(name) \ 254362306a36Sopenharmony_ciDEFINE_EVENT(xfs_defer_error_class, name, \ 254462306a36Sopenharmony_ci TP_PROTO(struct xfs_trans *tp, int error), \ 254562306a36Sopenharmony_ci TP_ARGS(tp, error)) 254662306a36Sopenharmony_ci 254762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_defer_pending_class, 254862306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, struct xfs_defer_pending *dfp), 254962306a36Sopenharmony_ci TP_ARGS(mp, dfp), 255062306a36Sopenharmony_ci TP_STRUCT__entry( 255162306a36Sopenharmony_ci __field(dev_t, dev) 255262306a36Sopenharmony_ci __field(int, type) 255362306a36Sopenharmony_ci __field(void *, intent) 255462306a36Sopenharmony_ci __field(char, committed) 255562306a36Sopenharmony_ci __field(int, nr) 255662306a36Sopenharmony_ci ), 255762306a36Sopenharmony_ci TP_fast_assign( 255862306a36Sopenharmony_ci __entry->dev = mp ? mp->m_super->s_dev : 0; 255962306a36Sopenharmony_ci __entry->type = dfp->dfp_type; 256062306a36Sopenharmony_ci __entry->intent = dfp->dfp_intent; 256162306a36Sopenharmony_ci __entry->committed = dfp->dfp_done != NULL; 256262306a36Sopenharmony_ci __entry->nr = dfp->dfp_count; 256362306a36Sopenharmony_ci ), 256462306a36Sopenharmony_ci TP_printk("dev %d:%d optype %d intent %p committed %d nr %d", 256562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 256662306a36Sopenharmony_ci __entry->type, 256762306a36Sopenharmony_ci __entry->intent, 256862306a36Sopenharmony_ci __entry->committed, 256962306a36Sopenharmony_ci __entry->nr) 257062306a36Sopenharmony_ci) 257162306a36Sopenharmony_ci#define DEFINE_DEFER_PENDING_EVENT(name) \ 257262306a36Sopenharmony_ciDEFINE_EVENT(xfs_defer_pending_class, name, \ 257362306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, struct xfs_defer_pending *dfp), \ 257462306a36Sopenharmony_ci TP_ARGS(mp, dfp)) 257562306a36Sopenharmony_ci 257662306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_phys_extent_deferred_class, 257762306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 257862306a36Sopenharmony_ci int type, xfs_agblock_t agbno, xfs_extlen_t len), 257962306a36Sopenharmony_ci TP_ARGS(mp, agno, type, agbno, len), 258062306a36Sopenharmony_ci TP_STRUCT__entry( 258162306a36Sopenharmony_ci __field(dev_t, dev) 258262306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 258362306a36Sopenharmony_ci __field(int, type) 258462306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 258562306a36Sopenharmony_ci __field(xfs_extlen_t, len) 258662306a36Sopenharmony_ci ), 258762306a36Sopenharmony_ci TP_fast_assign( 258862306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 258962306a36Sopenharmony_ci __entry->agno = agno; 259062306a36Sopenharmony_ci __entry->type = type; 259162306a36Sopenharmony_ci __entry->agbno = agbno; 259262306a36Sopenharmony_ci __entry->len = len; 259362306a36Sopenharmony_ci ), 259462306a36Sopenharmony_ci TP_printk("dev %d:%d op %d agno 0x%x agbno 0x%x fsbcount 0x%x", 259562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 259662306a36Sopenharmony_ci __entry->type, 259762306a36Sopenharmony_ci __entry->agno, 259862306a36Sopenharmony_ci __entry->agbno, 259962306a36Sopenharmony_ci __entry->len) 260062306a36Sopenharmony_ci); 260162306a36Sopenharmony_ci#define DEFINE_PHYS_EXTENT_DEFERRED_EVENT(name) \ 260262306a36Sopenharmony_ciDEFINE_EVENT(xfs_phys_extent_deferred_class, name, \ 260362306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 260462306a36Sopenharmony_ci int type, \ 260562306a36Sopenharmony_ci xfs_agblock_t bno, \ 260662306a36Sopenharmony_ci xfs_extlen_t len), \ 260762306a36Sopenharmony_ci TP_ARGS(mp, agno, type, bno, len)) 260862306a36Sopenharmony_ci 260962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_map_extent_deferred_class, 261062306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 261162306a36Sopenharmony_ci int op, 261262306a36Sopenharmony_ci xfs_agblock_t agbno, 261362306a36Sopenharmony_ci xfs_ino_t ino, 261462306a36Sopenharmony_ci int whichfork, 261562306a36Sopenharmony_ci xfs_fileoff_t offset, 261662306a36Sopenharmony_ci xfs_filblks_t len, 261762306a36Sopenharmony_ci xfs_exntst_t state), 261862306a36Sopenharmony_ci TP_ARGS(mp, agno, op, agbno, ino, whichfork, offset, len, state), 261962306a36Sopenharmony_ci TP_STRUCT__entry( 262062306a36Sopenharmony_ci __field(dev_t, dev) 262162306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 262262306a36Sopenharmony_ci __field(xfs_ino_t, ino) 262362306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 262462306a36Sopenharmony_ci __field(int, whichfork) 262562306a36Sopenharmony_ci __field(xfs_fileoff_t, l_loff) 262662306a36Sopenharmony_ci __field(xfs_filblks_t, l_len) 262762306a36Sopenharmony_ci __field(xfs_exntst_t, l_state) 262862306a36Sopenharmony_ci __field(int, op) 262962306a36Sopenharmony_ci ), 263062306a36Sopenharmony_ci TP_fast_assign( 263162306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 263262306a36Sopenharmony_ci __entry->agno = agno; 263362306a36Sopenharmony_ci __entry->ino = ino; 263462306a36Sopenharmony_ci __entry->agbno = agbno; 263562306a36Sopenharmony_ci __entry->whichfork = whichfork; 263662306a36Sopenharmony_ci __entry->l_loff = offset; 263762306a36Sopenharmony_ci __entry->l_len = len; 263862306a36Sopenharmony_ci __entry->l_state = state; 263962306a36Sopenharmony_ci __entry->op = op; 264062306a36Sopenharmony_ci ), 264162306a36Sopenharmony_ci 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", 264262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 264362306a36Sopenharmony_ci __entry->op, 264462306a36Sopenharmony_ci __entry->agno, 264562306a36Sopenharmony_ci __entry->agbno, 264662306a36Sopenharmony_ci __entry->ino, 264762306a36Sopenharmony_ci __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS), 264862306a36Sopenharmony_ci __entry->l_loff, 264962306a36Sopenharmony_ci __entry->l_len, 265062306a36Sopenharmony_ci __entry->l_state) 265162306a36Sopenharmony_ci); 265262306a36Sopenharmony_ci#define DEFINE_MAP_EXTENT_DEFERRED_EVENT(name) \ 265362306a36Sopenharmony_ciDEFINE_EVENT(xfs_map_extent_deferred_class, name, \ 265462306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 265562306a36Sopenharmony_ci int op, \ 265662306a36Sopenharmony_ci xfs_agblock_t agbno, \ 265762306a36Sopenharmony_ci xfs_ino_t ino, \ 265862306a36Sopenharmony_ci int whichfork, \ 265962306a36Sopenharmony_ci xfs_fileoff_t offset, \ 266062306a36Sopenharmony_ci xfs_filblks_t len, \ 266162306a36Sopenharmony_ci xfs_exntst_t state), \ 266262306a36Sopenharmony_ci TP_ARGS(mp, agno, op, agbno, ino, whichfork, offset, len, state)) 266362306a36Sopenharmony_ci 266462306a36Sopenharmony_ciDEFINE_DEFER_EVENT(xfs_defer_cancel); 266562306a36Sopenharmony_ciDEFINE_DEFER_EVENT(xfs_defer_trans_roll); 266662306a36Sopenharmony_ciDEFINE_DEFER_EVENT(xfs_defer_trans_abort); 266762306a36Sopenharmony_ciDEFINE_DEFER_EVENT(xfs_defer_finish); 266862306a36Sopenharmony_ciDEFINE_DEFER_EVENT(xfs_defer_finish_done); 266962306a36Sopenharmony_ci 267062306a36Sopenharmony_ciDEFINE_DEFER_ERROR_EVENT(xfs_defer_trans_roll_error); 267162306a36Sopenharmony_ciDEFINE_DEFER_ERROR_EVENT(xfs_defer_finish_error); 267262306a36Sopenharmony_ci 267362306a36Sopenharmony_ciDEFINE_DEFER_PENDING_EVENT(xfs_defer_create_intent); 267462306a36Sopenharmony_ciDEFINE_DEFER_PENDING_EVENT(xfs_defer_cancel_list); 267562306a36Sopenharmony_ciDEFINE_DEFER_PENDING_EVENT(xfs_defer_pending_finish); 267662306a36Sopenharmony_ciDEFINE_DEFER_PENDING_EVENT(xfs_defer_pending_abort); 267762306a36Sopenharmony_ciDEFINE_DEFER_PENDING_EVENT(xfs_defer_relog_intent); 267862306a36Sopenharmony_ci 267962306a36Sopenharmony_ci#define DEFINE_BMAP_FREE_DEFERRED_EVENT DEFINE_PHYS_EXTENT_DEFERRED_EVENT 268062306a36Sopenharmony_ciDEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_bmap_free_defer); 268162306a36Sopenharmony_ciDEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_bmap_free_deferred); 268262306a36Sopenharmony_ciDEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_agfl_free_defer); 268362306a36Sopenharmony_ciDEFINE_BMAP_FREE_DEFERRED_EVENT(xfs_agfl_free_deferred); 268462306a36Sopenharmony_ci 268562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_defer_pending_item_class, 268662306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, struct xfs_defer_pending *dfp, 268762306a36Sopenharmony_ci void *item), 268862306a36Sopenharmony_ci TP_ARGS(mp, dfp, item), 268962306a36Sopenharmony_ci TP_STRUCT__entry( 269062306a36Sopenharmony_ci __field(dev_t, dev) 269162306a36Sopenharmony_ci __field(int, type) 269262306a36Sopenharmony_ci __field(void *, intent) 269362306a36Sopenharmony_ci __field(void *, item) 269462306a36Sopenharmony_ci __field(char, committed) 269562306a36Sopenharmony_ci __field(int, nr) 269662306a36Sopenharmony_ci ), 269762306a36Sopenharmony_ci TP_fast_assign( 269862306a36Sopenharmony_ci __entry->dev = mp ? mp->m_super->s_dev : 0; 269962306a36Sopenharmony_ci __entry->type = dfp->dfp_type; 270062306a36Sopenharmony_ci __entry->intent = dfp->dfp_intent; 270162306a36Sopenharmony_ci __entry->item = item; 270262306a36Sopenharmony_ci __entry->committed = dfp->dfp_done != NULL; 270362306a36Sopenharmony_ci __entry->nr = dfp->dfp_count; 270462306a36Sopenharmony_ci ), 270562306a36Sopenharmony_ci TP_printk("dev %d:%d optype %d intent %p item %p committed %d nr %d", 270662306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 270762306a36Sopenharmony_ci __entry->type, 270862306a36Sopenharmony_ci __entry->intent, 270962306a36Sopenharmony_ci __entry->item, 271062306a36Sopenharmony_ci __entry->committed, 271162306a36Sopenharmony_ci __entry->nr) 271262306a36Sopenharmony_ci) 271362306a36Sopenharmony_ci#define DEFINE_DEFER_PENDING_ITEM_EVENT(name) \ 271462306a36Sopenharmony_ciDEFINE_EVENT(xfs_defer_pending_item_class, name, \ 271562306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, struct xfs_defer_pending *dfp, \ 271662306a36Sopenharmony_ci void *item), \ 271762306a36Sopenharmony_ci TP_ARGS(mp, dfp, item)) 271862306a36Sopenharmony_ci 271962306a36Sopenharmony_ciDEFINE_DEFER_PENDING_ITEM_EVENT(xfs_defer_add_item); 272062306a36Sopenharmony_ciDEFINE_DEFER_PENDING_ITEM_EVENT(xfs_defer_cancel_item); 272162306a36Sopenharmony_ciDEFINE_DEFER_PENDING_ITEM_EVENT(xfs_defer_finish_item); 272262306a36Sopenharmony_ci 272362306a36Sopenharmony_ci/* rmap tracepoints */ 272462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_rmap_class, 272562306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 272662306a36Sopenharmony_ci xfs_agblock_t agbno, xfs_extlen_t len, bool unwritten, 272762306a36Sopenharmony_ci const struct xfs_owner_info *oinfo), 272862306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, len, unwritten, oinfo), 272962306a36Sopenharmony_ci TP_STRUCT__entry( 273062306a36Sopenharmony_ci __field(dev_t, dev) 273162306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 273262306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 273362306a36Sopenharmony_ci __field(xfs_extlen_t, len) 273462306a36Sopenharmony_ci __field(uint64_t, owner) 273562306a36Sopenharmony_ci __field(uint64_t, offset) 273662306a36Sopenharmony_ci __field(unsigned long, flags) 273762306a36Sopenharmony_ci ), 273862306a36Sopenharmony_ci TP_fast_assign( 273962306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 274062306a36Sopenharmony_ci __entry->agno = agno; 274162306a36Sopenharmony_ci __entry->agbno = agbno; 274262306a36Sopenharmony_ci __entry->len = len; 274362306a36Sopenharmony_ci __entry->owner = oinfo->oi_owner; 274462306a36Sopenharmony_ci __entry->offset = oinfo->oi_offset; 274562306a36Sopenharmony_ci __entry->flags = oinfo->oi_flags; 274662306a36Sopenharmony_ci if (unwritten) 274762306a36Sopenharmony_ci __entry->flags |= XFS_RMAP_UNWRITTEN; 274862306a36Sopenharmony_ci ), 274962306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x owner 0x%llx fileoff 0x%llx flags 0x%lx", 275062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 275162306a36Sopenharmony_ci __entry->agno, 275262306a36Sopenharmony_ci __entry->agbno, 275362306a36Sopenharmony_ci __entry->len, 275462306a36Sopenharmony_ci __entry->owner, 275562306a36Sopenharmony_ci __entry->offset, 275662306a36Sopenharmony_ci __entry->flags) 275762306a36Sopenharmony_ci); 275862306a36Sopenharmony_ci#define DEFINE_RMAP_EVENT(name) \ 275962306a36Sopenharmony_ciDEFINE_EVENT(xfs_rmap_class, name, \ 276062306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 276162306a36Sopenharmony_ci xfs_agblock_t agbno, xfs_extlen_t len, bool unwritten, \ 276262306a36Sopenharmony_ci const struct xfs_owner_info *oinfo), \ 276362306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, len, unwritten, oinfo)) 276462306a36Sopenharmony_ci 276562306a36Sopenharmony_ci/* simple AG-based error/%ip tracepoint class */ 276662306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_ag_error_class, 276762306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, int error, 276862306a36Sopenharmony_ci unsigned long caller_ip), 276962306a36Sopenharmony_ci TP_ARGS(mp, agno, error, caller_ip), 277062306a36Sopenharmony_ci TP_STRUCT__entry( 277162306a36Sopenharmony_ci __field(dev_t, dev) 277262306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 277362306a36Sopenharmony_ci __field(int, error) 277462306a36Sopenharmony_ci __field(unsigned long, caller_ip) 277562306a36Sopenharmony_ci ), 277662306a36Sopenharmony_ci TP_fast_assign( 277762306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 277862306a36Sopenharmony_ci __entry->agno = agno; 277962306a36Sopenharmony_ci __entry->error = error; 278062306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 278162306a36Sopenharmony_ci ), 278262306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x error %d caller %pS", 278362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 278462306a36Sopenharmony_ci __entry->agno, 278562306a36Sopenharmony_ci __entry->error, 278662306a36Sopenharmony_ci (char *)__entry->caller_ip) 278762306a36Sopenharmony_ci); 278862306a36Sopenharmony_ci 278962306a36Sopenharmony_ci#define DEFINE_AG_ERROR_EVENT(name) \ 279062306a36Sopenharmony_ciDEFINE_EVENT(xfs_ag_error_class, name, \ 279162306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, int error, \ 279262306a36Sopenharmony_ci unsigned long caller_ip), \ 279362306a36Sopenharmony_ci TP_ARGS(mp, agno, error, caller_ip)) 279462306a36Sopenharmony_ci 279562306a36Sopenharmony_ciDEFINE_RMAP_EVENT(xfs_rmap_unmap); 279662306a36Sopenharmony_ciDEFINE_RMAP_EVENT(xfs_rmap_unmap_done); 279762306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_rmap_unmap_error); 279862306a36Sopenharmony_ciDEFINE_RMAP_EVENT(xfs_rmap_map); 279962306a36Sopenharmony_ciDEFINE_RMAP_EVENT(xfs_rmap_map_done); 280062306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_rmap_map_error); 280162306a36Sopenharmony_ciDEFINE_RMAP_EVENT(xfs_rmap_convert); 280262306a36Sopenharmony_ciDEFINE_RMAP_EVENT(xfs_rmap_convert_done); 280362306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_rmap_convert_error); 280462306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_rmap_convert_state); 280562306a36Sopenharmony_ci 280662306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_rmapbt_class, 280762306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 280862306a36Sopenharmony_ci xfs_agblock_t agbno, xfs_extlen_t len, 280962306a36Sopenharmony_ci uint64_t owner, uint64_t offset, unsigned int flags), 281062306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, len, owner, offset, flags), 281162306a36Sopenharmony_ci TP_STRUCT__entry( 281262306a36Sopenharmony_ci __field(dev_t, dev) 281362306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 281462306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 281562306a36Sopenharmony_ci __field(xfs_extlen_t, len) 281662306a36Sopenharmony_ci __field(uint64_t, owner) 281762306a36Sopenharmony_ci __field(uint64_t, offset) 281862306a36Sopenharmony_ci __field(unsigned int, flags) 281962306a36Sopenharmony_ci ), 282062306a36Sopenharmony_ci TP_fast_assign( 282162306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 282262306a36Sopenharmony_ci __entry->agno = agno; 282362306a36Sopenharmony_ci __entry->agbno = agbno; 282462306a36Sopenharmony_ci __entry->len = len; 282562306a36Sopenharmony_ci __entry->owner = owner; 282662306a36Sopenharmony_ci __entry->offset = offset; 282762306a36Sopenharmony_ci __entry->flags = flags; 282862306a36Sopenharmony_ci ), 282962306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x fsbcount 0x%x owner 0x%llx fileoff 0x%llx flags 0x%x", 283062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 283162306a36Sopenharmony_ci __entry->agno, 283262306a36Sopenharmony_ci __entry->agbno, 283362306a36Sopenharmony_ci __entry->len, 283462306a36Sopenharmony_ci __entry->owner, 283562306a36Sopenharmony_ci __entry->offset, 283662306a36Sopenharmony_ci __entry->flags) 283762306a36Sopenharmony_ci); 283862306a36Sopenharmony_ci#define DEFINE_RMAPBT_EVENT(name) \ 283962306a36Sopenharmony_ciDEFINE_EVENT(xfs_rmapbt_class, name, \ 284062306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 284162306a36Sopenharmony_ci xfs_agblock_t agbno, xfs_extlen_t len, \ 284262306a36Sopenharmony_ci uint64_t owner, uint64_t offset, unsigned int flags), \ 284362306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, len, owner, offset, flags)) 284462306a36Sopenharmony_ci 284562306a36Sopenharmony_ci#define DEFINE_RMAP_DEFERRED_EVENT DEFINE_MAP_EXTENT_DEFERRED_EVENT 284662306a36Sopenharmony_ciDEFINE_RMAP_DEFERRED_EVENT(xfs_rmap_defer); 284762306a36Sopenharmony_ciDEFINE_RMAP_DEFERRED_EVENT(xfs_rmap_deferred); 284862306a36Sopenharmony_ci 284962306a36Sopenharmony_ciDEFINE_BUSY_EVENT(xfs_rmapbt_alloc_block); 285062306a36Sopenharmony_ciDEFINE_BUSY_EVENT(xfs_rmapbt_free_block); 285162306a36Sopenharmony_ciDEFINE_RMAPBT_EVENT(xfs_rmap_update); 285262306a36Sopenharmony_ciDEFINE_RMAPBT_EVENT(xfs_rmap_insert); 285362306a36Sopenharmony_ciDEFINE_RMAPBT_EVENT(xfs_rmap_delete); 285462306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_rmap_insert_error); 285562306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_rmap_delete_error); 285662306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_rmap_update_error); 285762306a36Sopenharmony_ci 285862306a36Sopenharmony_ciDEFINE_RMAPBT_EVENT(xfs_rmap_find_left_neighbor_candidate); 285962306a36Sopenharmony_ciDEFINE_RMAPBT_EVENT(xfs_rmap_find_left_neighbor_query); 286062306a36Sopenharmony_ciDEFINE_RMAPBT_EVENT(xfs_rmap_lookup_le_range_candidate); 286162306a36Sopenharmony_ciDEFINE_RMAPBT_EVENT(xfs_rmap_lookup_le_range); 286262306a36Sopenharmony_ciDEFINE_RMAPBT_EVENT(xfs_rmap_lookup_le_range_result); 286362306a36Sopenharmony_ciDEFINE_RMAPBT_EVENT(xfs_rmap_find_right_neighbor_result); 286462306a36Sopenharmony_ciDEFINE_RMAPBT_EVENT(xfs_rmap_find_left_neighbor_result); 286562306a36Sopenharmony_ci 286662306a36Sopenharmony_ci/* deferred bmbt updates */ 286762306a36Sopenharmony_ci#define DEFINE_BMAP_DEFERRED_EVENT DEFINE_RMAP_DEFERRED_EVENT 286862306a36Sopenharmony_ciDEFINE_BMAP_DEFERRED_EVENT(xfs_bmap_defer); 286962306a36Sopenharmony_ciDEFINE_BMAP_DEFERRED_EVENT(xfs_bmap_deferred); 287062306a36Sopenharmony_ci 287162306a36Sopenharmony_ci/* per-AG reservation */ 287262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_ag_resv_class, 287362306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, enum xfs_ag_resv_type resv, 287462306a36Sopenharmony_ci xfs_extlen_t len), 287562306a36Sopenharmony_ci TP_ARGS(pag, resv, len), 287662306a36Sopenharmony_ci TP_STRUCT__entry( 287762306a36Sopenharmony_ci __field(dev_t, dev) 287862306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 287962306a36Sopenharmony_ci __field(int, resv) 288062306a36Sopenharmony_ci __field(xfs_extlen_t, freeblks) 288162306a36Sopenharmony_ci __field(xfs_extlen_t, flcount) 288262306a36Sopenharmony_ci __field(xfs_extlen_t, reserved) 288362306a36Sopenharmony_ci __field(xfs_extlen_t, asked) 288462306a36Sopenharmony_ci __field(xfs_extlen_t, len) 288562306a36Sopenharmony_ci ), 288662306a36Sopenharmony_ci TP_fast_assign( 288762306a36Sopenharmony_ci struct xfs_ag_resv *r = xfs_perag_resv(pag, resv); 288862306a36Sopenharmony_ci 288962306a36Sopenharmony_ci __entry->dev = pag->pag_mount->m_super->s_dev; 289062306a36Sopenharmony_ci __entry->agno = pag->pag_agno; 289162306a36Sopenharmony_ci __entry->resv = resv; 289262306a36Sopenharmony_ci __entry->freeblks = pag->pagf_freeblks; 289362306a36Sopenharmony_ci __entry->flcount = pag->pagf_flcount; 289462306a36Sopenharmony_ci __entry->reserved = r ? r->ar_reserved : 0; 289562306a36Sopenharmony_ci __entry->asked = r ? r->ar_asked : 0; 289662306a36Sopenharmony_ci __entry->len = len; 289762306a36Sopenharmony_ci ), 289862306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x resv %d freeblks %u flcount %u " 289962306a36Sopenharmony_ci "resv %u ask %u len %u", 290062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 290162306a36Sopenharmony_ci __entry->agno, 290262306a36Sopenharmony_ci __entry->resv, 290362306a36Sopenharmony_ci __entry->freeblks, 290462306a36Sopenharmony_ci __entry->flcount, 290562306a36Sopenharmony_ci __entry->reserved, 290662306a36Sopenharmony_ci __entry->asked, 290762306a36Sopenharmony_ci __entry->len) 290862306a36Sopenharmony_ci) 290962306a36Sopenharmony_ci#define DEFINE_AG_RESV_EVENT(name) \ 291062306a36Sopenharmony_ciDEFINE_EVENT(xfs_ag_resv_class, name, \ 291162306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, enum xfs_ag_resv_type type, \ 291262306a36Sopenharmony_ci xfs_extlen_t len), \ 291362306a36Sopenharmony_ci TP_ARGS(pag, type, len)) 291462306a36Sopenharmony_ci 291562306a36Sopenharmony_ci/* per-AG reservation tracepoints */ 291662306a36Sopenharmony_ciDEFINE_AG_RESV_EVENT(xfs_ag_resv_init); 291762306a36Sopenharmony_ciDEFINE_AG_RESV_EVENT(xfs_ag_resv_free); 291862306a36Sopenharmony_ciDEFINE_AG_RESV_EVENT(xfs_ag_resv_alloc_extent); 291962306a36Sopenharmony_ciDEFINE_AG_RESV_EVENT(xfs_ag_resv_free_extent); 292062306a36Sopenharmony_ciDEFINE_AG_RESV_EVENT(xfs_ag_resv_critical); 292162306a36Sopenharmony_ciDEFINE_AG_RESV_EVENT(xfs_ag_resv_needed); 292262306a36Sopenharmony_ci 292362306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_ag_resv_free_error); 292462306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_ag_resv_init_error); 292562306a36Sopenharmony_ci 292662306a36Sopenharmony_ci/* refcount tracepoint classes */ 292762306a36Sopenharmony_ci 292862306a36Sopenharmony_ci/* reuse the discard trace class for agbno/aglen-based traces */ 292962306a36Sopenharmony_ci#define DEFINE_AG_EXTENT_EVENT(name) DEFINE_DISCARD_EVENT(name) 293062306a36Sopenharmony_ci 293162306a36Sopenharmony_ci/* ag btree lookup tracepoint class */ 293262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_LOOKUP_EQi); 293362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_LOOKUP_LEi); 293462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_LOOKUP_GEi); 293562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_ag_btree_lookup_class, 293662306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 293762306a36Sopenharmony_ci xfs_agblock_t agbno, xfs_lookup_t dir), 293862306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, dir), 293962306a36Sopenharmony_ci TP_STRUCT__entry( 294062306a36Sopenharmony_ci __field(dev_t, dev) 294162306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 294262306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 294362306a36Sopenharmony_ci __field(xfs_lookup_t, dir) 294462306a36Sopenharmony_ci ), 294562306a36Sopenharmony_ci TP_fast_assign( 294662306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 294762306a36Sopenharmony_ci __entry->agno = agno; 294862306a36Sopenharmony_ci __entry->agbno = agbno; 294962306a36Sopenharmony_ci __entry->dir = dir; 295062306a36Sopenharmony_ci ), 295162306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agbno 0x%x cmp %s(%d)", 295262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 295362306a36Sopenharmony_ci __entry->agno, 295462306a36Sopenharmony_ci __entry->agbno, 295562306a36Sopenharmony_ci __print_symbolic(__entry->dir, XFS_AG_BTREE_CMP_FORMAT_STR), 295662306a36Sopenharmony_ci __entry->dir) 295762306a36Sopenharmony_ci) 295862306a36Sopenharmony_ci 295962306a36Sopenharmony_ci#define DEFINE_AG_BTREE_LOOKUP_EVENT(name) \ 296062306a36Sopenharmony_ciDEFINE_EVENT(xfs_ag_btree_lookup_class, name, \ 296162306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 296262306a36Sopenharmony_ci xfs_agblock_t agbno, xfs_lookup_t dir), \ 296362306a36Sopenharmony_ci TP_ARGS(mp, agno, agbno, dir)) 296462306a36Sopenharmony_ci 296562306a36Sopenharmony_ci/* single-rcext tracepoint class */ 296662306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_refcount_extent_class, 296762306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 296862306a36Sopenharmony_ci struct xfs_refcount_irec *irec), 296962306a36Sopenharmony_ci TP_ARGS(mp, agno, irec), 297062306a36Sopenharmony_ci TP_STRUCT__entry( 297162306a36Sopenharmony_ci __field(dev_t, dev) 297262306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 297362306a36Sopenharmony_ci __field(enum xfs_refc_domain, domain) 297462306a36Sopenharmony_ci __field(xfs_agblock_t, startblock) 297562306a36Sopenharmony_ci __field(xfs_extlen_t, blockcount) 297662306a36Sopenharmony_ci __field(xfs_nlink_t, refcount) 297762306a36Sopenharmony_ci ), 297862306a36Sopenharmony_ci TP_fast_assign( 297962306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 298062306a36Sopenharmony_ci __entry->agno = agno; 298162306a36Sopenharmony_ci __entry->domain = irec->rc_domain; 298262306a36Sopenharmony_ci __entry->startblock = irec->rc_startblock; 298362306a36Sopenharmony_ci __entry->blockcount = irec->rc_blockcount; 298462306a36Sopenharmony_ci __entry->refcount = irec->rc_refcount; 298562306a36Sopenharmony_ci ), 298662306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u", 298762306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 298862306a36Sopenharmony_ci __entry->agno, 298962306a36Sopenharmony_ci __print_symbolic(__entry->domain, XFS_REFC_DOMAIN_STRINGS), 299062306a36Sopenharmony_ci __entry->startblock, 299162306a36Sopenharmony_ci __entry->blockcount, 299262306a36Sopenharmony_ci __entry->refcount) 299362306a36Sopenharmony_ci) 299462306a36Sopenharmony_ci 299562306a36Sopenharmony_ci#define DEFINE_REFCOUNT_EXTENT_EVENT(name) \ 299662306a36Sopenharmony_ciDEFINE_EVENT(xfs_refcount_extent_class, name, \ 299762306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 299862306a36Sopenharmony_ci struct xfs_refcount_irec *irec), \ 299962306a36Sopenharmony_ci TP_ARGS(mp, agno, irec)) 300062306a36Sopenharmony_ci 300162306a36Sopenharmony_ci/* single-rcext and an agbno tracepoint class */ 300262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_refcount_extent_at_class, 300362306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 300462306a36Sopenharmony_ci struct xfs_refcount_irec *irec, xfs_agblock_t agbno), 300562306a36Sopenharmony_ci TP_ARGS(mp, agno, irec, agbno), 300662306a36Sopenharmony_ci TP_STRUCT__entry( 300762306a36Sopenharmony_ci __field(dev_t, dev) 300862306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 300962306a36Sopenharmony_ci __field(enum xfs_refc_domain, domain) 301062306a36Sopenharmony_ci __field(xfs_agblock_t, startblock) 301162306a36Sopenharmony_ci __field(xfs_extlen_t, blockcount) 301262306a36Sopenharmony_ci __field(xfs_nlink_t, refcount) 301362306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 301462306a36Sopenharmony_ci ), 301562306a36Sopenharmony_ci TP_fast_assign( 301662306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 301762306a36Sopenharmony_ci __entry->agno = agno; 301862306a36Sopenharmony_ci __entry->domain = irec->rc_domain; 301962306a36Sopenharmony_ci __entry->startblock = irec->rc_startblock; 302062306a36Sopenharmony_ci __entry->blockcount = irec->rc_blockcount; 302162306a36Sopenharmony_ci __entry->refcount = irec->rc_refcount; 302262306a36Sopenharmony_ci __entry->agbno = agbno; 302362306a36Sopenharmony_ci ), 302462306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u @ agbno 0x%x", 302562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 302662306a36Sopenharmony_ci __entry->agno, 302762306a36Sopenharmony_ci __print_symbolic(__entry->domain, XFS_REFC_DOMAIN_STRINGS), 302862306a36Sopenharmony_ci __entry->startblock, 302962306a36Sopenharmony_ci __entry->blockcount, 303062306a36Sopenharmony_ci __entry->refcount, 303162306a36Sopenharmony_ci __entry->agbno) 303262306a36Sopenharmony_ci) 303362306a36Sopenharmony_ci 303462306a36Sopenharmony_ci#define DEFINE_REFCOUNT_EXTENT_AT_EVENT(name) \ 303562306a36Sopenharmony_ciDEFINE_EVENT(xfs_refcount_extent_at_class, name, \ 303662306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 303762306a36Sopenharmony_ci struct xfs_refcount_irec *irec, xfs_agblock_t agbno), \ 303862306a36Sopenharmony_ci TP_ARGS(mp, agno, irec, agbno)) 303962306a36Sopenharmony_ci 304062306a36Sopenharmony_ci/* double-rcext tracepoint class */ 304162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_refcount_double_extent_class, 304262306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 304362306a36Sopenharmony_ci struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2), 304462306a36Sopenharmony_ci TP_ARGS(mp, agno, i1, i2), 304562306a36Sopenharmony_ci TP_STRUCT__entry( 304662306a36Sopenharmony_ci __field(dev_t, dev) 304762306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 304862306a36Sopenharmony_ci __field(enum xfs_refc_domain, i1_domain) 304962306a36Sopenharmony_ci __field(xfs_agblock_t, i1_startblock) 305062306a36Sopenharmony_ci __field(xfs_extlen_t, i1_blockcount) 305162306a36Sopenharmony_ci __field(xfs_nlink_t, i1_refcount) 305262306a36Sopenharmony_ci __field(enum xfs_refc_domain, i2_domain) 305362306a36Sopenharmony_ci __field(xfs_agblock_t, i2_startblock) 305462306a36Sopenharmony_ci __field(xfs_extlen_t, i2_blockcount) 305562306a36Sopenharmony_ci __field(xfs_nlink_t, i2_refcount) 305662306a36Sopenharmony_ci ), 305762306a36Sopenharmony_ci TP_fast_assign( 305862306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 305962306a36Sopenharmony_ci __entry->agno = agno; 306062306a36Sopenharmony_ci __entry->i1_domain = i1->rc_domain; 306162306a36Sopenharmony_ci __entry->i1_startblock = i1->rc_startblock; 306262306a36Sopenharmony_ci __entry->i1_blockcount = i1->rc_blockcount; 306362306a36Sopenharmony_ci __entry->i1_refcount = i1->rc_refcount; 306462306a36Sopenharmony_ci __entry->i2_domain = i2->rc_domain; 306562306a36Sopenharmony_ci __entry->i2_startblock = i2->rc_startblock; 306662306a36Sopenharmony_ci __entry->i2_blockcount = i2->rc_blockcount; 306762306a36Sopenharmony_ci __entry->i2_refcount = i2->rc_refcount; 306862306a36Sopenharmony_ci ), 306962306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u -- " 307062306a36Sopenharmony_ci "dom %s agbno 0x%x fsbcount 0x%x refcount %u", 307162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 307262306a36Sopenharmony_ci __entry->agno, 307362306a36Sopenharmony_ci __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS), 307462306a36Sopenharmony_ci __entry->i1_startblock, 307562306a36Sopenharmony_ci __entry->i1_blockcount, 307662306a36Sopenharmony_ci __entry->i1_refcount, 307762306a36Sopenharmony_ci __print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS), 307862306a36Sopenharmony_ci __entry->i2_startblock, 307962306a36Sopenharmony_ci __entry->i2_blockcount, 308062306a36Sopenharmony_ci __entry->i2_refcount) 308162306a36Sopenharmony_ci) 308262306a36Sopenharmony_ci 308362306a36Sopenharmony_ci#define DEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(name) \ 308462306a36Sopenharmony_ciDEFINE_EVENT(xfs_refcount_double_extent_class, name, \ 308562306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 308662306a36Sopenharmony_ci struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2), \ 308762306a36Sopenharmony_ci TP_ARGS(mp, agno, i1, i2)) 308862306a36Sopenharmony_ci 308962306a36Sopenharmony_ci/* double-rcext and an agbno tracepoint class */ 309062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_refcount_double_extent_at_class, 309162306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 309262306a36Sopenharmony_ci struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, 309362306a36Sopenharmony_ci xfs_agblock_t agbno), 309462306a36Sopenharmony_ci TP_ARGS(mp, agno, i1, i2, agbno), 309562306a36Sopenharmony_ci TP_STRUCT__entry( 309662306a36Sopenharmony_ci __field(dev_t, dev) 309762306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 309862306a36Sopenharmony_ci __field(enum xfs_refc_domain, i1_domain) 309962306a36Sopenharmony_ci __field(xfs_agblock_t, i1_startblock) 310062306a36Sopenharmony_ci __field(xfs_extlen_t, i1_blockcount) 310162306a36Sopenharmony_ci __field(xfs_nlink_t, i1_refcount) 310262306a36Sopenharmony_ci __field(enum xfs_refc_domain, i2_domain) 310362306a36Sopenharmony_ci __field(xfs_agblock_t, i2_startblock) 310462306a36Sopenharmony_ci __field(xfs_extlen_t, i2_blockcount) 310562306a36Sopenharmony_ci __field(xfs_nlink_t, i2_refcount) 310662306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 310762306a36Sopenharmony_ci ), 310862306a36Sopenharmony_ci TP_fast_assign( 310962306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 311062306a36Sopenharmony_ci __entry->agno = agno; 311162306a36Sopenharmony_ci __entry->i1_domain = i1->rc_domain; 311262306a36Sopenharmony_ci __entry->i1_startblock = i1->rc_startblock; 311362306a36Sopenharmony_ci __entry->i1_blockcount = i1->rc_blockcount; 311462306a36Sopenharmony_ci __entry->i1_refcount = i1->rc_refcount; 311562306a36Sopenharmony_ci __entry->i2_domain = i2->rc_domain; 311662306a36Sopenharmony_ci __entry->i2_startblock = i2->rc_startblock; 311762306a36Sopenharmony_ci __entry->i2_blockcount = i2->rc_blockcount; 311862306a36Sopenharmony_ci __entry->i2_refcount = i2->rc_refcount; 311962306a36Sopenharmony_ci __entry->agbno = agbno; 312062306a36Sopenharmony_ci ), 312162306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u -- " 312262306a36Sopenharmony_ci "dom %s agbno 0x%x fsbcount 0x%x refcount %u @ agbno 0x%x", 312362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 312462306a36Sopenharmony_ci __entry->agno, 312562306a36Sopenharmony_ci __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS), 312662306a36Sopenharmony_ci __entry->i1_startblock, 312762306a36Sopenharmony_ci __entry->i1_blockcount, 312862306a36Sopenharmony_ci __entry->i1_refcount, 312962306a36Sopenharmony_ci __print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS), 313062306a36Sopenharmony_ci __entry->i2_startblock, 313162306a36Sopenharmony_ci __entry->i2_blockcount, 313262306a36Sopenharmony_ci __entry->i2_refcount, 313362306a36Sopenharmony_ci __entry->agbno) 313462306a36Sopenharmony_ci) 313562306a36Sopenharmony_ci 313662306a36Sopenharmony_ci#define DEFINE_REFCOUNT_DOUBLE_EXTENT_AT_EVENT(name) \ 313762306a36Sopenharmony_ciDEFINE_EVENT(xfs_refcount_double_extent_at_class, name, \ 313862306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 313962306a36Sopenharmony_ci struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, \ 314062306a36Sopenharmony_ci xfs_agblock_t agbno), \ 314162306a36Sopenharmony_ci TP_ARGS(mp, agno, i1, i2, agbno)) 314262306a36Sopenharmony_ci 314362306a36Sopenharmony_ci/* triple-rcext tracepoint class */ 314462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_refcount_triple_extent_class, 314562306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 314662306a36Sopenharmony_ci struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, 314762306a36Sopenharmony_ci struct xfs_refcount_irec *i3), 314862306a36Sopenharmony_ci TP_ARGS(mp, agno, i1, i2, i3), 314962306a36Sopenharmony_ci TP_STRUCT__entry( 315062306a36Sopenharmony_ci __field(dev_t, dev) 315162306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 315262306a36Sopenharmony_ci __field(enum xfs_refc_domain, i1_domain) 315362306a36Sopenharmony_ci __field(xfs_agblock_t, i1_startblock) 315462306a36Sopenharmony_ci __field(xfs_extlen_t, i1_blockcount) 315562306a36Sopenharmony_ci __field(xfs_nlink_t, i1_refcount) 315662306a36Sopenharmony_ci __field(enum xfs_refc_domain, i2_domain) 315762306a36Sopenharmony_ci __field(xfs_agblock_t, i2_startblock) 315862306a36Sopenharmony_ci __field(xfs_extlen_t, i2_blockcount) 315962306a36Sopenharmony_ci __field(xfs_nlink_t, i2_refcount) 316062306a36Sopenharmony_ci __field(enum xfs_refc_domain, i3_domain) 316162306a36Sopenharmony_ci __field(xfs_agblock_t, i3_startblock) 316262306a36Sopenharmony_ci __field(xfs_extlen_t, i3_blockcount) 316362306a36Sopenharmony_ci __field(xfs_nlink_t, i3_refcount) 316462306a36Sopenharmony_ci ), 316562306a36Sopenharmony_ci TP_fast_assign( 316662306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 316762306a36Sopenharmony_ci __entry->agno = agno; 316862306a36Sopenharmony_ci __entry->i1_domain = i1->rc_domain; 316962306a36Sopenharmony_ci __entry->i1_startblock = i1->rc_startblock; 317062306a36Sopenharmony_ci __entry->i1_blockcount = i1->rc_blockcount; 317162306a36Sopenharmony_ci __entry->i1_refcount = i1->rc_refcount; 317262306a36Sopenharmony_ci __entry->i2_domain = i2->rc_domain; 317362306a36Sopenharmony_ci __entry->i2_startblock = i2->rc_startblock; 317462306a36Sopenharmony_ci __entry->i2_blockcount = i2->rc_blockcount; 317562306a36Sopenharmony_ci __entry->i2_refcount = i2->rc_refcount; 317662306a36Sopenharmony_ci __entry->i3_domain = i3->rc_domain; 317762306a36Sopenharmony_ci __entry->i3_startblock = i3->rc_startblock; 317862306a36Sopenharmony_ci __entry->i3_blockcount = i3->rc_blockcount; 317962306a36Sopenharmony_ci __entry->i3_refcount = i3->rc_refcount; 318062306a36Sopenharmony_ci ), 318162306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x dom %s agbno 0x%x fsbcount 0x%x refcount %u -- " 318262306a36Sopenharmony_ci "dom %s agbno 0x%x fsbcount 0x%x refcount %u -- " 318362306a36Sopenharmony_ci "dom %s agbno 0x%x fsbcount 0x%x refcount %u", 318462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 318562306a36Sopenharmony_ci __entry->agno, 318662306a36Sopenharmony_ci __print_symbolic(__entry->i1_domain, XFS_REFC_DOMAIN_STRINGS), 318762306a36Sopenharmony_ci __entry->i1_startblock, 318862306a36Sopenharmony_ci __entry->i1_blockcount, 318962306a36Sopenharmony_ci __entry->i1_refcount, 319062306a36Sopenharmony_ci __print_symbolic(__entry->i2_domain, XFS_REFC_DOMAIN_STRINGS), 319162306a36Sopenharmony_ci __entry->i2_startblock, 319262306a36Sopenharmony_ci __entry->i2_blockcount, 319362306a36Sopenharmony_ci __entry->i2_refcount, 319462306a36Sopenharmony_ci __print_symbolic(__entry->i3_domain, XFS_REFC_DOMAIN_STRINGS), 319562306a36Sopenharmony_ci __entry->i3_startblock, 319662306a36Sopenharmony_ci __entry->i3_blockcount, 319762306a36Sopenharmony_ci __entry->i3_refcount) 319862306a36Sopenharmony_ci); 319962306a36Sopenharmony_ci 320062306a36Sopenharmony_ci#define DEFINE_REFCOUNT_TRIPLE_EXTENT_EVENT(name) \ 320162306a36Sopenharmony_ciDEFINE_EVENT(xfs_refcount_triple_extent_class, name, \ 320262306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 320362306a36Sopenharmony_ci struct xfs_refcount_irec *i1, struct xfs_refcount_irec *i2, \ 320462306a36Sopenharmony_ci struct xfs_refcount_irec *i3), \ 320562306a36Sopenharmony_ci TP_ARGS(mp, agno, i1, i2, i3)) 320662306a36Sopenharmony_ci 320762306a36Sopenharmony_ci/* refcount btree tracepoints */ 320862306a36Sopenharmony_ciDEFINE_BUSY_EVENT(xfs_refcountbt_alloc_block); 320962306a36Sopenharmony_ciDEFINE_BUSY_EVENT(xfs_refcountbt_free_block); 321062306a36Sopenharmony_ciDEFINE_AG_BTREE_LOOKUP_EVENT(xfs_refcount_lookup); 321162306a36Sopenharmony_ciDEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_get); 321262306a36Sopenharmony_ciDEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_update); 321362306a36Sopenharmony_ciDEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_insert); 321462306a36Sopenharmony_ciDEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_delete); 321562306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_refcount_insert_error); 321662306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_refcount_delete_error); 321762306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_refcount_update_error); 321862306a36Sopenharmony_ci 321962306a36Sopenharmony_ci/* refcount adjustment tracepoints */ 322062306a36Sopenharmony_ciDEFINE_AG_EXTENT_EVENT(xfs_refcount_increase); 322162306a36Sopenharmony_ciDEFINE_AG_EXTENT_EVENT(xfs_refcount_decrease); 322262306a36Sopenharmony_ciDEFINE_AG_EXTENT_EVENT(xfs_refcount_cow_increase); 322362306a36Sopenharmony_ciDEFINE_AG_EXTENT_EVENT(xfs_refcount_cow_decrease); 322462306a36Sopenharmony_ciDEFINE_REFCOUNT_TRIPLE_EXTENT_EVENT(xfs_refcount_merge_center_extents); 322562306a36Sopenharmony_ciDEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_modify_extent); 322662306a36Sopenharmony_ciDEFINE_REFCOUNT_EXTENT_EVENT(xfs_refcount_recover_extent); 322762306a36Sopenharmony_ciDEFINE_REFCOUNT_EXTENT_AT_EVENT(xfs_refcount_split_extent); 322862306a36Sopenharmony_ciDEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(xfs_refcount_merge_left_extent); 322962306a36Sopenharmony_ciDEFINE_REFCOUNT_DOUBLE_EXTENT_EVENT(xfs_refcount_merge_right_extent); 323062306a36Sopenharmony_ciDEFINE_REFCOUNT_DOUBLE_EXTENT_AT_EVENT(xfs_refcount_find_left_extent); 323162306a36Sopenharmony_ciDEFINE_REFCOUNT_DOUBLE_EXTENT_AT_EVENT(xfs_refcount_find_right_extent); 323262306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_refcount_adjust_error); 323362306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_refcount_adjust_cow_error); 323462306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_refcount_merge_center_extents_error); 323562306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_refcount_modify_extent_error); 323662306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_refcount_split_extent_error); 323762306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_refcount_merge_left_extent_error); 323862306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_refcount_merge_right_extent_error); 323962306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_refcount_find_left_extent_error); 324062306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_refcount_find_right_extent_error); 324162306a36Sopenharmony_ci 324262306a36Sopenharmony_ci/* reflink helpers */ 324362306a36Sopenharmony_ciDEFINE_AG_EXTENT_EVENT(xfs_refcount_find_shared); 324462306a36Sopenharmony_ciDEFINE_AG_EXTENT_EVENT(xfs_refcount_find_shared_result); 324562306a36Sopenharmony_ciDEFINE_AG_ERROR_EVENT(xfs_refcount_find_shared_error); 324662306a36Sopenharmony_ci#define DEFINE_REFCOUNT_DEFERRED_EVENT DEFINE_PHYS_EXTENT_DEFERRED_EVENT 324762306a36Sopenharmony_ciDEFINE_REFCOUNT_DEFERRED_EVENT(xfs_refcount_defer); 324862306a36Sopenharmony_ciDEFINE_REFCOUNT_DEFERRED_EVENT(xfs_refcount_deferred); 324962306a36Sopenharmony_ci 325062306a36Sopenharmony_ciTRACE_EVENT(xfs_refcount_finish_one_leftover, 325162306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 325262306a36Sopenharmony_ci int type, xfs_agblock_t agbno, xfs_extlen_t len), 325362306a36Sopenharmony_ci TP_ARGS(mp, agno, type, agbno, len), 325462306a36Sopenharmony_ci TP_STRUCT__entry( 325562306a36Sopenharmony_ci __field(dev_t, dev) 325662306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 325762306a36Sopenharmony_ci __field(int, type) 325862306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 325962306a36Sopenharmony_ci __field(xfs_extlen_t, len) 326062306a36Sopenharmony_ci ), 326162306a36Sopenharmony_ci TP_fast_assign( 326262306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 326362306a36Sopenharmony_ci __entry->agno = agno; 326462306a36Sopenharmony_ci __entry->type = type; 326562306a36Sopenharmony_ci __entry->agbno = agbno; 326662306a36Sopenharmony_ci __entry->len = len; 326762306a36Sopenharmony_ci ), 326862306a36Sopenharmony_ci TP_printk("dev %d:%d type %d agno 0x%x agbno 0x%x fsbcount 0x%x", 326962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 327062306a36Sopenharmony_ci __entry->type, 327162306a36Sopenharmony_ci __entry->agno, 327262306a36Sopenharmony_ci __entry->agbno, 327362306a36Sopenharmony_ci __entry->len) 327462306a36Sopenharmony_ci); 327562306a36Sopenharmony_ci 327662306a36Sopenharmony_ci/* simple inode-based error/%ip tracepoint class */ 327762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_inode_error_class, 327862306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, int error, unsigned long caller_ip), 327962306a36Sopenharmony_ci TP_ARGS(ip, error, caller_ip), 328062306a36Sopenharmony_ci TP_STRUCT__entry( 328162306a36Sopenharmony_ci __field(dev_t, dev) 328262306a36Sopenharmony_ci __field(xfs_ino_t, ino) 328362306a36Sopenharmony_ci __field(int, error) 328462306a36Sopenharmony_ci __field(unsigned long, caller_ip) 328562306a36Sopenharmony_ci ), 328662306a36Sopenharmony_ci TP_fast_assign( 328762306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 328862306a36Sopenharmony_ci __entry->ino = ip->i_ino; 328962306a36Sopenharmony_ci __entry->error = error; 329062306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 329162306a36Sopenharmony_ci ), 329262306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx error %d caller %pS", 329362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 329462306a36Sopenharmony_ci __entry->ino, 329562306a36Sopenharmony_ci __entry->error, 329662306a36Sopenharmony_ci (char *)__entry->caller_ip) 329762306a36Sopenharmony_ci); 329862306a36Sopenharmony_ci 329962306a36Sopenharmony_ci#define DEFINE_INODE_ERROR_EVENT(name) \ 330062306a36Sopenharmony_ciDEFINE_EVENT(xfs_inode_error_class, name, \ 330162306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, int error, \ 330262306a36Sopenharmony_ci unsigned long caller_ip), \ 330362306a36Sopenharmony_ci TP_ARGS(ip, error, caller_ip)) 330462306a36Sopenharmony_ci 330562306a36Sopenharmony_ci/* reflink tracepoint classes */ 330662306a36Sopenharmony_ci 330762306a36Sopenharmony_ci/* two-file io tracepoint class */ 330862306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_double_io_class, 330962306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *src, xfs_off_t soffset, xfs_off_t len, 331062306a36Sopenharmony_ci struct xfs_inode *dest, xfs_off_t doffset), 331162306a36Sopenharmony_ci TP_ARGS(src, soffset, len, dest, doffset), 331262306a36Sopenharmony_ci TP_STRUCT__entry( 331362306a36Sopenharmony_ci __field(dev_t, dev) 331462306a36Sopenharmony_ci __field(xfs_ino_t, src_ino) 331562306a36Sopenharmony_ci __field(loff_t, src_isize) 331662306a36Sopenharmony_ci __field(loff_t, src_disize) 331762306a36Sopenharmony_ci __field(loff_t, src_offset) 331862306a36Sopenharmony_ci __field(long long, len) 331962306a36Sopenharmony_ci __field(xfs_ino_t, dest_ino) 332062306a36Sopenharmony_ci __field(loff_t, dest_isize) 332162306a36Sopenharmony_ci __field(loff_t, dest_disize) 332262306a36Sopenharmony_ci __field(loff_t, dest_offset) 332362306a36Sopenharmony_ci ), 332462306a36Sopenharmony_ci TP_fast_assign( 332562306a36Sopenharmony_ci __entry->dev = VFS_I(src)->i_sb->s_dev; 332662306a36Sopenharmony_ci __entry->src_ino = src->i_ino; 332762306a36Sopenharmony_ci __entry->src_isize = VFS_I(src)->i_size; 332862306a36Sopenharmony_ci __entry->src_disize = src->i_disk_size; 332962306a36Sopenharmony_ci __entry->src_offset = soffset; 333062306a36Sopenharmony_ci __entry->len = len; 333162306a36Sopenharmony_ci __entry->dest_ino = dest->i_ino; 333262306a36Sopenharmony_ci __entry->dest_isize = VFS_I(dest)->i_size; 333362306a36Sopenharmony_ci __entry->dest_disize = dest->i_disk_size; 333462306a36Sopenharmony_ci __entry->dest_offset = doffset; 333562306a36Sopenharmony_ci ), 333662306a36Sopenharmony_ci TP_printk("dev %d:%d bytecount 0x%llx " 333762306a36Sopenharmony_ci "ino 0x%llx isize 0x%llx disize 0x%llx pos 0x%llx -> " 333862306a36Sopenharmony_ci "ino 0x%llx isize 0x%llx disize 0x%llx pos 0x%llx", 333962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 334062306a36Sopenharmony_ci __entry->len, 334162306a36Sopenharmony_ci __entry->src_ino, 334262306a36Sopenharmony_ci __entry->src_isize, 334362306a36Sopenharmony_ci __entry->src_disize, 334462306a36Sopenharmony_ci __entry->src_offset, 334562306a36Sopenharmony_ci __entry->dest_ino, 334662306a36Sopenharmony_ci __entry->dest_isize, 334762306a36Sopenharmony_ci __entry->dest_disize, 334862306a36Sopenharmony_ci __entry->dest_offset) 334962306a36Sopenharmony_ci) 335062306a36Sopenharmony_ci 335162306a36Sopenharmony_ci#define DEFINE_DOUBLE_IO_EVENT(name) \ 335262306a36Sopenharmony_ciDEFINE_EVENT(xfs_double_io_class, name, \ 335362306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *src, xfs_off_t soffset, xfs_off_t len, \ 335462306a36Sopenharmony_ci struct xfs_inode *dest, xfs_off_t doffset), \ 335562306a36Sopenharmony_ci TP_ARGS(src, soffset, len, dest, doffset)) 335662306a36Sopenharmony_ci 335762306a36Sopenharmony_ci/* inode/irec events */ 335862306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_inode_irec_class, 335962306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, struct xfs_bmbt_irec *irec), 336062306a36Sopenharmony_ci TP_ARGS(ip, irec), 336162306a36Sopenharmony_ci TP_STRUCT__entry( 336262306a36Sopenharmony_ci __field(dev_t, dev) 336362306a36Sopenharmony_ci __field(xfs_ino_t, ino) 336462306a36Sopenharmony_ci __field(xfs_fileoff_t, lblk) 336562306a36Sopenharmony_ci __field(xfs_extlen_t, len) 336662306a36Sopenharmony_ci __field(xfs_fsblock_t, pblk) 336762306a36Sopenharmony_ci __field(int, state) 336862306a36Sopenharmony_ci ), 336962306a36Sopenharmony_ci TP_fast_assign( 337062306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 337162306a36Sopenharmony_ci __entry->ino = ip->i_ino; 337262306a36Sopenharmony_ci __entry->lblk = irec->br_startoff; 337362306a36Sopenharmony_ci __entry->len = irec->br_blockcount; 337462306a36Sopenharmony_ci __entry->pblk = irec->br_startblock; 337562306a36Sopenharmony_ci __entry->state = irec->br_state; 337662306a36Sopenharmony_ci ), 337762306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx fileoff 0x%llx fsbcount 0x%x startblock 0x%llx st %d", 337862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 337962306a36Sopenharmony_ci __entry->ino, 338062306a36Sopenharmony_ci __entry->lblk, 338162306a36Sopenharmony_ci __entry->len, 338262306a36Sopenharmony_ci __entry->pblk, 338362306a36Sopenharmony_ci __entry->state) 338462306a36Sopenharmony_ci); 338562306a36Sopenharmony_ci#define DEFINE_INODE_IREC_EVENT(name) \ 338662306a36Sopenharmony_ciDEFINE_EVENT(xfs_inode_irec_class, name, \ 338762306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, struct xfs_bmbt_irec *irec), \ 338862306a36Sopenharmony_ci TP_ARGS(ip, irec)) 338962306a36Sopenharmony_ci 339062306a36Sopenharmony_ci/* inode iomap invalidation events */ 339162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_wb_invalid_class, 339262306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, const struct iomap *iomap, unsigned int wpcseq, int whichfork), 339362306a36Sopenharmony_ci TP_ARGS(ip, iomap, wpcseq, whichfork), 339462306a36Sopenharmony_ci TP_STRUCT__entry( 339562306a36Sopenharmony_ci __field(dev_t, dev) 339662306a36Sopenharmony_ci __field(xfs_ino_t, ino) 339762306a36Sopenharmony_ci __field(u64, addr) 339862306a36Sopenharmony_ci __field(loff_t, pos) 339962306a36Sopenharmony_ci __field(u64, len) 340062306a36Sopenharmony_ci __field(u16, type) 340162306a36Sopenharmony_ci __field(u16, flags) 340262306a36Sopenharmony_ci __field(u32, wpcseq) 340362306a36Sopenharmony_ci __field(u32, forkseq) 340462306a36Sopenharmony_ci ), 340562306a36Sopenharmony_ci TP_fast_assign( 340662306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 340762306a36Sopenharmony_ci __entry->ino = ip->i_ino; 340862306a36Sopenharmony_ci __entry->addr = iomap->addr; 340962306a36Sopenharmony_ci __entry->pos = iomap->offset; 341062306a36Sopenharmony_ci __entry->len = iomap->length; 341162306a36Sopenharmony_ci __entry->type = iomap->type; 341262306a36Sopenharmony_ci __entry->flags = iomap->flags; 341362306a36Sopenharmony_ci __entry->wpcseq = wpcseq; 341462306a36Sopenharmony_ci __entry->forkseq = READ_ONCE(xfs_ifork_ptr(ip, whichfork)->if_seq); 341562306a36Sopenharmony_ci ), 341662306a36Sopenharmony_ci 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", 341762306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 341862306a36Sopenharmony_ci __entry->ino, 341962306a36Sopenharmony_ci __entry->pos, 342062306a36Sopenharmony_ci __entry->addr, 342162306a36Sopenharmony_ci __entry->len, 342262306a36Sopenharmony_ci __entry->type, 342362306a36Sopenharmony_ci __entry->flags, 342462306a36Sopenharmony_ci __entry->wpcseq, 342562306a36Sopenharmony_ci __entry->forkseq) 342662306a36Sopenharmony_ci); 342762306a36Sopenharmony_ci#define DEFINE_WB_INVALID_EVENT(name) \ 342862306a36Sopenharmony_ciDEFINE_EVENT(xfs_wb_invalid_class, name, \ 342962306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, const struct iomap *iomap, unsigned int wpcseq, int whichfork), \ 343062306a36Sopenharmony_ci TP_ARGS(ip, iomap, wpcseq, whichfork)) 343162306a36Sopenharmony_ciDEFINE_WB_INVALID_EVENT(xfs_wb_cow_iomap_invalid); 343262306a36Sopenharmony_ciDEFINE_WB_INVALID_EVENT(xfs_wb_data_iomap_invalid); 343362306a36Sopenharmony_ci 343462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_iomap_invalid_class, 343562306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, const struct iomap *iomap), 343662306a36Sopenharmony_ci TP_ARGS(ip, iomap), 343762306a36Sopenharmony_ci TP_STRUCT__entry( 343862306a36Sopenharmony_ci __field(dev_t, dev) 343962306a36Sopenharmony_ci __field(xfs_ino_t, ino) 344062306a36Sopenharmony_ci __field(u64, addr) 344162306a36Sopenharmony_ci __field(loff_t, pos) 344262306a36Sopenharmony_ci __field(u64, len) 344362306a36Sopenharmony_ci __field(u64, validity_cookie) 344462306a36Sopenharmony_ci __field(u64, inodeseq) 344562306a36Sopenharmony_ci __field(u16, type) 344662306a36Sopenharmony_ci __field(u16, flags) 344762306a36Sopenharmony_ci ), 344862306a36Sopenharmony_ci TP_fast_assign( 344962306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 345062306a36Sopenharmony_ci __entry->ino = ip->i_ino; 345162306a36Sopenharmony_ci __entry->addr = iomap->addr; 345262306a36Sopenharmony_ci __entry->pos = iomap->offset; 345362306a36Sopenharmony_ci __entry->len = iomap->length; 345462306a36Sopenharmony_ci __entry->validity_cookie = iomap->validity_cookie; 345562306a36Sopenharmony_ci __entry->type = iomap->type; 345662306a36Sopenharmony_ci __entry->flags = iomap->flags; 345762306a36Sopenharmony_ci __entry->inodeseq = xfs_iomap_inode_sequence(ip, iomap->flags); 345862306a36Sopenharmony_ci ), 345962306a36Sopenharmony_ci 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", 346062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 346162306a36Sopenharmony_ci __entry->ino, 346262306a36Sopenharmony_ci __entry->pos, 346362306a36Sopenharmony_ci __entry->addr, 346462306a36Sopenharmony_ci __entry->len, 346562306a36Sopenharmony_ci __entry->type, 346662306a36Sopenharmony_ci __entry->flags, 346762306a36Sopenharmony_ci __entry->validity_cookie, 346862306a36Sopenharmony_ci __entry->inodeseq) 346962306a36Sopenharmony_ci); 347062306a36Sopenharmony_ci#define DEFINE_IOMAP_INVALID_EVENT(name) \ 347162306a36Sopenharmony_ciDEFINE_EVENT(xfs_iomap_invalid_class, name, \ 347262306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, const struct iomap *iomap), \ 347362306a36Sopenharmony_ci TP_ARGS(ip, iomap)) 347462306a36Sopenharmony_ciDEFINE_IOMAP_INVALID_EVENT(xfs_iomap_invalid); 347562306a36Sopenharmony_ci 347662306a36Sopenharmony_ci/* refcount/reflink tracepoint definitions */ 347762306a36Sopenharmony_ci 347862306a36Sopenharmony_ci/* reflink tracepoints */ 347962306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_reflink_set_inode_flag); 348062306a36Sopenharmony_ciDEFINE_INODE_EVENT(xfs_reflink_unset_inode_flag); 348162306a36Sopenharmony_ciDEFINE_ITRUNC_EVENT(xfs_reflink_update_inode_size); 348262306a36Sopenharmony_ciTRACE_EVENT(xfs_reflink_remap_blocks, 348362306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *src, xfs_fileoff_t soffset, 348462306a36Sopenharmony_ci xfs_filblks_t len, struct xfs_inode *dest, 348562306a36Sopenharmony_ci xfs_fileoff_t doffset), 348662306a36Sopenharmony_ci TP_ARGS(src, soffset, len, dest, doffset), 348762306a36Sopenharmony_ci TP_STRUCT__entry( 348862306a36Sopenharmony_ci __field(dev_t, dev) 348962306a36Sopenharmony_ci __field(xfs_ino_t, src_ino) 349062306a36Sopenharmony_ci __field(xfs_fileoff_t, src_lblk) 349162306a36Sopenharmony_ci __field(xfs_filblks_t, len) 349262306a36Sopenharmony_ci __field(xfs_ino_t, dest_ino) 349362306a36Sopenharmony_ci __field(xfs_fileoff_t, dest_lblk) 349462306a36Sopenharmony_ci ), 349562306a36Sopenharmony_ci TP_fast_assign( 349662306a36Sopenharmony_ci __entry->dev = VFS_I(src)->i_sb->s_dev; 349762306a36Sopenharmony_ci __entry->src_ino = src->i_ino; 349862306a36Sopenharmony_ci __entry->src_lblk = soffset; 349962306a36Sopenharmony_ci __entry->len = len; 350062306a36Sopenharmony_ci __entry->dest_ino = dest->i_ino; 350162306a36Sopenharmony_ci __entry->dest_lblk = doffset; 350262306a36Sopenharmony_ci ), 350362306a36Sopenharmony_ci TP_printk("dev %d:%d fsbcount 0x%llx " 350462306a36Sopenharmony_ci "ino 0x%llx fileoff 0x%llx -> ino 0x%llx fileoff 0x%llx", 350562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 350662306a36Sopenharmony_ci __entry->len, 350762306a36Sopenharmony_ci __entry->src_ino, 350862306a36Sopenharmony_ci __entry->src_lblk, 350962306a36Sopenharmony_ci __entry->dest_ino, 351062306a36Sopenharmony_ci __entry->dest_lblk) 351162306a36Sopenharmony_ci); 351262306a36Sopenharmony_ciDEFINE_DOUBLE_IO_EVENT(xfs_reflink_remap_range); 351362306a36Sopenharmony_ciDEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_range_error); 351462306a36Sopenharmony_ciDEFINE_INODE_ERROR_EVENT(xfs_reflink_set_inode_flag_error); 351562306a36Sopenharmony_ciDEFINE_INODE_ERROR_EVENT(xfs_reflink_update_inode_size_error); 351662306a36Sopenharmony_ciDEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_blocks_error); 351762306a36Sopenharmony_ciDEFINE_INODE_ERROR_EVENT(xfs_reflink_remap_extent_error); 351862306a36Sopenharmony_ciDEFINE_INODE_IREC_EVENT(xfs_reflink_remap_extent_src); 351962306a36Sopenharmony_ciDEFINE_INODE_IREC_EVENT(xfs_reflink_remap_extent_dest); 352062306a36Sopenharmony_ci 352162306a36Sopenharmony_ci/* dedupe tracepoints */ 352262306a36Sopenharmony_ciDEFINE_DOUBLE_IO_EVENT(xfs_reflink_compare_extents); 352362306a36Sopenharmony_ciDEFINE_INODE_ERROR_EVENT(xfs_reflink_compare_extents_error); 352462306a36Sopenharmony_ci 352562306a36Sopenharmony_ci/* ioctl tracepoints */ 352662306a36Sopenharmony_ciTRACE_EVENT(xfs_ioctl_clone, 352762306a36Sopenharmony_ci TP_PROTO(struct inode *src, struct inode *dest), 352862306a36Sopenharmony_ci TP_ARGS(src, dest), 352962306a36Sopenharmony_ci TP_STRUCT__entry( 353062306a36Sopenharmony_ci __field(dev_t, dev) 353162306a36Sopenharmony_ci __field(unsigned long, src_ino) 353262306a36Sopenharmony_ci __field(loff_t, src_isize) 353362306a36Sopenharmony_ci __field(unsigned long, dest_ino) 353462306a36Sopenharmony_ci __field(loff_t, dest_isize) 353562306a36Sopenharmony_ci ), 353662306a36Sopenharmony_ci TP_fast_assign( 353762306a36Sopenharmony_ci __entry->dev = src->i_sb->s_dev; 353862306a36Sopenharmony_ci __entry->src_ino = src->i_ino; 353962306a36Sopenharmony_ci __entry->src_isize = i_size_read(src); 354062306a36Sopenharmony_ci __entry->dest_ino = dest->i_ino; 354162306a36Sopenharmony_ci __entry->dest_isize = i_size_read(dest); 354262306a36Sopenharmony_ci ), 354362306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%lx isize 0x%llx -> ino 0x%lx isize 0x%llx", 354462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 354562306a36Sopenharmony_ci __entry->src_ino, 354662306a36Sopenharmony_ci __entry->src_isize, 354762306a36Sopenharmony_ci __entry->dest_ino, 354862306a36Sopenharmony_ci __entry->dest_isize) 354962306a36Sopenharmony_ci); 355062306a36Sopenharmony_ci 355162306a36Sopenharmony_ci/* unshare tracepoints */ 355262306a36Sopenharmony_ciDEFINE_SIMPLE_IO_EVENT(xfs_reflink_unshare); 355362306a36Sopenharmony_ciDEFINE_INODE_ERROR_EVENT(xfs_reflink_unshare_error); 355462306a36Sopenharmony_ci 355562306a36Sopenharmony_ci/* copy on write */ 355662306a36Sopenharmony_ciDEFINE_INODE_IREC_EVENT(xfs_reflink_trim_around_shared); 355762306a36Sopenharmony_ciDEFINE_INODE_IREC_EVENT(xfs_reflink_cow_found); 355862306a36Sopenharmony_ciDEFINE_INODE_IREC_EVENT(xfs_reflink_cow_enospc); 355962306a36Sopenharmony_ciDEFINE_INODE_IREC_EVENT(xfs_reflink_convert_cow); 356062306a36Sopenharmony_ci 356162306a36Sopenharmony_ciDEFINE_SIMPLE_IO_EVENT(xfs_reflink_cancel_cow_range); 356262306a36Sopenharmony_ciDEFINE_SIMPLE_IO_EVENT(xfs_reflink_end_cow); 356362306a36Sopenharmony_ciDEFINE_INODE_IREC_EVENT(xfs_reflink_cow_remap_from); 356462306a36Sopenharmony_ciDEFINE_INODE_IREC_EVENT(xfs_reflink_cow_remap_to); 356562306a36Sopenharmony_ci 356662306a36Sopenharmony_ciDEFINE_INODE_ERROR_EVENT(xfs_reflink_cancel_cow_range_error); 356762306a36Sopenharmony_ciDEFINE_INODE_ERROR_EVENT(xfs_reflink_end_cow_error); 356862306a36Sopenharmony_ci 356962306a36Sopenharmony_ci 357062306a36Sopenharmony_ciDEFINE_INODE_IREC_EVENT(xfs_reflink_cancel_cow); 357162306a36Sopenharmony_ci 357262306a36Sopenharmony_ci/* rmap swapext tracepoints */ 357362306a36Sopenharmony_ciDEFINE_INODE_IREC_EVENT(xfs_swap_extent_rmap_remap); 357462306a36Sopenharmony_ciDEFINE_INODE_IREC_EVENT(xfs_swap_extent_rmap_remap_piece); 357562306a36Sopenharmony_ciDEFINE_INODE_ERROR_EVENT(xfs_swap_extent_rmap_error); 357662306a36Sopenharmony_ci 357762306a36Sopenharmony_ci/* fsmap traces */ 357862306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_fsmap_class, 357962306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, u32 keydev, xfs_agnumber_t agno, 358062306a36Sopenharmony_ci const struct xfs_rmap_irec *rmap), 358162306a36Sopenharmony_ci TP_ARGS(mp, keydev, agno, rmap), 358262306a36Sopenharmony_ci TP_STRUCT__entry( 358362306a36Sopenharmony_ci __field(dev_t, dev) 358462306a36Sopenharmony_ci __field(dev_t, keydev) 358562306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 358662306a36Sopenharmony_ci __field(xfs_fsblock_t, bno) 358762306a36Sopenharmony_ci __field(xfs_filblks_t, len) 358862306a36Sopenharmony_ci __field(uint64_t, owner) 358962306a36Sopenharmony_ci __field(uint64_t, offset) 359062306a36Sopenharmony_ci __field(unsigned int, flags) 359162306a36Sopenharmony_ci ), 359262306a36Sopenharmony_ci TP_fast_assign( 359362306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 359462306a36Sopenharmony_ci __entry->keydev = new_decode_dev(keydev); 359562306a36Sopenharmony_ci __entry->agno = agno; 359662306a36Sopenharmony_ci __entry->bno = rmap->rm_startblock; 359762306a36Sopenharmony_ci __entry->len = rmap->rm_blockcount; 359862306a36Sopenharmony_ci __entry->owner = rmap->rm_owner; 359962306a36Sopenharmony_ci __entry->offset = rmap->rm_offset; 360062306a36Sopenharmony_ci __entry->flags = rmap->rm_flags; 360162306a36Sopenharmony_ci ), 360262306a36Sopenharmony_ci 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", 360362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 360462306a36Sopenharmony_ci MAJOR(__entry->keydev), MINOR(__entry->keydev), 360562306a36Sopenharmony_ci __entry->agno, 360662306a36Sopenharmony_ci __entry->bno, 360762306a36Sopenharmony_ci __entry->len, 360862306a36Sopenharmony_ci __entry->owner, 360962306a36Sopenharmony_ci __entry->offset, 361062306a36Sopenharmony_ci __entry->flags) 361162306a36Sopenharmony_ci) 361262306a36Sopenharmony_ci#define DEFINE_FSMAP_EVENT(name) \ 361362306a36Sopenharmony_ciDEFINE_EVENT(xfs_fsmap_class, name, \ 361462306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, u32 keydev, xfs_agnumber_t agno, \ 361562306a36Sopenharmony_ci const struct xfs_rmap_irec *rmap), \ 361662306a36Sopenharmony_ci TP_ARGS(mp, keydev, agno, rmap)) 361762306a36Sopenharmony_ciDEFINE_FSMAP_EVENT(xfs_fsmap_low_key); 361862306a36Sopenharmony_ciDEFINE_FSMAP_EVENT(xfs_fsmap_high_key); 361962306a36Sopenharmony_ciDEFINE_FSMAP_EVENT(xfs_fsmap_mapping); 362062306a36Sopenharmony_ci 362162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_fsmap_linear_class, 362262306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, u32 keydev, uint64_t bno), 362362306a36Sopenharmony_ci TP_ARGS(mp, keydev, bno), 362462306a36Sopenharmony_ci TP_STRUCT__entry( 362562306a36Sopenharmony_ci __field(dev_t, dev) 362662306a36Sopenharmony_ci __field(dev_t, keydev) 362762306a36Sopenharmony_ci __field(xfs_fsblock_t, bno) 362862306a36Sopenharmony_ci ), 362962306a36Sopenharmony_ci TP_fast_assign( 363062306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 363162306a36Sopenharmony_ci __entry->keydev = new_decode_dev(keydev); 363262306a36Sopenharmony_ci __entry->bno = bno; 363362306a36Sopenharmony_ci ), 363462306a36Sopenharmony_ci TP_printk("dev %d:%d keydev %d:%d bno 0x%llx", 363562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 363662306a36Sopenharmony_ci MAJOR(__entry->keydev), MINOR(__entry->keydev), 363762306a36Sopenharmony_ci __entry->bno) 363862306a36Sopenharmony_ci) 363962306a36Sopenharmony_ci#define DEFINE_FSMAP_LINEAR_EVENT(name) \ 364062306a36Sopenharmony_ciDEFINE_EVENT(xfs_fsmap_linear_class, name, \ 364162306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, u32 keydev, uint64_t bno), \ 364262306a36Sopenharmony_ci TP_ARGS(mp, keydev, bno)) 364362306a36Sopenharmony_ciDEFINE_FSMAP_LINEAR_EVENT(xfs_fsmap_low_key_linear); 364462306a36Sopenharmony_ciDEFINE_FSMAP_LINEAR_EVENT(xfs_fsmap_high_key_linear); 364562306a36Sopenharmony_ci 364662306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_getfsmap_class, 364762306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, struct xfs_fsmap *fsmap), 364862306a36Sopenharmony_ci TP_ARGS(mp, fsmap), 364962306a36Sopenharmony_ci TP_STRUCT__entry( 365062306a36Sopenharmony_ci __field(dev_t, dev) 365162306a36Sopenharmony_ci __field(dev_t, keydev) 365262306a36Sopenharmony_ci __field(xfs_daddr_t, block) 365362306a36Sopenharmony_ci __field(xfs_daddr_t, len) 365462306a36Sopenharmony_ci __field(uint64_t, owner) 365562306a36Sopenharmony_ci __field(uint64_t, offset) 365662306a36Sopenharmony_ci __field(uint64_t, flags) 365762306a36Sopenharmony_ci ), 365862306a36Sopenharmony_ci TP_fast_assign( 365962306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 366062306a36Sopenharmony_ci __entry->keydev = new_decode_dev(fsmap->fmr_device); 366162306a36Sopenharmony_ci __entry->block = fsmap->fmr_physical; 366262306a36Sopenharmony_ci __entry->len = fsmap->fmr_length; 366362306a36Sopenharmony_ci __entry->owner = fsmap->fmr_owner; 366462306a36Sopenharmony_ci __entry->offset = fsmap->fmr_offset; 366562306a36Sopenharmony_ci __entry->flags = fsmap->fmr_flags; 366662306a36Sopenharmony_ci ), 366762306a36Sopenharmony_ci TP_printk("dev %d:%d keydev %d:%d daddr 0x%llx bbcount 0x%llx owner 0x%llx fileoff_daddr 0x%llx flags 0x%llx", 366862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 366962306a36Sopenharmony_ci MAJOR(__entry->keydev), MINOR(__entry->keydev), 367062306a36Sopenharmony_ci __entry->block, 367162306a36Sopenharmony_ci __entry->len, 367262306a36Sopenharmony_ci __entry->owner, 367362306a36Sopenharmony_ci __entry->offset, 367462306a36Sopenharmony_ci __entry->flags) 367562306a36Sopenharmony_ci) 367662306a36Sopenharmony_ci#define DEFINE_GETFSMAP_EVENT(name) \ 367762306a36Sopenharmony_ciDEFINE_EVENT(xfs_getfsmap_class, name, \ 367862306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, struct xfs_fsmap *fsmap), \ 367962306a36Sopenharmony_ci TP_ARGS(mp, fsmap)) 368062306a36Sopenharmony_ciDEFINE_GETFSMAP_EVENT(xfs_getfsmap_low_key); 368162306a36Sopenharmony_ciDEFINE_GETFSMAP_EVENT(xfs_getfsmap_high_key); 368262306a36Sopenharmony_ciDEFINE_GETFSMAP_EVENT(xfs_getfsmap_mapping); 368362306a36Sopenharmony_ci 368462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_trans_resv_class, 368562306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, unsigned int type, 368662306a36Sopenharmony_ci struct xfs_trans_res *res), 368762306a36Sopenharmony_ci TP_ARGS(mp, type, res), 368862306a36Sopenharmony_ci TP_STRUCT__entry( 368962306a36Sopenharmony_ci __field(dev_t, dev) 369062306a36Sopenharmony_ci __field(int, type) 369162306a36Sopenharmony_ci __field(uint, logres) 369262306a36Sopenharmony_ci __field(int, logcount) 369362306a36Sopenharmony_ci __field(int, logflags) 369462306a36Sopenharmony_ci ), 369562306a36Sopenharmony_ci TP_fast_assign( 369662306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 369762306a36Sopenharmony_ci __entry->type = type; 369862306a36Sopenharmony_ci __entry->logres = res->tr_logres; 369962306a36Sopenharmony_ci __entry->logcount = res->tr_logcount; 370062306a36Sopenharmony_ci __entry->logflags = res->tr_logflags; 370162306a36Sopenharmony_ci ), 370262306a36Sopenharmony_ci TP_printk("dev %d:%d type %d logres %u logcount %d flags 0x%x", 370362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 370462306a36Sopenharmony_ci __entry->type, 370562306a36Sopenharmony_ci __entry->logres, 370662306a36Sopenharmony_ci __entry->logcount, 370762306a36Sopenharmony_ci __entry->logflags) 370862306a36Sopenharmony_ci) 370962306a36Sopenharmony_ci 371062306a36Sopenharmony_ci#define DEFINE_TRANS_RESV_EVENT(name) \ 371162306a36Sopenharmony_ciDEFINE_EVENT(xfs_trans_resv_class, name, \ 371262306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, unsigned int type, \ 371362306a36Sopenharmony_ci struct xfs_trans_res *res), \ 371462306a36Sopenharmony_ci TP_ARGS(mp, type, res)) 371562306a36Sopenharmony_ciDEFINE_TRANS_RESV_EVENT(xfs_trans_resv_calc); 371662306a36Sopenharmony_ciDEFINE_TRANS_RESV_EVENT(xfs_trans_resv_calc_minlogsize); 371762306a36Sopenharmony_ci 371862306a36Sopenharmony_ciTRACE_EVENT(xfs_log_get_max_trans_res, 371962306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, const struct xfs_trans_res *res), 372062306a36Sopenharmony_ci TP_ARGS(mp, res), 372162306a36Sopenharmony_ci TP_STRUCT__entry( 372262306a36Sopenharmony_ci __field(dev_t, dev) 372362306a36Sopenharmony_ci __field(uint, logres) 372462306a36Sopenharmony_ci __field(int, logcount) 372562306a36Sopenharmony_ci ), 372662306a36Sopenharmony_ci TP_fast_assign( 372762306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 372862306a36Sopenharmony_ci __entry->logres = res->tr_logres; 372962306a36Sopenharmony_ci __entry->logcount = res->tr_logcount; 373062306a36Sopenharmony_ci ), 373162306a36Sopenharmony_ci TP_printk("dev %d:%d logres %u logcount %d", 373262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 373362306a36Sopenharmony_ci __entry->logres, 373462306a36Sopenharmony_ci __entry->logcount) 373562306a36Sopenharmony_ci); 373662306a36Sopenharmony_ci 373762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_trans_class, 373862306a36Sopenharmony_ci TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip), 373962306a36Sopenharmony_ci TP_ARGS(tp, caller_ip), 374062306a36Sopenharmony_ci TP_STRUCT__entry( 374162306a36Sopenharmony_ci __field(dev_t, dev) 374262306a36Sopenharmony_ci __field(uint32_t, tid) 374362306a36Sopenharmony_ci __field(uint32_t, flags) 374462306a36Sopenharmony_ci __field(unsigned long, caller_ip) 374562306a36Sopenharmony_ci ), 374662306a36Sopenharmony_ci TP_fast_assign( 374762306a36Sopenharmony_ci __entry->dev = tp->t_mountp->m_super->s_dev; 374862306a36Sopenharmony_ci __entry->tid = 0; 374962306a36Sopenharmony_ci if (tp->t_ticket) 375062306a36Sopenharmony_ci __entry->tid = tp->t_ticket->t_tid; 375162306a36Sopenharmony_ci __entry->flags = tp->t_flags; 375262306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 375362306a36Sopenharmony_ci ), 375462306a36Sopenharmony_ci TP_printk("dev %d:%d trans %x flags 0x%x caller %pS", 375562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 375662306a36Sopenharmony_ci __entry->tid, 375762306a36Sopenharmony_ci __entry->flags, 375862306a36Sopenharmony_ci (char *)__entry->caller_ip) 375962306a36Sopenharmony_ci) 376062306a36Sopenharmony_ci 376162306a36Sopenharmony_ci#define DEFINE_TRANS_EVENT(name) \ 376262306a36Sopenharmony_ciDEFINE_EVENT(xfs_trans_class, name, \ 376362306a36Sopenharmony_ci TP_PROTO(struct xfs_trans *tp, unsigned long caller_ip), \ 376462306a36Sopenharmony_ci TP_ARGS(tp, caller_ip)) 376562306a36Sopenharmony_ciDEFINE_TRANS_EVENT(xfs_trans_alloc); 376662306a36Sopenharmony_ciDEFINE_TRANS_EVENT(xfs_trans_cancel); 376762306a36Sopenharmony_ciDEFINE_TRANS_EVENT(xfs_trans_commit); 376862306a36Sopenharmony_ciDEFINE_TRANS_EVENT(xfs_trans_dup); 376962306a36Sopenharmony_ciDEFINE_TRANS_EVENT(xfs_trans_free); 377062306a36Sopenharmony_ciDEFINE_TRANS_EVENT(xfs_trans_roll); 377162306a36Sopenharmony_ciDEFINE_TRANS_EVENT(xfs_trans_add_item); 377262306a36Sopenharmony_ciDEFINE_TRANS_EVENT(xfs_trans_commit_items); 377362306a36Sopenharmony_ciDEFINE_TRANS_EVENT(xfs_trans_free_items); 377462306a36Sopenharmony_ci 377562306a36Sopenharmony_ciTRACE_EVENT(xfs_iunlink_update_bucket, 377662306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, unsigned int bucket, 377762306a36Sopenharmony_ci xfs_agino_t old_ptr, xfs_agino_t new_ptr), 377862306a36Sopenharmony_ci TP_ARGS(mp, agno, bucket, old_ptr, new_ptr), 377962306a36Sopenharmony_ci TP_STRUCT__entry( 378062306a36Sopenharmony_ci __field(dev_t, dev) 378162306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 378262306a36Sopenharmony_ci __field(unsigned int, bucket) 378362306a36Sopenharmony_ci __field(xfs_agino_t, old_ptr) 378462306a36Sopenharmony_ci __field(xfs_agino_t, new_ptr) 378562306a36Sopenharmony_ci ), 378662306a36Sopenharmony_ci TP_fast_assign( 378762306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 378862306a36Sopenharmony_ci __entry->agno = agno; 378962306a36Sopenharmony_ci __entry->bucket = bucket; 379062306a36Sopenharmony_ci __entry->old_ptr = old_ptr; 379162306a36Sopenharmony_ci __entry->new_ptr = new_ptr; 379262306a36Sopenharmony_ci ), 379362306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x bucket %u old 0x%x new 0x%x", 379462306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 379562306a36Sopenharmony_ci __entry->agno, 379662306a36Sopenharmony_ci __entry->bucket, 379762306a36Sopenharmony_ci __entry->old_ptr, 379862306a36Sopenharmony_ci __entry->new_ptr) 379962306a36Sopenharmony_ci); 380062306a36Sopenharmony_ci 380162306a36Sopenharmony_ciTRACE_EVENT(xfs_iunlink_update_dinode, 380262306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, xfs_agino_t agino, 380362306a36Sopenharmony_ci xfs_agino_t old_ptr, xfs_agino_t new_ptr), 380462306a36Sopenharmony_ci TP_ARGS(mp, agno, agino, old_ptr, new_ptr), 380562306a36Sopenharmony_ci TP_STRUCT__entry( 380662306a36Sopenharmony_ci __field(dev_t, dev) 380762306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 380862306a36Sopenharmony_ci __field(xfs_agino_t, agino) 380962306a36Sopenharmony_ci __field(xfs_agino_t, old_ptr) 381062306a36Sopenharmony_ci __field(xfs_agino_t, new_ptr) 381162306a36Sopenharmony_ci ), 381262306a36Sopenharmony_ci TP_fast_assign( 381362306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 381462306a36Sopenharmony_ci __entry->agno = agno; 381562306a36Sopenharmony_ci __entry->agino = agino; 381662306a36Sopenharmony_ci __entry->old_ptr = old_ptr; 381762306a36Sopenharmony_ci __entry->new_ptr = new_ptr; 381862306a36Sopenharmony_ci ), 381962306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agino 0x%x old 0x%x new 0x%x", 382062306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 382162306a36Sopenharmony_ci __entry->agno, 382262306a36Sopenharmony_ci __entry->agino, 382362306a36Sopenharmony_ci __entry->old_ptr, 382462306a36Sopenharmony_ci __entry->new_ptr) 382562306a36Sopenharmony_ci); 382662306a36Sopenharmony_ci 382762306a36Sopenharmony_ciTRACE_EVENT(xfs_iunlink_reload_next, 382862306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip), 382962306a36Sopenharmony_ci TP_ARGS(ip), 383062306a36Sopenharmony_ci TP_STRUCT__entry( 383162306a36Sopenharmony_ci __field(dev_t, dev) 383262306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 383362306a36Sopenharmony_ci __field(xfs_agino_t, agino) 383462306a36Sopenharmony_ci __field(xfs_agino_t, prev_agino) 383562306a36Sopenharmony_ci __field(xfs_agino_t, next_agino) 383662306a36Sopenharmony_ci ), 383762306a36Sopenharmony_ci TP_fast_assign( 383862306a36Sopenharmony_ci __entry->dev = ip->i_mount->m_super->s_dev; 383962306a36Sopenharmony_ci __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino); 384062306a36Sopenharmony_ci __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino); 384162306a36Sopenharmony_ci __entry->prev_agino = ip->i_prev_unlinked; 384262306a36Sopenharmony_ci __entry->next_agino = ip->i_next_unlinked; 384362306a36Sopenharmony_ci ), 384462306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agino 0x%x prev_unlinked 0x%x next_unlinked 0x%x", 384562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 384662306a36Sopenharmony_ci __entry->agno, 384762306a36Sopenharmony_ci __entry->agino, 384862306a36Sopenharmony_ci __entry->prev_agino, 384962306a36Sopenharmony_ci __entry->next_agino) 385062306a36Sopenharmony_ci); 385162306a36Sopenharmony_ci 385262306a36Sopenharmony_ciTRACE_EVENT(xfs_inode_reload_unlinked_bucket, 385362306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip), 385462306a36Sopenharmony_ci TP_ARGS(ip), 385562306a36Sopenharmony_ci TP_STRUCT__entry( 385662306a36Sopenharmony_ci __field(dev_t, dev) 385762306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 385862306a36Sopenharmony_ci __field(xfs_agino_t, agino) 385962306a36Sopenharmony_ci ), 386062306a36Sopenharmony_ci TP_fast_assign( 386162306a36Sopenharmony_ci __entry->dev = ip->i_mount->m_super->s_dev; 386262306a36Sopenharmony_ci __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino); 386362306a36Sopenharmony_ci __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino); 386462306a36Sopenharmony_ci ), 386562306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agino 0x%x bucket %u", 386662306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 386762306a36Sopenharmony_ci __entry->agno, 386862306a36Sopenharmony_ci __entry->agino, 386962306a36Sopenharmony_ci __entry->agino % XFS_AGI_UNLINKED_BUCKETS) 387062306a36Sopenharmony_ci); 387162306a36Sopenharmony_ci 387262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_ag_inode_class, 387362306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip), 387462306a36Sopenharmony_ci TP_ARGS(ip), 387562306a36Sopenharmony_ci TP_STRUCT__entry( 387662306a36Sopenharmony_ci __field(dev_t, dev) 387762306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 387862306a36Sopenharmony_ci __field(xfs_agino_t, agino) 387962306a36Sopenharmony_ci ), 388062306a36Sopenharmony_ci TP_fast_assign( 388162306a36Sopenharmony_ci __entry->dev = VFS_I(ip)->i_sb->s_dev; 388262306a36Sopenharmony_ci __entry->agno = XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino); 388362306a36Sopenharmony_ci __entry->agino = XFS_INO_TO_AGINO(ip->i_mount, ip->i_ino); 388462306a36Sopenharmony_ci ), 388562306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x agino 0x%x", 388662306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 388762306a36Sopenharmony_ci __entry->agno, __entry->agino) 388862306a36Sopenharmony_ci) 388962306a36Sopenharmony_ci 389062306a36Sopenharmony_ci#define DEFINE_AGINODE_EVENT(name) \ 389162306a36Sopenharmony_ciDEFINE_EVENT(xfs_ag_inode_class, name, \ 389262306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip), \ 389362306a36Sopenharmony_ci TP_ARGS(ip)) 389462306a36Sopenharmony_ciDEFINE_AGINODE_EVENT(xfs_iunlink); 389562306a36Sopenharmony_ciDEFINE_AGINODE_EVENT(xfs_iunlink_remove); 389662306a36Sopenharmony_ci 389762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_fs_corrupt_class, 389862306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, unsigned int flags), 389962306a36Sopenharmony_ci TP_ARGS(mp, flags), 390062306a36Sopenharmony_ci TP_STRUCT__entry( 390162306a36Sopenharmony_ci __field(dev_t, dev) 390262306a36Sopenharmony_ci __field(unsigned int, flags) 390362306a36Sopenharmony_ci ), 390462306a36Sopenharmony_ci TP_fast_assign( 390562306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 390662306a36Sopenharmony_ci __entry->flags = flags; 390762306a36Sopenharmony_ci ), 390862306a36Sopenharmony_ci TP_printk("dev %d:%d flags 0x%x", 390962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 391062306a36Sopenharmony_ci __entry->flags) 391162306a36Sopenharmony_ci); 391262306a36Sopenharmony_ci#define DEFINE_FS_CORRUPT_EVENT(name) \ 391362306a36Sopenharmony_ciDEFINE_EVENT(xfs_fs_corrupt_class, name, \ 391462306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, unsigned int flags), \ 391562306a36Sopenharmony_ci TP_ARGS(mp, flags)) 391662306a36Sopenharmony_ciDEFINE_FS_CORRUPT_EVENT(xfs_fs_mark_sick); 391762306a36Sopenharmony_ciDEFINE_FS_CORRUPT_EVENT(xfs_fs_mark_healthy); 391862306a36Sopenharmony_ciDEFINE_FS_CORRUPT_EVENT(xfs_fs_unfixed_corruption); 391962306a36Sopenharmony_ciDEFINE_FS_CORRUPT_EVENT(xfs_rt_mark_sick); 392062306a36Sopenharmony_ciDEFINE_FS_CORRUPT_EVENT(xfs_rt_mark_healthy); 392162306a36Sopenharmony_ciDEFINE_FS_CORRUPT_EVENT(xfs_rt_unfixed_corruption); 392262306a36Sopenharmony_ci 392362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_ag_corrupt_class, 392462306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, unsigned int flags), 392562306a36Sopenharmony_ci TP_ARGS(mp, agno, flags), 392662306a36Sopenharmony_ci TP_STRUCT__entry( 392762306a36Sopenharmony_ci __field(dev_t, dev) 392862306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 392962306a36Sopenharmony_ci __field(unsigned int, flags) 393062306a36Sopenharmony_ci ), 393162306a36Sopenharmony_ci TP_fast_assign( 393262306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 393362306a36Sopenharmony_ci __entry->agno = agno; 393462306a36Sopenharmony_ci __entry->flags = flags; 393562306a36Sopenharmony_ci ), 393662306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x flags 0x%x", 393762306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 393862306a36Sopenharmony_ci __entry->agno, __entry->flags) 393962306a36Sopenharmony_ci); 394062306a36Sopenharmony_ci#define DEFINE_AG_CORRUPT_EVENT(name) \ 394162306a36Sopenharmony_ciDEFINE_EVENT(xfs_ag_corrupt_class, name, \ 394262306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, \ 394362306a36Sopenharmony_ci unsigned int flags), \ 394462306a36Sopenharmony_ci TP_ARGS(mp, agno, flags)) 394562306a36Sopenharmony_ciDEFINE_AG_CORRUPT_EVENT(xfs_ag_mark_sick); 394662306a36Sopenharmony_ciDEFINE_AG_CORRUPT_EVENT(xfs_ag_mark_healthy); 394762306a36Sopenharmony_ciDEFINE_AG_CORRUPT_EVENT(xfs_ag_unfixed_corruption); 394862306a36Sopenharmony_ci 394962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_inode_corrupt_class, 395062306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, unsigned int flags), 395162306a36Sopenharmony_ci TP_ARGS(ip, flags), 395262306a36Sopenharmony_ci TP_STRUCT__entry( 395362306a36Sopenharmony_ci __field(dev_t, dev) 395462306a36Sopenharmony_ci __field(xfs_ino_t, ino) 395562306a36Sopenharmony_ci __field(unsigned int, flags) 395662306a36Sopenharmony_ci ), 395762306a36Sopenharmony_ci TP_fast_assign( 395862306a36Sopenharmony_ci __entry->dev = ip->i_mount->m_super->s_dev; 395962306a36Sopenharmony_ci __entry->ino = ip->i_ino; 396062306a36Sopenharmony_ci __entry->flags = flags; 396162306a36Sopenharmony_ci ), 396262306a36Sopenharmony_ci TP_printk("dev %d:%d ino 0x%llx flags 0x%x", 396362306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 396462306a36Sopenharmony_ci __entry->ino, __entry->flags) 396562306a36Sopenharmony_ci); 396662306a36Sopenharmony_ci#define DEFINE_INODE_CORRUPT_EVENT(name) \ 396762306a36Sopenharmony_ciDEFINE_EVENT(xfs_inode_corrupt_class, name, \ 396862306a36Sopenharmony_ci TP_PROTO(struct xfs_inode *ip, unsigned int flags), \ 396962306a36Sopenharmony_ci TP_ARGS(ip, flags)) 397062306a36Sopenharmony_ciDEFINE_INODE_CORRUPT_EVENT(xfs_inode_mark_sick); 397162306a36Sopenharmony_ciDEFINE_INODE_CORRUPT_EVENT(xfs_inode_mark_healthy); 397262306a36Sopenharmony_ci 397362306a36Sopenharmony_ciTRACE_EVENT(xfs_iwalk_ag, 397462306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 397562306a36Sopenharmony_ci xfs_agino_t startino), 397662306a36Sopenharmony_ci TP_ARGS(mp, agno, startino), 397762306a36Sopenharmony_ci TP_STRUCT__entry( 397862306a36Sopenharmony_ci __field(dev_t, dev) 397962306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 398062306a36Sopenharmony_ci __field(xfs_agino_t, startino) 398162306a36Sopenharmony_ci ), 398262306a36Sopenharmony_ci TP_fast_assign( 398362306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 398462306a36Sopenharmony_ci __entry->agno = agno; 398562306a36Sopenharmony_ci __entry->startino = startino; 398662306a36Sopenharmony_ci ), 398762306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x startino 0x%x", 398862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), __entry->agno, 398962306a36Sopenharmony_ci __entry->startino) 399062306a36Sopenharmony_ci) 399162306a36Sopenharmony_ci 399262306a36Sopenharmony_ciTRACE_EVENT(xfs_iwalk_ag_rec, 399362306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, xfs_agnumber_t agno, 399462306a36Sopenharmony_ci struct xfs_inobt_rec_incore *irec), 399562306a36Sopenharmony_ci TP_ARGS(mp, agno, irec), 399662306a36Sopenharmony_ci TP_STRUCT__entry( 399762306a36Sopenharmony_ci __field(dev_t, dev) 399862306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 399962306a36Sopenharmony_ci __field(xfs_agino_t, startino) 400062306a36Sopenharmony_ci __field(uint64_t, freemask) 400162306a36Sopenharmony_ci ), 400262306a36Sopenharmony_ci TP_fast_assign( 400362306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 400462306a36Sopenharmony_ci __entry->agno = agno; 400562306a36Sopenharmony_ci __entry->startino = irec->ir_startino; 400662306a36Sopenharmony_ci __entry->freemask = irec->ir_free; 400762306a36Sopenharmony_ci ), 400862306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x startino 0x%x freemask 0x%llx", 400962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), __entry->agno, 401062306a36Sopenharmony_ci __entry->startino, __entry->freemask) 401162306a36Sopenharmony_ci) 401262306a36Sopenharmony_ci 401362306a36Sopenharmony_ciTRACE_EVENT(xfs_pwork_init, 401462306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, unsigned int nr_threads, pid_t pid), 401562306a36Sopenharmony_ci TP_ARGS(mp, nr_threads, pid), 401662306a36Sopenharmony_ci TP_STRUCT__entry( 401762306a36Sopenharmony_ci __field(dev_t, dev) 401862306a36Sopenharmony_ci __field(unsigned int, nr_threads) 401962306a36Sopenharmony_ci __field(pid_t, pid) 402062306a36Sopenharmony_ci ), 402162306a36Sopenharmony_ci TP_fast_assign( 402262306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 402362306a36Sopenharmony_ci __entry->nr_threads = nr_threads; 402462306a36Sopenharmony_ci __entry->pid = pid; 402562306a36Sopenharmony_ci ), 402662306a36Sopenharmony_ci TP_printk("dev %d:%d nr_threads %u pid %u", 402762306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 402862306a36Sopenharmony_ci __entry->nr_threads, __entry->pid) 402962306a36Sopenharmony_ci) 403062306a36Sopenharmony_ci 403162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_kmem_class, 403262306a36Sopenharmony_ci TP_PROTO(ssize_t size, int flags, unsigned long caller_ip), 403362306a36Sopenharmony_ci TP_ARGS(size, flags, caller_ip), 403462306a36Sopenharmony_ci TP_STRUCT__entry( 403562306a36Sopenharmony_ci __field(ssize_t, size) 403662306a36Sopenharmony_ci __field(int, flags) 403762306a36Sopenharmony_ci __field(unsigned long, caller_ip) 403862306a36Sopenharmony_ci ), 403962306a36Sopenharmony_ci TP_fast_assign( 404062306a36Sopenharmony_ci __entry->size = size; 404162306a36Sopenharmony_ci __entry->flags = flags; 404262306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 404362306a36Sopenharmony_ci ), 404462306a36Sopenharmony_ci TP_printk("size %zd flags 0x%x caller %pS", 404562306a36Sopenharmony_ci __entry->size, 404662306a36Sopenharmony_ci __entry->flags, 404762306a36Sopenharmony_ci (char *)__entry->caller_ip) 404862306a36Sopenharmony_ci) 404962306a36Sopenharmony_ci 405062306a36Sopenharmony_ci#define DEFINE_KMEM_EVENT(name) \ 405162306a36Sopenharmony_ciDEFINE_EVENT(xfs_kmem_class, name, \ 405262306a36Sopenharmony_ci TP_PROTO(ssize_t size, int flags, unsigned long caller_ip), \ 405362306a36Sopenharmony_ci TP_ARGS(size, flags, caller_ip)) 405462306a36Sopenharmony_ciDEFINE_KMEM_EVENT(kmem_alloc); 405562306a36Sopenharmony_ci 405662306a36Sopenharmony_ciTRACE_EVENT(xfs_check_new_dalign, 405762306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, int new_dalign, xfs_ino_t calc_rootino), 405862306a36Sopenharmony_ci TP_ARGS(mp, new_dalign, calc_rootino), 405962306a36Sopenharmony_ci TP_STRUCT__entry( 406062306a36Sopenharmony_ci __field(dev_t, dev) 406162306a36Sopenharmony_ci __field(int, new_dalign) 406262306a36Sopenharmony_ci __field(xfs_ino_t, sb_rootino) 406362306a36Sopenharmony_ci __field(xfs_ino_t, calc_rootino) 406462306a36Sopenharmony_ci ), 406562306a36Sopenharmony_ci TP_fast_assign( 406662306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 406762306a36Sopenharmony_ci __entry->new_dalign = new_dalign; 406862306a36Sopenharmony_ci __entry->sb_rootino = mp->m_sb.sb_rootino; 406962306a36Sopenharmony_ci __entry->calc_rootino = calc_rootino; 407062306a36Sopenharmony_ci ), 407162306a36Sopenharmony_ci TP_printk("dev %d:%d new_dalign %d sb_rootino 0x%llx calc_rootino 0x%llx", 407262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 407362306a36Sopenharmony_ci __entry->new_dalign, __entry->sb_rootino, 407462306a36Sopenharmony_ci __entry->calc_rootino) 407562306a36Sopenharmony_ci) 407662306a36Sopenharmony_ci 407762306a36Sopenharmony_ciTRACE_EVENT(xfs_btree_commit_afakeroot, 407862306a36Sopenharmony_ci TP_PROTO(struct xfs_btree_cur *cur), 407962306a36Sopenharmony_ci TP_ARGS(cur), 408062306a36Sopenharmony_ci TP_STRUCT__entry( 408162306a36Sopenharmony_ci __field(dev_t, dev) 408262306a36Sopenharmony_ci __field(xfs_btnum_t, btnum) 408362306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 408462306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 408562306a36Sopenharmony_ci __field(unsigned int, levels) 408662306a36Sopenharmony_ci __field(unsigned int, blocks) 408762306a36Sopenharmony_ci ), 408862306a36Sopenharmony_ci TP_fast_assign( 408962306a36Sopenharmony_ci __entry->dev = cur->bc_mp->m_super->s_dev; 409062306a36Sopenharmony_ci __entry->btnum = cur->bc_btnum; 409162306a36Sopenharmony_ci __entry->agno = cur->bc_ag.pag->pag_agno; 409262306a36Sopenharmony_ci __entry->agbno = cur->bc_ag.afake->af_root; 409362306a36Sopenharmony_ci __entry->levels = cur->bc_ag.afake->af_levels; 409462306a36Sopenharmony_ci __entry->blocks = cur->bc_ag.afake->af_blocks; 409562306a36Sopenharmony_ci ), 409662306a36Sopenharmony_ci TP_printk("dev %d:%d btree %s agno 0x%x levels %u blocks %u root %u", 409762306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 409862306a36Sopenharmony_ci __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 409962306a36Sopenharmony_ci __entry->agno, 410062306a36Sopenharmony_ci __entry->levels, 410162306a36Sopenharmony_ci __entry->blocks, 410262306a36Sopenharmony_ci __entry->agbno) 410362306a36Sopenharmony_ci) 410462306a36Sopenharmony_ci 410562306a36Sopenharmony_ciTRACE_EVENT(xfs_btree_commit_ifakeroot, 410662306a36Sopenharmony_ci TP_PROTO(struct xfs_btree_cur *cur), 410762306a36Sopenharmony_ci TP_ARGS(cur), 410862306a36Sopenharmony_ci TP_STRUCT__entry( 410962306a36Sopenharmony_ci __field(dev_t, dev) 411062306a36Sopenharmony_ci __field(xfs_btnum_t, btnum) 411162306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 411262306a36Sopenharmony_ci __field(xfs_agino_t, agino) 411362306a36Sopenharmony_ci __field(unsigned int, levels) 411462306a36Sopenharmony_ci __field(unsigned int, blocks) 411562306a36Sopenharmony_ci __field(int, whichfork) 411662306a36Sopenharmony_ci ), 411762306a36Sopenharmony_ci TP_fast_assign( 411862306a36Sopenharmony_ci __entry->dev = cur->bc_mp->m_super->s_dev; 411962306a36Sopenharmony_ci __entry->btnum = cur->bc_btnum; 412062306a36Sopenharmony_ci __entry->agno = XFS_INO_TO_AGNO(cur->bc_mp, 412162306a36Sopenharmony_ci cur->bc_ino.ip->i_ino); 412262306a36Sopenharmony_ci __entry->agino = XFS_INO_TO_AGINO(cur->bc_mp, 412362306a36Sopenharmony_ci cur->bc_ino.ip->i_ino); 412462306a36Sopenharmony_ci __entry->levels = cur->bc_ino.ifake->if_levels; 412562306a36Sopenharmony_ci __entry->blocks = cur->bc_ino.ifake->if_blocks; 412662306a36Sopenharmony_ci __entry->whichfork = cur->bc_ino.whichfork; 412762306a36Sopenharmony_ci ), 412862306a36Sopenharmony_ci TP_printk("dev %d:%d btree %s agno 0x%x agino 0x%x whichfork %s levels %u blocks %u", 412962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 413062306a36Sopenharmony_ci __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 413162306a36Sopenharmony_ci __entry->agno, 413262306a36Sopenharmony_ci __entry->agino, 413362306a36Sopenharmony_ci __print_symbolic(__entry->whichfork, XFS_WHICHFORK_STRINGS), 413462306a36Sopenharmony_ci __entry->levels, 413562306a36Sopenharmony_ci __entry->blocks) 413662306a36Sopenharmony_ci) 413762306a36Sopenharmony_ci 413862306a36Sopenharmony_ciTRACE_EVENT(xfs_btree_bload_level_geometry, 413962306a36Sopenharmony_ci TP_PROTO(struct xfs_btree_cur *cur, unsigned int level, 414062306a36Sopenharmony_ci uint64_t nr_this_level, unsigned int nr_per_block, 414162306a36Sopenharmony_ci unsigned int desired_npb, uint64_t blocks, 414262306a36Sopenharmony_ci uint64_t blocks_with_extra), 414362306a36Sopenharmony_ci TP_ARGS(cur, level, nr_this_level, nr_per_block, desired_npb, blocks, 414462306a36Sopenharmony_ci blocks_with_extra), 414562306a36Sopenharmony_ci TP_STRUCT__entry( 414662306a36Sopenharmony_ci __field(dev_t, dev) 414762306a36Sopenharmony_ci __field(xfs_btnum_t, btnum) 414862306a36Sopenharmony_ci __field(unsigned int, level) 414962306a36Sopenharmony_ci __field(unsigned int, nlevels) 415062306a36Sopenharmony_ci __field(uint64_t, nr_this_level) 415162306a36Sopenharmony_ci __field(unsigned int, nr_per_block) 415262306a36Sopenharmony_ci __field(unsigned int, desired_npb) 415362306a36Sopenharmony_ci __field(unsigned long long, blocks) 415462306a36Sopenharmony_ci __field(unsigned long long, blocks_with_extra) 415562306a36Sopenharmony_ci ), 415662306a36Sopenharmony_ci TP_fast_assign( 415762306a36Sopenharmony_ci __entry->dev = cur->bc_mp->m_super->s_dev; 415862306a36Sopenharmony_ci __entry->btnum = cur->bc_btnum; 415962306a36Sopenharmony_ci __entry->level = level; 416062306a36Sopenharmony_ci __entry->nlevels = cur->bc_nlevels; 416162306a36Sopenharmony_ci __entry->nr_this_level = nr_this_level; 416262306a36Sopenharmony_ci __entry->nr_per_block = nr_per_block; 416362306a36Sopenharmony_ci __entry->desired_npb = desired_npb; 416462306a36Sopenharmony_ci __entry->blocks = blocks; 416562306a36Sopenharmony_ci __entry->blocks_with_extra = blocks_with_extra; 416662306a36Sopenharmony_ci ), 416762306a36Sopenharmony_ci 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", 416862306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 416962306a36Sopenharmony_ci __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 417062306a36Sopenharmony_ci __entry->level, 417162306a36Sopenharmony_ci __entry->nlevels, 417262306a36Sopenharmony_ci __entry->nr_this_level, 417362306a36Sopenharmony_ci __entry->nr_per_block, 417462306a36Sopenharmony_ci __entry->desired_npb, 417562306a36Sopenharmony_ci __entry->blocks, 417662306a36Sopenharmony_ci __entry->blocks_with_extra) 417762306a36Sopenharmony_ci) 417862306a36Sopenharmony_ci 417962306a36Sopenharmony_ciTRACE_EVENT(xfs_btree_bload_block, 418062306a36Sopenharmony_ci TP_PROTO(struct xfs_btree_cur *cur, unsigned int level, 418162306a36Sopenharmony_ci uint64_t block_idx, uint64_t nr_blocks, 418262306a36Sopenharmony_ci union xfs_btree_ptr *ptr, unsigned int nr_records), 418362306a36Sopenharmony_ci TP_ARGS(cur, level, block_idx, nr_blocks, ptr, nr_records), 418462306a36Sopenharmony_ci TP_STRUCT__entry( 418562306a36Sopenharmony_ci __field(dev_t, dev) 418662306a36Sopenharmony_ci __field(xfs_btnum_t, btnum) 418762306a36Sopenharmony_ci __field(unsigned int, level) 418862306a36Sopenharmony_ci __field(unsigned long long, block_idx) 418962306a36Sopenharmony_ci __field(unsigned long long, nr_blocks) 419062306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 419162306a36Sopenharmony_ci __field(xfs_agblock_t, agbno) 419262306a36Sopenharmony_ci __field(unsigned int, nr_records) 419362306a36Sopenharmony_ci ), 419462306a36Sopenharmony_ci TP_fast_assign( 419562306a36Sopenharmony_ci __entry->dev = cur->bc_mp->m_super->s_dev; 419662306a36Sopenharmony_ci __entry->btnum = cur->bc_btnum; 419762306a36Sopenharmony_ci __entry->level = level; 419862306a36Sopenharmony_ci __entry->block_idx = block_idx; 419962306a36Sopenharmony_ci __entry->nr_blocks = nr_blocks; 420062306a36Sopenharmony_ci if (cur->bc_flags & XFS_BTREE_LONG_PTRS) { 420162306a36Sopenharmony_ci xfs_fsblock_t fsb = be64_to_cpu(ptr->l); 420262306a36Sopenharmony_ci 420362306a36Sopenharmony_ci __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsb); 420462306a36Sopenharmony_ci __entry->agbno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsb); 420562306a36Sopenharmony_ci } else { 420662306a36Sopenharmony_ci __entry->agno = cur->bc_ag.pag->pag_agno; 420762306a36Sopenharmony_ci __entry->agbno = be32_to_cpu(ptr->s); 420862306a36Sopenharmony_ci } 420962306a36Sopenharmony_ci __entry->nr_records = nr_records; 421062306a36Sopenharmony_ci ), 421162306a36Sopenharmony_ci TP_printk("dev %d:%d btree %s level %u block %llu/%llu agno 0x%x agbno 0x%x recs %u", 421262306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 421362306a36Sopenharmony_ci __print_symbolic(__entry->btnum, XFS_BTNUM_STRINGS), 421462306a36Sopenharmony_ci __entry->level, 421562306a36Sopenharmony_ci __entry->block_idx, 421662306a36Sopenharmony_ci __entry->nr_blocks, 421762306a36Sopenharmony_ci __entry->agno, 421862306a36Sopenharmony_ci __entry->agbno, 421962306a36Sopenharmony_ci __entry->nr_records) 422062306a36Sopenharmony_ci) 422162306a36Sopenharmony_ci 422262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_timestamp_range_class, 422362306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, time64_t min, time64_t max), 422462306a36Sopenharmony_ci TP_ARGS(mp, min, max), 422562306a36Sopenharmony_ci TP_STRUCT__entry( 422662306a36Sopenharmony_ci __field(dev_t, dev) 422762306a36Sopenharmony_ci __field(long long, min) 422862306a36Sopenharmony_ci __field(long long, max) 422962306a36Sopenharmony_ci ), 423062306a36Sopenharmony_ci TP_fast_assign( 423162306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 423262306a36Sopenharmony_ci __entry->min = min; 423362306a36Sopenharmony_ci __entry->max = max; 423462306a36Sopenharmony_ci ), 423562306a36Sopenharmony_ci TP_printk("dev %d:%d min %lld max %lld", 423662306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 423762306a36Sopenharmony_ci __entry->min, 423862306a36Sopenharmony_ci __entry->max) 423962306a36Sopenharmony_ci) 424062306a36Sopenharmony_ci 424162306a36Sopenharmony_ci#define DEFINE_TIMESTAMP_RANGE_EVENT(name) \ 424262306a36Sopenharmony_ciDEFINE_EVENT(xfs_timestamp_range_class, name, \ 424362306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, long long min, long long max), \ 424462306a36Sopenharmony_ci TP_ARGS(mp, min, max)) 424562306a36Sopenharmony_ciDEFINE_TIMESTAMP_RANGE_EVENT(xfs_inode_timestamp_range); 424662306a36Sopenharmony_ciDEFINE_TIMESTAMP_RANGE_EVENT(xfs_quota_expiry_range); 424762306a36Sopenharmony_ci 424862306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_icwalk_class, 424962306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, struct xfs_icwalk *icw, 425062306a36Sopenharmony_ci unsigned long caller_ip), 425162306a36Sopenharmony_ci TP_ARGS(mp, icw, caller_ip), 425262306a36Sopenharmony_ci TP_STRUCT__entry( 425362306a36Sopenharmony_ci __field(dev_t, dev) 425462306a36Sopenharmony_ci __field(__u32, flags) 425562306a36Sopenharmony_ci __field(uint32_t, uid) 425662306a36Sopenharmony_ci __field(uint32_t, gid) 425762306a36Sopenharmony_ci __field(prid_t, prid) 425862306a36Sopenharmony_ci __field(__u64, min_file_size) 425962306a36Sopenharmony_ci __field(long, scan_limit) 426062306a36Sopenharmony_ci __field(unsigned long, caller_ip) 426162306a36Sopenharmony_ci ), 426262306a36Sopenharmony_ci TP_fast_assign( 426362306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 426462306a36Sopenharmony_ci __entry->flags = icw ? icw->icw_flags : 0; 426562306a36Sopenharmony_ci __entry->uid = icw ? from_kuid(mp->m_super->s_user_ns, 426662306a36Sopenharmony_ci icw->icw_uid) : 0; 426762306a36Sopenharmony_ci __entry->gid = icw ? from_kgid(mp->m_super->s_user_ns, 426862306a36Sopenharmony_ci icw->icw_gid) : 0; 426962306a36Sopenharmony_ci __entry->prid = icw ? icw->icw_prid : 0; 427062306a36Sopenharmony_ci __entry->min_file_size = icw ? icw->icw_min_file_size : 0; 427162306a36Sopenharmony_ci __entry->scan_limit = icw ? icw->icw_scan_limit : 0; 427262306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 427362306a36Sopenharmony_ci ), 427462306a36Sopenharmony_ci TP_printk("dev %d:%d flags 0x%x uid %u gid %u prid %u minsize %llu scan_limit %ld caller %pS", 427562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 427662306a36Sopenharmony_ci __entry->flags, 427762306a36Sopenharmony_ci __entry->uid, 427862306a36Sopenharmony_ci __entry->gid, 427962306a36Sopenharmony_ci __entry->prid, 428062306a36Sopenharmony_ci __entry->min_file_size, 428162306a36Sopenharmony_ci __entry->scan_limit, 428262306a36Sopenharmony_ci (char *)__entry->caller_ip) 428362306a36Sopenharmony_ci); 428462306a36Sopenharmony_ci#define DEFINE_ICWALK_EVENT(name) \ 428562306a36Sopenharmony_ciDEFINE_EVENT(xfs_icwalk_class, name, \ 428662306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, struct xfs_icwalk *icw, \ 428762306a36Sopenharmony_ci unsigned long caller_ip), \ 428862306a36Sopenharmony_ci TP_ARGS(mp, icw, caller_ip)) 428962306a36Sopenharmony_ciDEFINE_ICWALK_EVENT(xfs_ioc_free_eofblocks); 429062306a36Sopenharmony_ciDEFINE_ICWALK_EVENT(xfs_blockgc_free_space); 429162306a36Sopenharmony_ci 429262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XLOG_STATE_ACTIVE); 429362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XLOG_STATE_WANT_SYNC); 429462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XLOG_STATE_SYNCING); 429562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XLOG_STATE_DONE_SYNC); 429662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XLOG_STATE_CALLBACK); 429762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XLOG_STATE_DIRTY); 429862306a36Sopenharmony_ci 429962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xlog_iclog_class, 430062306a36Sopenharmony_ci TP_PROTO(struct xlog_in_core *iclog, unsigned long caller_ip), 430162306a36Sopenharmony_ci TP_ARGS(iclog, caller_ip), 430262306a36Sopenharmony_ci TP_STRUCT__entry( 430362306a36Sopenharmony_ci __field(dev_t, dev) 430462306a36Sopenharmony_ci __field(uint32_t, state) 430562306a36Sopenharmony_ci __field(int32_t, refcount) 430662306a36Sopenharmony_ci __field(uint32_t, offset) 430762306a36Sopenharmony_ci __field(uint32_t, flags) 430862306a36Sopenharmony_ci __field(unsigned long long, lsn) 430962306a36Sopenharmony_ci __field(unsigned long, caller_ip) 431062306a36Sopenharmony_ci ), 431162306a36Sopenharmony_ci TP_fast_assign( 431262306a36Sopenharmony_ci __entry->dev = iclog->ic_log->l_mp->m_super->s_dev; 431362306a36Sopenharmony_ci __entry->state = iclog->ic_state; 431462306a36Sopenharmony_ci __entry->refcount = atomic_read(&iclog->ic_refcnt); 431562306a36Sopenharmony_ci __entry->offset = iclog->ic_offset; 431662306a36Sopenharmony_ci __entry->flags = iclog->ic_flags; 431762306a36Sopenharmony_ci __entry->lsn = be64_to_cpu(iclog->ic_header.h_lsn); 431862306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 431962306a36Sopenharmony_ci ), 432062306a36Sopenharmony_ci TP_printk("dev %d:%d state %s refcnt %d offset %u lsn 0x%llx flags %s caller %pS", 432162306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 432262306a36Sopenharmony_ci __print_symbolic(__entry->state, XLOG_STATE_STRINGS), 432362306a36Sopenharmony_ci __entry->refcount, 432462306a36Sopenharmony_ci __entry->offset, 432562306a36Sopenharmony_ci __entry->lsn, 432662306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XLOG_ICL_STRINGS), 432762306a36Sopenharmony_ci (char *)__entry->caller_ip) 432862306a36Sopenharmony_ci 432962306a36Sopenharmony_ci); 433062306a36Sopenharmony_ci 433162306a36Sopenharmony_ci#define DEFINE_ICLOG_EVENT(name) \ 433262306a36Sopenharmony_ciDEFINE_EVENT(xlog_iclog_class, name, \ 433362306a36Sopenharmony_ci TP_PROTO(struct xlog_in_core *iclog, unsigned long caller_ip), \ 433462306a36Sopenharmony_ci TP_ARGS(iclog, caller_ip)) 433562306a36Sopenharmony_ci 433662306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_activate); 433762306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_clean); 433862306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_callback); 433962306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_callbacks_start); 434062306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_callbacks_done); 434162306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_force); 434262306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_force_lsn); 434362306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_get_space); 434462306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_release); 434562306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_switch); 434662306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_sync); 434762306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_syncing); 434862306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_sync_done); 434962306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_want_sync); 435062306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_wait_on); 435162306a36Sopenharmony_ciDEFINE_ICLOG_EVENT(xlog_iclog_write); 435262306a36Sopenharmony_ci 435362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_UNINIT); 435462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_SF_ADD); 435562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_SF_REMOVE); 435662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_LEAF_ADD); 435762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_LEAF_REMOVE); 435862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_NODE_ADD); 435962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_NODE_REMOVE); 436062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_LEAF_SET_RMT); 436162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_LEAF_ALLOC_RMT); 436262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_LEAF_REPLACE); 436362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_LEAF_REMOVE_OLD); 436462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_LEAF_REMOVE_RMT); 436562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_LEAF_REMOVE_ATTR); 436662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_NODE_SET_RMT); 436762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_NODE_ALLOC_RMT); 436862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_NODE_REPLACE); 436962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_NODE_REMOVE_OLD); 437062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_NODE_REMOVE_RMT); 437162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_NODE_REMOVE_ATTR); 437262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(XFS_DAS_DONE); 437362306a36Sopenharmony_ci 437462306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_das_state_class, 437562306a36Sopenharmony_ci TP_PROTO(int das, struct xfs_inode *ip), 437662306a36Sopenharmony_ci TP_ARGS(das, ip), 437762306a36Sopenharmony_ci TP_STRUCT__entry( 437862306a36Sopenharmony_ci __field(int, das) 437962306a36Sopenharmony_ci __field(xfs_ino_t, ino) 438062306a36Sopenharmony_ci ), 438162306a36Sopenharmony_ci TP_fast_assign( 438262306a36Sopenharmony_ci __entry->das = das; 438362306a36Sopenharmony_ci __entry->ino = ip->i_ino; 438462306a36Sopenharmony_ci ), 438562306a36Sopenharmony_ci TP_printk("state change %s ino 0x%llx", 438662306a36Sopenharmony_ci __print_symbolic(__entry->das, XFS_DAS_STRINGS), 438762306a36Sopenharmony_ci __entry->ino) 438862306a36Sopenharmony_ci) 438962306a36Sopenharmony_ci 439062306a36Sopenharmony_ci#define DEFINE_DAS_STATE_EVENT(name) \ 439162306a36Sopenharmony_ciDEFINE_EVENT(xfs_das_state_class, name, \ 439262306a36Sopenharmony_ci TP_PROTO(int das, struct xfs_inode *ip), \ 439362306a36Sopenharmony_ci TP_ARGS(das, ip)) 439462306a36Sopenharmony_ciDEFINE_DAS_STATE_EVENT(xfs_attr_sf_addname_return); 439562306a36Sopenharmony_ciDEFINE_DAS_STATE_EVENT(xfs_attr_set_iter_return); 439662306a36Sopenharmony_ciDEFINE_DAS_STATE_EVENT(xfs_attr_leaf_addname_return); 439762306a36Sopenharmony_ciDEFINE_DAS_STATE_EVENT(xfs_attr_node_addname_return); 439862306a36Sopenharmony_ciDEFINE_DAS_STATE_EVENT(xfs_attr_remove_iter_return); 439962306a36Sopenharmony_ciDEFINE_DAS_STATE_EVENT(xfs_attr_rmtval_alloc); 440062306a36Sopenharmony_ciDEFINE_DAS_STATE_EVENT(xfs_attr_rmtval_remove_return); 440162306a36Sopenharmony_ciDEFINE_DAS_STATE_EVENT(xfs_attr_defer_add); 440262306a36Sopenharmony_ciDEFINE_DAS_STATE_EVENT(xfs_attr_defer_replace); 440362306a36Sopenharmony_ciDEFINE_DAS_STATE_EVENT(xfs_attr_defer_remove); 440462306a36Sopenharmony_ci 440562306a36Sopenharmony_ci 440662306a36Sopenharmony_ciTRACE_EVENT(xfs_force_shutdown, 440762306a36Sopenharmony_ci TP_PROTO(struct xfs_mount *mp, int ptag, int flags, const char *fname, 440862306a36Sopenharmony_ci int line_num), 440962306a36Sopenharmony_ci TP_ARGS(mp, ptag, flags, fname, line_num), 441062306a36Sopenharmony_ci TP_STRUCT__entry( 441162306a36Sopenharmony_ci __field(dev_t, dev) 441262306a36Sopenharmony_ci __field(int, ptag) 441362306a36Sopenharmony_ci __field(int, flags) 441462306a36Sopenharmony_ci __string(fname, fname) 441562306a36Sopenharmony_ci __field(int, line_num) 441662306a36Sopenharmony_ci ), 441762306a36Sopenharmony_ci TP_fast_assign( 441862306a36Sopenharmony_ci __entry->dev = mp->m_super->s_dev; 441962306a36Sopenharmony_ci __entry->ptag = ptag; 442062306a36Sopenharmony_ci __entry->flags = flags; 442162306a36Sopenharmony_ci __assign_str(fname, fname); 442262306a36Sopenharmony_ci __entry->line_num = line_num; 442362306a36Sopenharmony_ci ), 442462306a36Sopenharmony_ci TP_printk("dev %d:%d tag %s flags %s file %s line_num %d", 442562306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 442662306a36Sopenharmony_ci __print_flags(__entry->ptag, "|", XFS_PTAG_STRINGS), 442762306a36Sopenharmony_ci __print_flags(__entry->flags, "|", XFS_SHUTDOWN_STRINGS), 442862306a36Sopenharmony_ci __get_str(fname), 442962306a36Sopenharmony_ci __entry->line_num) 443062306a36Sopenharmony_ci); 443162306a36Sopenharmony_ci 443262306a36Sopenharmony_ci#ifdef CONFIG_XFS_DRAIN_INTENTS 443362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(xfs_perag_intents_class, 443462306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, void *caller_ip), 443562306a36Sopenharmony_ci TP_ARGS(pag, caller_ip), 443662306a36Sopenharmony_ci TP_STRUCT__entry( 443762306a36Sopenharmony_ci __field(dev_t, dev) 443862306a36Sopenharmony_ci __field(xfs_agnumber_t, agno) 443962306a36Sopenharmony_ci __field(long, nr_intents) 444062306a36Sopenharmony_ci __field(void *, caller_ip) 444162306a36Sopenharmony_ci ), 444262306a36Sopenharmony_ci TP_fast_assign( 444362306a36Sopenharmony_ci __entry->dev = pag->pag_mount->m_super->s_dev; 444462306a36Sopenharmony_ci __entry->agno = pag->pag_agno; 444562306a36Sopenharmony_ci __entry->nr_intents = atomic_read(&pag->pag_intents_drain.dr_count); 444662306a36Sopenharmony_ci __entry->caller_ip = caller_ip; 444762306a36Sopenharmony_ci ), 444862306a36Sopenharmony_ci TP_printk("dev %d:%d agno 0x%x intents %ld caller %pS", 444962306a36Sopenharmony_ci MAJOR(__entry->dev), MINOR(__entry->dev), 445062306a36Sopenharmony_ci __entry->agno, 445162306a36Sopenharmony_ci __entry->nr_intents, 445262306a36Sopenharmony_ci __entry->caller_ip) 445362306a36Sopenharmony_ci); 445462306a36Sopenharmony_ci 445562306a36Sopenharmony_ci#define DEFINE_PERAG_INTENTS_EVENT(name) \ 445662306a36Sopenharmony_ciDEFINE_EVENT(xfs_perag_intents_class, name, \ 445762306a36Sopenharmony_ci TP_PROTO(struct xfs_perag *pag, void *caller_ip), \ 445862306a36Sopenharmony_ci TP_ARGS(pag, caller_ip)) 445962306a36Sopenharmony_ciDEFINE_PERAG_INTENTS_EVENT(xfs_perag_intent_hold); 446062306a36Sopenharmony_ciDEFINE_PERAG_INTENTS_EVENT(xfs_perag_intent_rele); 446162306a36Sopenharmony_ciDEFINE_PERAG_INTENTS_EVENT(xfs_perag_wait_intents); 446262306a36Sopenharmony_ci 446362306a36Sopenharmony_ci#endif /* CONFIG_XFS_DRAIN_INTENTS */ 446462306a36Sopenharmony_ci 446562306a36Sopenharmony_ci#endif /* _TRACE_XFS_H */ 446662306a36Sopenharmony_ci 446762306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH 446862306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH . 446962306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE xfs_trace 447062306a36Sopenharmony_ci#include <trace/define_trace.h> 4471