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