162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#undef TRACE_SYSTEM
362306a36Sopenharmony_ci#define TRACE_SYSTEM ext4
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#if !defined(_TRACE_EXT4_H) || defined(TRACE_HEADER_MULTI_READ)
662306a36Sopenharmony_ci#define _TRACE_EXT4_H
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <linux/writeback.h>
962306a36Sopenharmony_ci#include <linux/tracepoint.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_cistruct ext4_allocation_context;
1262306a36Sopenharmony_cistruct ext4_allocation_request;
1362306a36Sopenharmony_cistruct ext4_extent;
1462306a36Sopenharmony_cistruct ext4_prealloc_space;
1562306a36Sopenharmony_cistruct ext4_inode_info;
1662306a36Sopenharmony_cistruct mpage_da_data;
1762306a36Sopenharmony_cistruct ext4_map_blocks;
1862306a36Sopenharmony_cistruct extent_status;
1962306a36Sopenharmony_cistruct ext4_fsmap;
2062306a36Sopenharmony_cistruct partial_cluster;
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci#define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci#define show_mballoc_flags(flags) __print_flags(flags, "|",	\
2562306a36Sopenharmony_ci	{ EXT4_MB_HINT_MERGE,		"HINT_MERGE" },		\
2662306a36Sopenharmony_ci	{ EXT4_MB_HINT_RESERVED,	"HINT_RESV" },		\
2762306a36Sopenharmony_ci	{ EXT4_MB_HINT_METADATA,	"HINT_MDATA" },		\
2862306a36Sopenharmony_ci	{ EXT4_MB_HINT_FIRST,		"HINT_FIRST" },		\
2962306a36Sopenharmony_ci	{ EXT4_MB_HINT_BEST,		"HINT_BEST" },		\
3062306a36Sopenharmony_ci	{ EXT4_MB_HINT_DATA,		"HINT_DATA" },		\
3162306a36Sopenharmony_ci	{ EXT4_MB_HINT_NOPREALLOC,	"HINT_NOPREALLOC" },	\
3262306a36Sopenharmony_ci	{ EXT4_MB_HINT_GROUP_ALLOC,	"HINT_GRP_ALLOC" },	\
3362306a36Sopenharmony_ci	{ EXT4_MB_HINT_GOAL_ONLY,	"HINT_GOAL_ONLY" },	\
3462306a36Sopenharmony_ci	{ EXT4_MB_HINT_TRY_GOAL,	"HINT_TRY_GOAL" },	\
3562306a36Sopenharmony_ci	{ EXT4_MB_DELALLOC_RESERVED,	"DELALLOC_RESV" },	\
3662306a36Sopenharmony_ci	{ EXT4_MB_STREAM_ALLOC,		"STREAM_ALLOC" },	\
3762306a36Sopenharmony_ci	{ EXT4_MB_USE_ROOT_BLOCKS,	"USE_ROOT_BLKS" },	\
3862306a36Sopenharmony_ci	{ EXT4_MB_USE_RESERVED,		"USE_RESV" },		\
3962306a36Sopenharmony_ci	{ EXT4_MB_STRICT_CHECK,		"STRICT_CHECK" })
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci#define show_map_flags(flags) __print_flags(flags, "|",			\
4262306a36Sopenharmony_ci	{ EXT4_GET_BLOCKS_CREATE,		"CREATE" },		\
4362306a36Sopenharmony_ci	{ EXT4_GET_BLOCKS_UNWRIT_EXT,		"UNWRIT" },		\
4462306a36Sopenharmony_ci	{ EXT4_GET_BLOCKS_DELALLOC_RESERVE,	"DELALLOC" },		\
4562306a36Sopenharmony_ci	{ EXT4_GET_BLOCKS_PRE_IO,		"PRE_IO" },		\
4662306a36Sopenharmony_ci	{ EXT4_GET_BLOCKS_CONVERT,		"CONVERT" },		\
4762306a36Sopenharmony_ci	{ EXT4_GET_BLOCKS_METADATA_NOFAIL,	"METADATA_NOFAIL" },	\
4862306a36Sopenharmony_ci	{ EXT4_GET_BLOCKS_NO_NORMALIZE,		"NO_NORMALIZE" },	\
4962306a36Sopenharmony_ci	{ EXT4_GET_BLOCKS_CONVERT_UNWRITTEN,	"CONVERT_UNWRITTEN" },  \
5062306a36Sopenharmony_ci	{ EXT4_GET_BLOCKS_ZERO,			"ZERO" },		\
5162306a36Sopenharmony_ci	{ EXT4_GET_BLOCKS_IO_SUBMIT,		"IO_SUBMIT" },		\
5262306a36Sopenharmony_ci	{ EXT4_EX_NOCACHE,			"EX_NOCACHE" })
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci/*
5562306a36Sopenharmony_ci * __print_flags() requires that all enum values be wrapped in the
5662306a36Sopenharmony_ci * TRACE_DEFINE_ENUM macro so that the enum value can be encoded in the ftrace
5762306a36Sopenharmony_ci * ring buffer.
5862306a36Sopenharmony_ci */
5962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(BH_New);
6062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(BH_Mapped);
6162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(BH_Unwritten);
6262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(BH_Boundary);
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci#define show_mflags(flags) __print_flags(flags, "",	\
6562306a36Sopenharmony_ci	{ EXT4_MAP_NEW,		"N" },			\
6662306a36Sopenharmony_ci	{ EXT4_MAP_MAPPED,	"M" },			\
6762306a36Sopenharmony_ci	{ EXT4_MAP_UNWRITTEN,	"U" },			\
6862306a36Sopenharmony_ci	{ EXT4_MAP_BOUNDARY,	"B" })
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci#define show_free_flags(flags) __print_flags(flags, "|",	\
7162306a36Sopenharmony_ci	{ EXT4_FREE_BLOCKS_METADATA,		"METADATA" },	\
7262306a36Sopenharmony_ci	{ EXT4_FREE_BLOCKS_FORGET,		"FORGET" },	\
7362306a36Sopenharmony_ci	{ EXT4_FREE_BLOCKS_VALIDATED,		"VALIDATED" },	\
7462306a36Sopenharmony_ci	{ EXT4_FREE_BLOCKS_NO_QUOT_UPDATE,	"NO_QUOTA" },	\
7562306a36Sopenharmony_ci	{ EXT4_FREE_BLOCKS_NOFREE_FIRST_CLUSTER,"1ST_CLUSTER" },\
7662306a36Sopenharmony_ci	{ EXT4_FREE_BLOCKS_NOFREE_LAST_CLUSTER,	"LAST_CLUSTER" })
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(ES_WRITTEN_B);
7962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(ES_UNWRITTEN_B);
8062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(ES_DELAYED_B);
8162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(ES_HOLE_B);
8262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(ES_REFERENCED_B);
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci#define show_extent_status(status) __print_flags(status, "",	\
8562306a36Sopenharmony_ci	{ EXTENT_STATUS_WRITTEN,	"W" },			\
8662306a36Sopenharmony_ci	{ EXTENT_STATUS_UNWRITTEN,	"U" },			\
8762306a36Sopenharmony_ci	{ EXTENT_STATUS_DELAYED,	"D" },			\
8862306a36Sopenharmony_ci	{ EXTENT_STATUS_HOLE,		"H" },			\
8962306a36Sopenharmony_ci	{ EXTENT_STATUS_REFERENCED,	"R" })
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci#define show_falloc_mode(mode) __print_flags(mode, "|",		\
9262306a36Sopenharmony_ci	{ FALLOC_FL_KEEP_SIZE,		"KEEP_SIZE"},		\
9362306a36Sopenharmony_ci	{ FALLOC_FL_PUNCH_HOLE,		"PUNCH_HOLE"},		\
9462306a36Sopenharmony_ci	{ FALLOC_FL_NO_HIDE_STALE,	"NO_HIDE_STALE"},	\
9562306a36Sopenharmony_ci	{ FALLOC_FL_COLLAPSE_RANGE,	"COLLAPSE_RANGE"},	\
9662306a36Sopenharmony_ci	{ FALLOC_FL_ZERO_RANGE,		"ZERO_RANGE"})
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(EXT4_FC_REASON_XATTR);
9962306a36Sopenharmony_ciTRACE_DEFINE_ENUM(EXT4_FC_REASON_CROSS_RENAME);
10062306a36Sopenharmony_ciTRACE_DEFINE_ENUM(EXT4_FC_REASON_JOURNAL_FLAG_CHANGE);
10162306a36Sopenharmony_ciTRACE_DEFINE_ENUM(EXT4_FC_REASON_NOMEM);
10262306a36Sopenharmony_ciTRACE_DEFINE_ENUM(EXT4_FC_REASON_SWAP_BOOT);
10362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(EXT4_FC_REASON_RESIZE);
10462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(EXT4_FC_REASON_RENAME_DIR);
10562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(EXT4_FC_REASON_FALLOC_RANGE);
10662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(EXT4_FC_REASON_INODE_JOURNAL_DATA);
10762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(EXT4_FC_REASON_ENCRYPTED_FILENAME);
10862306a36Sopenharmony_ciTRACE_DEFINE_ENUM(EXT4_FC_REASON_MAX);
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci#define show_fc_reason(reason)						\
11162306a36Sopenharmony_ci	__print_symbolic(reason,					\
11262306a36Sopenharmony_ci		{ EXT4_FC_REASON_XATTR,		"XATTR"},		\
11362306a36Sopenharmony_ci		{ EXT4_FC_REASON_CROSS_RENAME,	"CROSS_RENAME"},	\
11462306a36Sopenharmony_ci		{ EXT4_FC_REASON_JOURNAL_FLAG_CHANGE, "JOURNAL_FLAG_CHANGE"}, \
11562306a36Sopenharmony_ci		{ EXT4_FC_REASON_NOMEM,	"NO_MEM"},			\
11662306a36Sopenharmony_ci		{ EXT4_FC_REASON_SWAP_BOOT,	"SWAP_BOOT"},		\
11762306a36Sopenharmony_ci		{ EXT4_FC_REASON_RESIZE,	"RESIZE"},		\
11862306a36Sopenharmony_ci		{ EXT4_FC_REASON_RENAME_DIR,	"RENAME_DIR"},		\
11962306a36Sopenharmony_ci		{ EXT4_FC_REASON_FALLOC_RANGE,	"FALLOC_RANGE"},	\
12062306a36Sopenharmony_ci		{ EXT4_FC_REASON_INODE_JOURNAL_DATA,	"INODE_JOURNAL_DATA"}, \
12162306a36Sopenharmony_ci		{ EXT4_FC_REASON_ENCRYPTED_FILENAME,	"ENCRYPTED_FILENAME"})
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ciTRACE_DEFINE_ENUM(CR_POWER2_ALIGNED);
12462306a36Sopenharmony_ciTRACE_DEFINE_ENUM(CR_GOAL_LEN_FAST);
12562306a36Sopenharmony_ciTRACE_DEFINE_ENUM(CR_BEST_AVAIL_LEN);
12662306a36Sopenharmony_ciTRACE_DEFINE_ENUM(CR_GOAL_LEN_SLOW);
12762306a36Sopenharmony_ciTRACE_DEFINE_ENUM(CR_ANY_FREE);
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci#define show_criteria(cr)                                               \
13062306a36Sopenharmony_ci	__print_symbolic(cr,                                            \
13162306a36Sopenharmony_ci			 { CR_POWER2_ALIGNED, "CR_POWER2_ALIGNED" },	\
13262306a36Sopenharmony_ci			 { CR_GOAL_LEN_FAST, "CR_GOAL_LEN_FAST" },      \
13362306a36Sopenharmony_ci			 { CR_BEST_AVAIL_LEN, "CR_BEST_AVAIL_LEN" },    \
13462306a36Sopenharmony_ci			 { CR_GOAL_LEN_SLOW, "CR_GOAL_LEN_SLOW" },      \
13562306a36Sopenharmony_ci			 { CR_ANY_FREE, "CR_ANY_FREE" })
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ciTRACE_EVENT(ext4_other_inode_update_time,
13862306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, ino_t orig_ino),
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci	TP_ARGS(inode, orig_ino),
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci	TP_STRUCT__entry(
14362306a36Sopenharmony_ci		__field(	dev_t,	dev			)
14462306a36Sopenharmony_ci		__field(	ino_t,	ino			)
14562306a36Sopenharmony_ci		__field(	ino_t,	orig_ino		)
14662306a36Sopenharmony_ci		__field(	uid_t,	uid			)
14762306a36Sopenharmony_ci		__field(	gid_t,	gid			)
14862306a36Sopenharmony_ci		__field(	__u16, mode			)
14962306a36Sopenharmony_ci	),
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci	TP_fast_assign(
15262306a36Sopenharmony_ci		__entry->orig_ino = orig_ino;
15362306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
15462306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
15562306a36Sopenharmony_ci		__entry->uid	= i_uid_read(inode);
15662306a36Sopenharmony_ci		__entry->gid	= i_gid_read(inode);
15762306a36Sopenharmony_ci		__entry->mode	= inode->i_mode;
15862306a36Sopenharmony_ci	),
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci	TP_printk("dev %d,%d orig_ino %lu ino %lu mode 0%o uid %u gid %u",
16162306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
16262306a36Sopenharmony_ci		  (unsigned long) __entry->orig_ino,
16362306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->mode,
16462306a36Sopenharmony_ci		  __entry->uid, __entry->gid)
16562306a36Sopenharmony_ci);
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ciTRACE_EVENT(ext4_free_inode,
16862306a36Sopenharmony_ci	TP_PROTO(struct inode *inode),
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci	TP_ARGS(inode),
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci	TP_STRUCT__entry(
17362306a36Sopenharmony_ci		__field(	dev_t,	dev			)
17462306a36Sopenharmony_ci		__field(	ino_t,	ino			)
17562306a36Sopenharmony_ci		__field(	uid_t,	uid			)
17662306a36Sopenharmony_ci		__field(	gid_t,	gid			)
17762306a36Sopenharmony_ci		__field(	__u64, blocks			)
17862306a36Sopenharmony_ci		__field(	__u16, mode			)
17962306a36Sopenharmony_ci	),
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci	TP_fast_assign(
18262306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
18362306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
18462306a36Sopenharmony_ci		__entry->uid	= i_uid_read(inode);
18562306a36Sopenharmony_ci		__entry->gid	= i_gid_read(inode);
18662306a36Sopenharmony_ci		__entry->blocks	= inode->i_blocks;
18762306a36Sopenharmony_ci		__entry->mode	= inode->i_mode;
18862306a36Sopenharmony_ci	),
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu mode 0%o uid %u gid %u blocks %llu",
19162306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
19262306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->mode,
19362306a36Sopenharmony_ci		  __entry->uid, __entry->gid, __entry->blocks)
19462306a36Sopenharmony_ci);
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ciTRACE_EVENT(ext4_request_inode,
19762306a36Sopenharmony_ci	TP_PROTO(struct inode *dir, int mode),
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci	TP_ARGS(dir, mode),
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ci	TP_STRUCT__entry(
20262306a36Sopenharmony_ci		__field(	dev_t,	dev			)
20362306a36Sopenharmony_ci		__field(	ino_t,	dir			)
20462306a36Sopenharmony_ci		__field(	__u16, mode			)
20562306a36Sopenharmony_ci	),
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_ci	TP_fast_assign(
20862306a36Sopenharmony_ci		__entry->dev	= dir->i_sb->s_dev;
20962306a36Sopenharmony_ci		__entry->dir	= dir->i_ino;
21062306a36Sopenharmony_ci		__entry->mode	= mode;
21162306a36Sopenharmony_ci	),
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_ci	TP_printk("dev %d,%d dir %lu mode 0%o",
21462306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
21562306a36Sopenharmony_ci		  (unsigned long) __entry->dir, __entry->mode)
21662306a36Sopenharmony_ci);
21762306a36Sopenharmony_ci
21862306a36Sopenharmony_ciTRACE_EVENT(ext4_allocate_inode,
21962306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct inode *dir, int mode),
22062306a36Sopenharmony_ci
22162306a36Sopenharmony_ci	TP_ARGS(inode, dir, mode),
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci	TP_STRUCT__entry(
22462306a36Sopenharmony_ci		__field(	dev_t,	dev			)
22562306a36Sopenharmony_ci		__field(	ino_t,	ino			)
22662306a36Sopenharmony_ci		__field(	ino_t,	dir			)
22762306a36Sopenharmony_ci		__field(	__u16,	mode			)
22862306a36Sopenharmony_ci	),
22962306a36Sopenharmony_ci
23062306a36Sopenharmony_ci	TP_fast_assign(
23162306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
23262306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
23362306a36Sopenharmony_ci		__entry->dir	= dir->i_ino;
23462306a36Sopenharmony_ci		__entry->mode	= mode;
23562306a36Sopenharmony_ci	),
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu dir %lu mode 0%o",
23862306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
23962306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
24062306a36Sopenharmony_ci		  (unsigned long) __entry->dir, __entry->mode)
24162306a36Sopenharmony_ci);
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ciTRACE_EVENT(ext4_evict_inode,
24462306a36Sopenharmony_ci	TP_PROTO(struct inode *inode),
24562306a36Sopenharmony_ci
24662306a36Sopenharmony_ci	TP_ARGS(inode),
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci	TP_STRUCT__entry(
24962306a36Sopenharmony_ci		__field(	dev_t,	dev			)
25062306a36Sopenharmony_ci		__field(	ino_t,	ino			)
25162306a36Sopenharmony_ci		__field(	int,	nlink			)
25262306a36Sopenharmony_ci	),
25362306a36Sopenharmony_ci
25462306a36Sopenharmony_ci	TP_fast_assign(
25562306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
25662306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
25762306a36Sopenharmony_ci		__entry->nlink	= inode->i_nlink;
25862306a36Sopenharmony_ci	),
25962306a36Sopenharmony_ci
26062306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu nlink %d",
26162306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
26262306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->nlink)
26362306a36Sopenharmony_ci);
26462306a36Sopenharmony_ci
26562306a36Sopenharmony_ciTRACE_EVENT(ext4_drop_inode,
26662306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, int drop),
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_ci	TP_ARGS(inode, drop),
26962306a36Sopenharmony_ci
27062306a36Sopenharmony_ci	TP_STRUCT__entry(
27162306a36Sopenharmony_ci		__field(	dev_t,	dev			)
27262306a36Sopenharmony_ci		__field(	ino_t,	ino			)
27362306a36Sopenharmony_ci		__field(	int,	drop			)
27462306a36Sopenharmony_ci	),
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ci	TP_fast_assign(
27762306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
27862306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
27962306a36Sopenharmony_ci		__entry->drop	= drop;
28062306a36Sopenharmony_ci	),
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu drop %d",
28362306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
28462306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->drop)
28562306a36Sopenharmony_ci);
28662306a36Sopenharmony_ci
28762306a36Sopenharmony_ciTRACE_EVENT(ext4_nfs_commit_metadata,
28862306a36Sopenharmony_ci	TP_PROTO(struct inode *inode),
28962306a36Sopenharmony_ci
29062306a36Sopenharmony_ci	TP_ARGS(inode),
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ci	TP_STRUCT__entry(
29362306a36Sopenharmony_ci		__field(	dev_t,	dev			)
29462306a36Sopenharmony_ci		__field(	ino_t,	ino			)
29562306a36Sopenharmony_ci	),
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ci	TP_fast_assign(
29862306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
29962306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
30062306a36Sopenharmony_ci	),
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu",
30362306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
30462306a36Sopenharmony_ci		  (unsigned long) __entry->ino)
30562306a36Sopenharmony_ci);
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ciTRACE_EVENT(ext4_mark_inode_dirty,
30862306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, unsigned long IP),
30962306a36Sopenharmony_ci
31062306a36Sopenharmony_ci	TP_ARGS(inode, IP),
31162306a36Sopenharmony_ci
31262306a36Sopenharmony_ci	TP_STRUCT__entry(
31362306a36Sopenharmony_ci		__field(	dev_t,	dev			)
31462306a36Sopenharmony_ci		__field(	ino_t,	ino			)
31562306a36Sopenharmony_ci		__field(unsigned long,	ip			)
31662306a36Sopenharmony_ci	),
31762306a36Sopenharmony_ci
31862306a36Sopenharmony_ci	TP_fast_assign(
31962306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
32062306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
32162306a36Sopenharmony_ci		__entry->ip	= IP;
32262306a36Sopenharmony_ci	),
32362306a36Sopenharmony_ci
32462306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu caller %pS",
32562306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
32662306a36Sopenharmony_ci		  (unsigned long) __entry->ino, (void *)__entry->ip)
32762306a36Sopenharmony_ci);
32862306a36Sopenharmony_ci
32962306a36Sopenharmony_ciTRACE_EVENT(ext4_begin_ordered_truncate,
33062306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t new_size),
33162306a36Sopenharmony_ci
33262306a36Sopenharmony_ci	TP_ARGS(inode, new_size),
33362306a36Sopenharmony_ci
33462306a36Sopenharmony_ci	TP_STRUCT__entry(
33562306a36Sopenharmony_ci		__field(	dev_t,	dev			)
33662306a36Sopenharmony_ci		__field(	ino_t,	ino			)
33762306a36Sopenharmony_ci		__field(	loff_t,	new_size		)
33862306a36Sopenharmony_ci	),
33962306a36Sopenharmony_ci
34062306a36Sopenharmony_ci	TP_fast_assign(
34162306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
34262306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
34362306a36Sopenharmony_ci		__entry->new_size	= new_size;
34462306a36Sopenharmony_ci	),
34562306a36Sopenharmony_ci
34662306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu new_size %lld",
34762306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
34862306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
34962306a36Sopenharmony_ci		  __entry->new_size)
35062306a36Sopenharmony_ci);
35162306a36Sopenharmony_ci
35262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4__write_begin,
35362306a36Sopenharmony_ci
35462306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len),
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_ci	TP_ARGS(inode, pos, len),
35762306a36Sopenharmony_ci
35862306a36Sopenharmony_ci	TP_STRUCT__entry(
35962306a36Sopenharmony_ci		__field(	dev_t,	dev			)
36062306a36Sopenharmony_ci		__field(	ino_t,	ino			)
36162306a36Sopenharmony_ci		__field(	loff_t,	pos			)
36262306a36Sopenharmony_ci		__field(	unsigned int, len		)
36362306a36Sopenharmony_ci	),
36462306a36Sopenharmony_ci
36562306a36Sopenharmony_ci	TP_fast_assign(
36662306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
36762306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
36862306a36Sopenharmony_ci		__entry->pos	= pos;
36962306a36Sopenharmony_ci		__entry->len	= len;
37062306a36Sopenharmony_ci	),
37162306a36Sopenharmony_ci
37262306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu pos %lld len %u",
37362306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
37462306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
37562306a36Sopenharmony_ci		  __entry->pos, __entry->len)
37662306a36Sopenharmony_ci);
37762306a36Sopenharmony_ci
37862306a36Sopenharmony_ciDEFINE_EVENT(ext4__write_begin, ext4_write_begin,
37962306a36Sopenharmony_ci
38062306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len),
38162306a36Sopenharmony_ci
38262306a36Sopenharmony_ci	TP_ARGS(inode, pos, len)
38362306a36Sopenharmony_ci);
38462306a36Sopenharmony_ci
38562306a36Sopenharmony_ciDEFINE_EVENT(ext4__write_begin, ext4_da_write_begin,
38662306a36Sopenharmony_ci
38762306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len),
38862306a36Sopenharmony_ci
38962306a36Sopenharmony_ci	TP_ARGS(inode, pos, len)
39062306a36Sopenharmony_ci);
39162306a36Sopenharmony_ci
39262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4__write_end,
39362306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
39462306a36Sopenharmony_ci			unsigned int copied),
39562306a36Sopenharmony_ci
39662306a36Sopenharmony_ci	TP_ARGS(inode, pos, len, copied),
39762306a36Sopenharmony_ci
39862306a36Sopenharmony_ci	TP_STRUCT__entry(
39962306a36Sopenharmony_ci		__field(	dev_t,	dev			)
40062306a36Sopenharmony_ci		__field(	ino_t,	ino			)
40162306a36Sopenharmony_ci		__field(	loff_t,	pos			)
40262306a36Sopenharmony_ci		__field(	unsigned int, len		)
40362306a36Sopenharmony_ci		__field(	unsigned int, copied		)
40462306a36Sopenharmony_ci	),
40562306a36Sopenharmony_ci
40662306a36Sopenharmony_ci	TP_fast_assign(
40762306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
40862306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
40962306a36Sopenharmony_ci		__entry->pos	= pos;
41062306a36Sopenharmony_ci		__entry->len	= len;
41162306a36Sopenharmony_ci		__entry->copied	= copied;
41262306a36Sopenharmony_ci	),
41362306a36Sopenharmony_ci
41462306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu pos %lld len %u copied %u",
41562306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
41662306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
41762306a36Sopenharmony_ci		  __entry->pos, __entry->len, __entry->copied)
41862306a36Sopenharmony_ci);
41962306a36Sopenharmony_ci
42062306a36Sopenharmony_ciDEFINE_EVENT(ext4__write_end, ext4_write_end,
42162306a36Sopenharmony_ci
42262306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
42362306a36Sopenharmony_ci		 unsigned int copied),
42462306a36Sopenharmony_ci
42562306a36Sopenharmony_ci	TP_ARGS(inode, pos, len, copied)
42662306a36Sopenharmony_ci);
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_ciDEFINE_EVENT(ext4__write_end, ext4_journalled_write_end,
42962306a36Sopenharmony_ci
43062306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
43162306a36Sopenharmony_ci		 unsigned int copied),
43262306a36Sopenharmony_ci
43362306a36Sopenharmony_ci	TP_ARGS(inode, pos, len, copied)
43462306a36Sopenharmony_ci);
43562306a36Sopenharmony_ci
43662306a36Sopenharmony_ciDEFINE_EVENT(ext4__write_end, ext4_da_write_end,
43762306a36Sopenharmony_ci
43862306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
43962306a36Sopenharmony_ci		 unsigned int copied),
44062306a36Sopenharmony_ci
44162306a36Sopenharmony_ci	TP_ARGS(inode, pos, len, copied)
44262306a36Sopenharmony_ci);
44362306a36Sopenharmony_ci
44462306a36Sopenharmony_ciTRACE_EVENT(ext4_writepages,
44562306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct writeback_control *wbc),
44662306a36Sopenharmony_ci
44762306a36Sopenharmony_ci	TP_ARGS(inode, wbc),
44862306a36Sopenharmony_ci
44962306a36Sopenharmony_ci	TP_STRUCT__entry(
45062306a36Sopenharmony_ci		__field(	dev_t,	dev			)
45162306a36Sopenharmony_ci		__field(	ino_t,	ino			)
45262306a36Sopenharmony_ci		__field(	long,	nr_to_write		)
45362306a36Sopenharmony_ci		__field(	long,	pages_skipped		)
45462306a36Sopenharmony_ci		__field(	loff_t,	range_start		)
45562306a36Sopenharmony_ci		__field(	loff_t,	range_end		)
45662306a36Sopenharmony_ci		__field(       pgoff_t,	writeback_index		)
45762306a36Sopenharmony_ci		__field(	int,	sync_mode		)
45862306a36Sopenharmony_ci		__field(	char,	for_kupdate		)
45962306a36Sopenharmony_ci		__field(	char,	range_cyclic		)
46062306a36Sopenharmony_ci	),
46162306a36Sopenharmony_ci
46262306a36Sopenharmony_ci	TP_fast_assign(
46362306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
46462306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
46562306a36Sopenharmony_ci		__entry->nr_to_write	= wbc->nr_to_write;
46662306a36Sopenharmony_ci		__entry->pages_skipped	= wbc->pages_skipped;
46762306a36Sopenharmony_ci		__entry->range_start	= wbc->range_start;
46862306a36Sopenharmony_ci		__entry->range_end	= wbc->range_end;
46962306a36Sopenharmony_ci		__entry->writeback_index = inode->i_mapping->writeback_index;
47062306a36Sopenharmony_ci		__entry->sync_mode	= wbc->sync_mode;
47162306a36Sopenharmony_ci		__entry->for_kupdate	= wbc->for_kupdate;
47262306a36Sopenharmony_ci		__entry->range_cyclic	= wbc->range_cyclic;
47362306a36Sopenharmony_ci	),
47462306a36Sopenharmony_ci
47562306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu nr_to_write %ld pages_skipped %ld "
47662306a36Sopenharmony_ci		  "range_start %lld range_end %lld sync_mode %d "
47762306a36Sopenharmony_ci		  "for_kupdate %d range_cyclic %d writeback_index %lu",
47862306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
47962306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->nr_to_write,
48062306a36Sopenharmony_ci		  __entry->pages_skipped, __entry->range_start,
48162306a36Sopenharmony_ci		  __entry->range_end, __entry->sync_mode,
48262306a36Sopenharmony_ci		  __entry->for_kupdate, __entry->range_cyclic,
48362306a36Sopenharmony_ci		  (unsigned long) __entry->writeback_index)
48462306a36Sopenharmony_ci);
48562306a36Sopenharmony_ci
48662306a36Sopenharmony_ciTRACE_EVENT(ext4_da_write_pages,
48762306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, pgoff_t first_page,
48862306a36Sopenharmony_ci		 struct writeback_control *wbc),
48962306a36Sopenharmony_ci
49062306a36Sopenharmony_ci	TP_ARGS(inode, first_page, wbc),
49162306a36Sopenharmony_ci
49262306a36Sopenharmony_ci	TP_STRUCT__entry(
49362306a36Sopenharmony_ci		__field(	dev_t,	dev			)
49462306a36Sopenharmony_ci		__field(	ino_t,	ino			)
49562306a36Sopenharmony_ci		__field(      pgoff_t,	first_page		)
49662306a36Sopenharmony_ci		__field(	 long,	nr_to_write		)
49762306a36Sopenharmony_ci		__field(	  int,	sync_mode		)
49862306a36Sopenharmony_ci	),
49962306a36Sopenharmony_ci
50062306a36Sopenharmony_ci	TP_fast_assign(
50162306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
50262306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
50362306a36Sopenharmony_ci		__entry->first_page	= first_page;
50462306a36Sopenharmony_ci		__entry->nr_to_write	= wbc->nr_to_write;
50562306a36Sopenharmony_ci		__entry->sync_mode	= wbc->sync_mode;
50662306a36Sopenharmony_ci	),
50762306a36Sopenharmony_ci
50862306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu first_page %lu nr_to_write %ld "
50962306a36Sopenharmony_ci		  "sync_mode %d",
51062306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
51162306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->first_page,
51262306a36Sopenharmony_ci		  __entry->nr_to_write, __entry->sync_mode)
51362306a36Sopenharmony_ci);
51462306a36Sopenharmony_ci
51562306a36Sopenharmony_ciTRACE_EVENT(ext4_da_write_pages_extent,
51662306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map),
51762306a36Sopenharmony_ci
51862306a36Sopenharmony_ci	TP_ARGS(inode, map),
51962306a36Sopenharmony_ci
52062306a36Sopenharmony_ci	TP_STRUCT__entry(
52162306a36Sopenharmony_ci		__field(	dev_t,	dev			)
52262306a36Sopenharmony_ci		__field(	ino_t,	ino			)
52362306a36Sopenharmony_ci		__field(	__u64,	lblk			)
52462306a36Sopenharmony_ci		__field(	__u32,	len			)
52562306a36Sopenharmony_ci		__field(	__u32,	flags			)
52662306a36Sopenharmony_ci	),
52762306a36Sopenharmony_ci
52862306a36Sopenharmony_ci	TP_fast_assign(
52962306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
53062306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
53162306a36Sopenharmony_ci		__entry->lblk		= map->m_lblk;
53262306a36Sopenharmony_ci		__entry->len		= map->m_len;
53362306a36Sopenharmony_ci		__entry->flags		= map->m_flags;
53462306a36Sopenharmony_ci	),
53562306a36Sopenharmony_ci
53662306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu lblk %llu len %u flags %s",
53762306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
53862306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->lblk, __entry->len,
53962306a36Sopenharmony_ci		  show_mflags(__entry->flags))
54062306a36Sopenharmony_ci);
54162306a36Sopenharmony_ci
54262306a36Sopenharmony_ciTRACE_EVENT(ext4_writepages_result,
54362306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct writeback_control *wbc,
54462306a36Sopenharmony_ci			int ret, int pages_written),
54562306a36Sopenharmony_ci
54662306a36Sopenharmony_ci	TP_ARGS(inode, wbc, ret, pages_written),
54762306a36Sopenharmony_ci
54862306a36Sopenharmony_ci	TP_STRUCT__entry(
54962306a36Sopenharmony_ci		__field(	dev_t,	dev			)
55062306a36Sopenharmony_ci		__field(	ino_t,	ino			)
55162306a36Sopenharmony_ci		__field(	int,	ret			)
55262306a36Sopenharmony_ci		__field(	int,	pages_written		)
55362306a36Sopenharmony_ci		__field(	long,	pages_skipped		)
55462306a36Sopenharmony_ci		__field(       pgoff_t,	writeback_index		)
55562306a36Sopenharmony_ci		__field(	int,	sync_mode		)
55662306a36Sopenharmony_ci	),
55762306a36Sopenharmony_ci
55862306a36Sopenharmony_ci	TP_fast_assign(
55962306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
56062306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
56162306a36Sopenharmony_ci		__entry->ret		= ret;
56262306a36Sopenharmony_ci		__entry->pages_written	= pages_written;
56362306a36Sopenharmony_ci		__entry->pages_skipped	= wbc->pages_skipped;
56462306a36Sopenharmony_ci		__entry->writeback_index = inode->i_mapping->writeback_index;
56562306a36Sopenharmony_ci		__entry->sync_mode	= wbc->sync_mode;
56662306a36Sopenharmony_ci	),
56762306a36Sopenharmony_ci
56862306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld "
56962306a36Sopenharmony_ci		  "sync_mode %d writeback_index %lu",
57062306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
57162306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->ret,
57262306a36Sopenharmony_ci		  __entry->pages_written, __entry->pages_skipped,
57362306a36Sopenharmony_ci		  __entry->sync_mode,
57462306a36Sopenharmony_ci		  (unsigned long) __entry->writeback_index)
57562306a36Sopenharmony_ci);
57662306a36Sopenharmony_ci
57762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4__folio_op,
57862306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct folio *folio),
57962306a36Sopenharmony_ci
58062306a36Sopenharmony_ci	TP_ARGS(inode, folio),
58162306a36Sopenharmony_ci
58262306a36Sopenharmony_ci	TP_STRUCT__entry(
58362306a36Sopenharmony_ci		__field(	dev_t,	dev			)
58462306a36Sopenharmony_ci		__field(	ino_t,	ino			)
58562306a36Sopenharmony_ci		__field(	pgoff_t, index			)
58662306a36Sopenharmony_ci
58762306a36Sopenharmony_ci	),
58862306a36Sopenharmony_ci
58962306a36Sopenharmony_ci	TP_fast_assign(
59062306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
59162306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
59262306a36Sopenharmony_ci		__entry->index	= folio->index;
59362306a36Sopenharmony_ci	),
59462306a36Sopenharmony_ci
59562306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu folio_index %lu",
59662306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
59762306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
59862306a36Sopenharmony_ci		  (unsigned long) __entry->index)
59962306a36Sopenharmony_ci);
60062306a36Sopenharmony_ci
60162306a36Sopenharmony_ciDEFINE_EVENT(ext4__folio_op, ext4_read_folio,
60262306a36Sopenharmony_ci
60362306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct folio *folio),
60462306a36Sopenharmony_ci
60562306a36Sopenharmony_ci	TP_ARGS(inode, folio)
60662306a36Sopenharmony_ci);
60762306a36Sopenharmony_ci
60862306a36Sopenharmony_ciDEFINE_EVENT(ext4__folio_op, ext4_release_folio,
60962306a36Sopenharmony_ci
61062306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct folio *folio),
61162306a36Sopenharmony_ci
61262306a36Sopenharmony_ci	TP_ARGS(inode, folio)
61362306a36Sopenharmony_ci);
61462306a36Sopenharmony_ci
61562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4_invalidate_folio_op,
61662306a36Sopenharmony_ci	TP_PROTO(struct folio *folio, size_t offset, size_t length),
61762306a36Sopenharmony_ci
61862306a36Sopenharmony_ci	TP_ARGS(folio, offset, length),
61962306a36Sopenharmony_ci
62062306a36Sopenharmony_ci	TP_STRUCT__entry(
62162306a36Sopenharmony_ci		__field(	dev_t,	dev			)
62262306a36Sopenharmony_ci		__field(	ino_t,	ino			)
62362306a36Sopenharmony_ci		__field(	pgoff_t, index			)
62462306a36Sopenharmony_ci		__field(	size_t, offset			)
62562306a36Sopenharmony_ci		__field(	size_t, length			)
62662306a36Sopenharmony_ci	),
62762306a36Sopenharmony_ci
62862306a36Sopenharmony_ci	TP_fast_assign(
62962306a36Sopenharmony_ci		__entry->dev	= folio->mapping->host->i_sb->s_dev;
63062306a36Sopenharmony_ci		__entry->ino	= folio->mapping->host->i_ino;
63162306a36Sopenharmony_ci		__entry->index	= folio->index;
63262306a36Sopenharmony_ci		__entry->offset	= offset;
63362306a36Sopenharmony_ci		__entry->length	= length;
63462306a36Sopenharmony_ci	),
63562306a36Sopenharmony_ci
63662306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu folio_index %lu offset %zu length %zu",
63762306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
63862306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
63962306a36Sopenharmony_ci		  (unsigned long) __entry->index,
64062306a36Sopenharmony_ci		  __entry->offset, __entry->length)
64162306a36Sopenharmony_ci);
64262306a36Sopenharmony_ci
64362306a36Sopenharmony_ciDEFINE_EVENT(ext4_invalidate_folio_op, ext4_invalidate_folio,
64462306a36Sopenharmony_ci	TP_PROTO(struct folio *folio, size_t offset, size_t length),
64562306a36Sopenharmony_ci
64662306a36Sopenharmony_ci	TP_ARGS(folio, offset, length)
64762306a36Sopenharmony_ci);
64862306a36Sopenharmony_ci
64962306a36Sopenharmony_ciDEFINE_EVENT(ext4_invalidate_folio_op, ext4_journalled_invalidate_folio,
65062306a36Sopenharmony_ci	TP_PROTO(struct folio *folio, size_t offset, size_t length),
65162306a36Sopenharmony_ci
65262306a36Sopenharmony_ci	TP_ARGS(folio, offset, length)
65362306a36Sopenharmony_ci);
65462306a36Sopenharmony_ci
65562306a36Sopenharmony_ciTRACE_EVENT(ext4_discard_blocks,
65662306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, unsigned long long blk,
65762306a36Sopenharmony_ci			unsigned long long count),
65862306a36Sopenharmony_ci
65962306a36Sopenharmony_ci	TP_ARGS(sb, blk, count),
66062306a36Sopenharmony_ci
66162306a36Sopenharmony_ci	TP_STRUCT__entry(
66262306a36Sopenharmony_ci		__field(	dev_t,	dev			)
66362306a36Sopenharmony_ci		__field(	__u64,	blk			)
66462306a36Sopenharmony_ci		__field(	__u64,	count			)
66562306a36Sopenharmony_ci
66662306a36Sopenharmony_ci	),
66762306a36Sopenharmony_ci
66862306a36Sopenharmony_ci	TP_fast_assign(
66962306a36Sopenharmony_ci		__entry->dev	= sb->s_dev;
67062306a36Sopenharmony_ci		__entry->blk	= blk;
67162306a36Sopenharmony_ci		__entry->count	= count;
67262306a36Sopenharmony_ci	),
67362306a36Sopenharmony_ci
67462306a36Sopenharmony_ci	TP_printk("dev %d,%d blk %llu count %llu",
67562306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
67662306a36Sopenharmony_ci		  __entry->blk, __entry->count)
67762306a36Sopenharmony_ci);
67862306a36Sopenharmony_ci
67962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4__mb_new_pa,
68062306a36Sopenharmony_ci	TP_PROTO(struct ext4_allocation_context *ac,
68162306a36Sopenharmony_ci		 struct ext4_prealloc_space *pa),
68262306a36Sopenharmony_ci
68362306a36Sopenharmony_ci	TP_ARGS(ac, pa),
68462306a36Sopenharmony_ci
68562306a36Sopenharmony_ci	TP_STRUCT__entry(
68662306a36Sopenharmony_ci		__field(	dev_t,	dev			)
68762306a36Sopenharmony_ci		__field(	ino_t,	ino			)
68862306a36Sopenharmony_ci		__field(	__u64,	pa_pstart		)
68962306a36Sopenharmony_ci		__field(	__u64,	pa_lstart		)
69062306a36Sopenharmony_ci		__field(	__u32,	pa_len			)
69162306a36Sopenharmony_ci
69262306a36Sopenharmony_ci	),
69362306a36Sopenharmony_ci
69462306a36Sopenharmony_ci	TP_fast_assign(
69562306a36Sopenharmony_ci		__entry->dev		= ac->ac_sb->s_dev;
69662306a36Sopenharmony_ci		__entry->ino		= ac->ac_inode->i_ino;
69762306a36Sopenharmony_ci		__entry->pa_pstart	= pa->pa_pstart;
69862306a36Sopenharmony_ci		__entry->pa_lstart	= pa->pa_lstart;
69962306a36Sopenharmony_ci		__entry->pa_len		= pa->pa_len;
70062306a36Sopenharmony_ci	),
70162306a36Sopenharmony_ci
70262306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu pstart %llu len %u lstart %llu",
70362306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
70462306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
70562306a36Sopenharmony_ci		  __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart)
70662306a36Sopenharmony_ci);
70762306a36Sopenharmony_ci
70862306a36Sopenharmony_ciDEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_inode_pa,
70962306a36Sopenharmony_ci
71062306a36Sopenharmony_ci	TP_PROTO(struct ext4_allocation_context *ac,
71162306a36Sopenharmony_ci		 struct ext4_prealloc_space *pa),
71262306a36Sopenharmony_ci
71362306a36Sopenharmony_ci	TP_ARGS(ac, pa)
71462306a36Sopenharmony_ci);
71562306a36Sopenharmony_ci
71662306a36Sopenharmony_ciDEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_group_pa,
71762306a36Sopenharmony_ci
71862306a36Sopenharmony_ci	TP_PROTO(struct ext4_allocation_context *ac,
71962306a36Sopenharmony_ci		 struct ext4_prealloc_space *pa),
72062306a36Sopenharmony_ci
72162306a36Sopenharmony_ci	TP_ARGS(ac, pa)
72262306a36Sopenharmony_ci);
72362306a36Sopenharmony_ci
72462306a36Sopenharmony_ciTRACE_EVENT(ext4_mb_release_inode_pa,
72562306a36Sopenharmony_ci	TP_PROTO(struct ext4_prealloc_space *pa,
72662306a36Sopenharmony_ci		 unsigned long long block, unsigned int count),
72762306a36Sopenharmony_ci
72862306a36Sopenharmony_ci	TP_ARGS(pa, block, count),
72962306a36Sopenharmony_ci
73062306a36Sopenharmony_ci	TP_STRUCT__entry(
73162306a36Sopenharmony_ci		__field(	dev_t,	dev			)
73262306a36Sopenharmony_ci		__field(	ino_t,	ino			)
73362306a36Sopenharmony_ci		__field(	__u64,	block			)
73462306a36Sopenharmony_ci		__field(	__u32,	count			)
73562306a36Sopenharmony_ci
73662306a36Sopenharmony_ci	),
73762306a36Sopenharmony_ci
73862306a36Sopenharmony_ci	TP_fast_assign(
73962306a36Sopenharmony_ci		__entry->dev		= pa->pa_inode->i_sb->s_dev;
74062306a36Sopenharmony_ci		__entry->ino		= pa->pa_inode->i_ino;
74162306a36Sopenharmony_ci		__entry->block		= block;
74262306a36Sopenharmony_ci		__entry->count		= count;
74362306a36Sopenharmony_ci	),
74462306a36Sopenharmony_ci
74562306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu block %llu count %u",
74662306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
74762306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
74862306a36Sopenharmony_ci		  __entry->block, __entry->count)
74962306a36Sopenharmony_ci);
75062306a36Sopenharmony_ci
75162306a36Sopenharmony_ciTRACE_EVENT(ext4_mb_release_group_pa,
75262306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, struct ext4_prealloc_space *pa),
75362306a36Sopenharmony_ci
75462306a36Sopenharmony_ci	TP_ARGS(sb, pa),
75562306a36Sopenharmony_ci
75662306a36Sopenharmony_ci	TP_STRUCT__entry(
75762306a36Sopenharmony_ci		__field(	dev_t,	dev			)
75862306a36Sopenharmony_ci		__field(	__u64,	pa_pstart		)
75962306a36Sopenharmony_ci		__field(	__u32,	pa_len			)
76062306a36Sopenharmony_ci
76162306a36Sopenharmony_ci	),
76262306a36Sopenharmony_ci
76362306a36Sopenharmony_ci	TP_fast_assign(
76462306a36Sopenharmony_ci		__entry->dev		= sb->s_dev;
76562306a36Sopenharmony_ci		__entry->pa_pstart	= pa->pa_pstart;
76662306a36Sopenharmony_ci		__entry->pa_len		= pa->pa_len;
76762306a36Sopenharmony_ci	),
76862306a36Sopenharmony_ci
76962306a36Sopenharmony_ci	TP_printk("dev %d,%d pstart %llu len %u",
77062306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
77162306a36Sopenharmony_ci		  __entry->pa_pstart, __entry->pa_len)
77262306a36Sopenharmony_ci);
77362306a36Sopenharmony_ci
77462306a36Sopenharmony_ciTRACE_EVENT(ext4_discard_preallocations,
77562306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, unsigned int len, unsigned int needed),
77662306a36Sopenharmony_ci
77762306a36Sopenharmony_ci	TP_ARGS(inode, len, needed),
77862306a36Sopenharmony_ci
77962306a36Sopenharmony_ci	TP_STRUCT__entry(
78062306a36Sopenharmony_ci		__field(	dev_t,		dev		)
78162306a36Sopenharmony_ci		__field(	ino_t,		ino		)
78262306a36Sopenharmony_ci		__field(	unsigned int,	len		)
78362306a36Sopenharmony_ci		__field(	unsigned int,	needed		)
78462306a36Sopenharmony_ci
78562306a36Sopenharmony_ci	),
78662306a36Sopenharmony_ci
78762306a36Sopenharmony_ci	TP_fast_assign(
78862306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
78962306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
79062306a36Sopenharmony_ci		__entry->len	= len;
79162306a36Sopenharmony_ci		__entry->needed	= needed;
79262306a36Sopenharmony_ci	),
79362306a36Sopenharmony_ci
79462306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu len: %u needed %u",
79562306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
79662306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->len,
79762306a36Sopenharmony_ci		  __entry->needed)
79862306a36Sopenharmony_ci);
79962306a36Sopenharmony_ci
80062306a36Sopenharmony_ciTRACE_EVENT(ext4_mb_discard_preallocations,
80162306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, int needed),
80262306a36Sopenharmony_ci
80362306a36Sopenharmony_ci	TP_ARGS(sb, needed),
80462306a36Sopenharmony_ci
80562306a36Sopenharmony_ci	TP_STRUCT__entry(
80662306a36Sopenharmony_ci		__field(	dev_t,	dev			)
80762306a36Sopenharmony_ci		__field(	int,	needed			)
80862306a36Sopenharmony_ci
80962306a36Sopenharmony_ci	),
81062306a36Sopenharmony_ci
81162306a36Sopenharmony_ci	TP_fast_assign(
81262306a36Sopenharmony_ci		__entry->dev	= sb->s_dev;
81362306a36Sopenharmony_ci		__entry->needed	= needed;
81462306a36Sopenharmony_ci	),
81562306a36Sopenharmony_ci
81662306a36Sopenharmony_ci	TP_printk("dev %d,%d needed %d",
81762306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
81862306a36Sopenharmony_ci		  __entry->needed)
81962306a36Sopenharmony_ci);
82062306a36Sopenharmony_ci
82162306a36Sopenharmony_ciTRACE_EVENT(ext4_request_blocks,
82262306a36Sopenharmony_ci	TP_PROTO(struct ext4_allocation_request *ar),
82362306a36Sopenharmony_ci
82462306a36Sopenharmony_ci	TP_ARGS(ar),
82562306a36Sopenharmony_ci
82662306a36Sopenharmony_ci	TP_STRUCT__entry(
82762306a36Sopenharmony_ci		__field(	dev_t,	dev			)
82862306a36Sopenharmony_ci		__field(	ino_t,	ino			)
82962306a36Sopenharmony_ci		__field(	unsigned int, len		)
83062306a36Sopenharmony_ci		__field(	__u32,  logical			)
83162306a36Sopenharmony_ci		__field(	__u32,	lleft			)
83262306a36Sopenharmony_ci		__field(	__u32,	lright			)
83362306a36Sopenharmony_ci		__field(	__u64,	goal			)
83462306a36Sopenharmony_ci		__field(	__u64,	pleft			)
83562306a36Sopenharmony_ci		__field(	__u64,	pright			)
83662306a36Sopenharmony_ci		__field(	unsigned int, flags		)
83762306a36Sopenharmony_ci	),
83862306a36Sopenharmony_ci
83962306a36Sopenharmony_ci	TP_fast_assign(
84062306a36Sopenharmony_ci		__entry->dev	= ar->inode->i_sb->s_dev;
84162306a36Sopenharmony_ci		__entry->ino	= ar->inode->i_ino;
84262306a36Sopenharmony_ci		__entry->len	= ar->len;
84362306a36Sopenharmony_ci		__entry->logical = ar->logical;
84462306a36Sopenharmony_ci		__entry->goal	= ar->goal;
84562306a36Sopenharmony_ci		__entry->lleft	= ar->lleft;
84662306a36Sopenharmony_ci		__entry->lright	= ar->lright;
84762306a36Sopenharmony_ci		__entry->pleft	= ar->pleft;
84862306a36Sopenharmony_ci		__entry->pright	= ar->pright;
84962306a36Sopenharmony_ci		__entry->flags	= ar->flags;
85062306a36Sopenharmony_ci	),
85162306a36Sopenharmony_ci
85262306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu flags %s len %u lblk %u goal %llu "
85362306a36Sopenharmony_ci		  "lleft %u lright %u pleft %llu pright %llu ",
85462306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
85562306a36Sopenharmony_ci		  (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
85662306a36Sopenharmony_ci		  __entry->len, __entry->logical, __entry->goal,
85762306a36Sopenharmony_ci		  __entry->lleft, __entry->lright, __entry->pleft,
85862306a36Sopenharmony_ci		  __entry->pright)
85962306a36Sopenharmony_ci);
86062306a36Sopenharmony_ci
86162306a36Sopenharmony_ciTRACE_EVENT(ext4_allocate_blocks,
86262306a36Sopenharmony_ci	TP_PROTO(struct ext4_allocation_request *ar, unsigned long long block),
86362306a36Sopenharmony_ci
86462306a36Sopenharmony_ci	TP_ARGS(ar, block),
86562306a36Sopenharmony_ci
86662306a36Sopenharmony_ci	TP_STRUCT__entry(
86762306a36Sopenharmony_ci		__field(	dev_t,	dev			)
86862306a36Sopenharmony_ci		__field(	ino_t,	ino			)
86962306a36Sopenharmony_ci		__field(	__u64,	block			)
87062306a36Sopenharmony_ci		__field(	unsigned int, len		)
87162306a36Sopenharmony_ci		__field(	__u32,  logical			)
87262306a36Sopenharmony_ci		__field(	__u32,	lleft			)
87362306a36Sopenharmony_ci		__field(	__u32,	lright			)
87462306a36Sopenharmony_ci		__field(	__u64,	goal			)
87562306a36Sopenharmony_ci		__field(	__u64,	pleft			)
87662306a36Sopenharmony_ci		__field(	__u64,	pright			)
87762306a36Sopenharmony_ci		__field(	unsigned int, flags		)
87862306a36Sopenharmony_ci	),
87962306a36Sopenharmony_ci
88062306a36Sopenharmony_ci	TP_fast_assign(
88162306a36Sopenharmony_ci		__entry->dev	= ar->inode->i_sb->s_dev;
88262306a36Sopenharmony_ci		__entry->ino	= ar->inode->i_ino;
88362306a36Sopenharmony_ci		__entry->block	= block;
88462306a36Sopenharmony_ci		__entry->len	= ar->len;
88562306a36Sopenharmony_ci		__entry->logical = ar->logical;
88662306a36Sopenharmony_ci		__entry->goal	= ar->goal;
88762306a36Sopenharmony_ci		__entry->lleft	= ar->lleft;
88862306a36Sopenharmony_ci		__entry->lright	= ar->lright;
88962306a36Sopenharmony_ci		__entry->pleft	= ar->pleft;
89062306a36Sopenharmony_ci		__entry->pright	= ar->pright;
89162306a36Sopenharmony_ci		__entry->flags	= ar->flags;
89262306a36Sopenharmony_ci	),
89362306a36Sopenharmony_ci
89462306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu flags %s len %u block %llu lblk %u "
89562306a36Sopenharmony_ci		  "goal %llu lleft %u lright %u pleft %llu pright %llu",
89662306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
89762306a36Sopenharmony_ci		  (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
89862306a36Sopenharmony_ci		  __entry->len, __entry->block, __entry->logical,
89962306a36Sopenharmony_ci		  __entry->goal,  __entry->lleft, __entry->lright,
90062306a36Sopenharmony_ci		  __entry->pleft, __entry->pright)
90162306a36Sopenharmony_ci);
90262306a36Sopenharmony_ci
90362306a36Sopenharmony_ciTRACE_EVENT(ext4_free_blocks,
90462306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, __u64 block, unsigned long count,
90562306a36Sopenharmony_ci		 int flags),
90662306a36Sopenharmony_ci
90762306a36Sopenharmony_ci	TP_ARGS(inode, block, count, flags),
90862306a36Sopenharmony_ci
90962306a36Sopenharmony_ci	TP_STRUCT__entry(
91062306a36Sopenharmony_ci		__field(	dev_t,	dev			)
91162306a36Sopenharmony_ci		__field(	ino_t,	ino			)
91262306a36Sopenharmony_ci		__field(	__u64,	block			)
91362306a36Sopenharmony_ci		__field(	unsigned long,	count		)
91462306a36Sopenharmony_ci		__field(	int,	flags			)
91562306a36Sopenharmony_ci		__field(	__u16,	mode			)
91662306a36Sopenharmony_ci	),
91762306a36Sopenharmony_ci
91862306a36Sopenharmony_ci	TP_fast_assign(
91962306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
92062306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
92162306a36Sopenharmony_ci		__entry->block		= block;
92262306a36Sopenharmony_ci		__entry->count		= count;
92362306a36Sopenharmony_ci		__entry->flags		= flags;
92462306a36Sopenharmony_ci		__entry->mode		= inode->i_mode;
92562306a36Sopenharmony_ci	),
92662306a36Sopenharmony_ci
92762306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %s",
92862306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
92962306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
93062306a36Sopenharmony_ci		  __entry->mode, __entry->block, __entry->count,
93162306a36Sopenharmony_ci		  show_free_flags(__entry->flags))
93262306a36Sopenharmony_ci);
93362306a36Sopenharmony_ci
93462306a36Sopenharmony_ciTRACE_EVENT(ext4_sync_file_enter,
93562306a36Sopenharmony_ci	TP_PROTO(struct file *file, int datasync),
93662306a36Sopenharmony_ci
93762306a36Sopenharmony_ci	TP_ARGS(file, datasync),
93862306a36Sopenharmony_ci
93962306a36Sopenharmony_ci	TP_STRUCT__entry(
94062306a36Sopenharmony_ci		__field(	dev_t,	dev			)
94162306a36Sopenharmony_ci		__field(	ino_t,	ino			)
94262306a36Sopenharmony_ci		__field(	ino_t,	parent			)
94362306a36Sopenharmony_ci		__field(	int,	datasync		)
94462306a36Sopenharmony_ci	),
94562306a36Sopenharmony_ci
94662306a36Sopenharmony_ci	TP_fast_assign(
94762306a36Sopenharmony_ci		struct dentry *dentry = file->f_path.dentry;
94862306a36Sopenharmony_ci
94962306a36Sopenharmony_ci		__entry->dev		= dentry->d_sb->s_dev;
95062306a36Sopenharmony_ci		__entry->ino		= d_inode(dentry)->i_ino;
95162306a36Sopenharmony_ci		__entry->datasync	= datasync;
95262306a36Sopenharmony_ci		__entry->parent		= d_inode(dentry->d_parent)->i_ino;
95362306a36Sopenharmony_ci	),
95462306a36Sopenharmony_ci
95562306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu parent %lu datasync %d ",
95662306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
95762306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
95862306a36Sopenharmony_ci		  (unsigned long) __entry->parent, __entry->datasync)
95962306a36Sopenharmony_ci);
96062306a36Sopenharmony_ci
96162306a36Sopenharmony_ciTRACE_EVENT(ext4_sync_file_exit,
96262306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, int ret),
96362306a36Sopenharmony_ci
96462306a36Sopenharmony_ci	TP_ARGS(inode, ret),
96562306a36Sopenharmony_ci
96662306a36Sopenharmony_ci	TP_STRUCT__entry(
96762306a36Sopenharmony_ci		__field(	dev_t,	dev			)
96862306a36Sopenharmony_ci		__field(	ino_t,	ino			)
96962306a36Sopenharmony_ci		__field(	int,	ret			)
97062306a36Sopenharmony_ci	),
97162306a36Sopenharmony_ci
97262306a36Sopenharmony_ci	TP_fast_assign(
97362306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
97462306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
97562306a36Sopenharmony_ci		__entry->ret		= ret;
97662306a36Sopenharmony_ci	),
97762306a36Sopenharmony_ci
97862306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu ret %d",
97962306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
98062306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
98162306a36Sopenharmony_ci		  __entry->ret)
98262306a36Sopenharmony_ci);
98362306a36Sopenharmony_ci
98462306a36Sopenharmony_ciTRACE_EVENT(ext4_sync_fs,
98562306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, int wait),
98662306a36Sopenharmony_ci
98762306a36Sopenharmony_ci	TP_ARGS(sb, wait),
98862306a36Sopenharmony_ci
98962306a36Sopenharmony_ci	TP_STRUCT__entry(
99062306a36Sopenharmony_ci		__field(	dev_t,	dev			)
99162306a36Sopenharmony_ci		__field(	int,	wait			)
99262306a36Sopenharmony_ci
99362306a36Sopenharmony_ci	),
99462306a36Sopenharmony_ci
99562306a36Sopenharmony_ci	TP_fast_assign(
99662306a36Sopenharmony_ci		__entry->dev	= sb->s_dev;
99762306a36Sopenharmony_ci		__entry->wait	= wait;
99862306a36Sopenharmony_ci	),
99962306a36Sopenharmony_ci
100062306a36Sopenharmony_ci	TP_printk("dev %d,%d wait %d",
100162306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
100262306a36Sopenharmony_ci		  __entry->wait)
100362306a36Sopenharmony_ci);
100462306a36Sopenharmony_ci
100562306a36Sopenharmony_ciTRACE_EVENT(ext4_alloc_da_blocks,
100662306a36Sopenharmony_ci	TP_PROTO(struct inode *inode),
100762306a36Sopenharmony_ci
100862306a36Sopenharmony_ci	TP_ARGS(inode),
100962306a36Sopenharmony_ci
101062306a36Sopenharmony_ci	TP_STRUCT__entry(
101162306a36Sopenharmony_ci		__field(	dev_t,	dev			)
101262306a36Sopenharmony_ci		__field(	ino_t,	ino			)
101362306a36Sopenharmony_ci		__field( unsigned int,	data_blocks		)
101462306a36Sopenharmony_ci	),
101562306a36Sopenharmony_ci
101662306a36Sopenharmony_ci	TP_fast_assign(
101762306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
101862306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
101962306a36Sopenharmony_ci		__entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
102062306a36Sopenharmony_ci	),
102162306a36Sopenharmony_ci
102262306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu reserved_data_blocks %u",
102362306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
102462306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
102562306a36Sopenharmony_ci		  __entry->data_blocks)
102662306a36Sopenharmony_ci);
102762306a36Sopenharmony_ci
102862306a36Sopenharmony_ciTRACE_EVENT(ext4_mballoc_alloc,
102962306a36Sopenharmony_ci	TP_PROTO(struct ext4_allocation_context *ac),
103062306a36Sopenharmony_ci
103162306a36Sopenharmony_ci	TP_ARGS(ac),
103262306a36Sopenharmony_ci
103362306a36Sopenharmony_ci	TP_STRUCT__entry(
103462306a36Sopenharmony_ci		__field(	dev_t,	dev			)
103562306a36Sopenharmony_ci		__field(	ino_t,	ino			)
103662306a36Sopenharmony_ci		__field(	__u32, 	orig_logical		)
103762306a36Sopenharmony_ci		__field(	  int,	orig_start		)
103862306a36Sopenharmony_ci		__field(	__u32, 	orig_group		)
103962306a36Sopenharmony_ci		__field(	  int,	orig_len		)
104062306a36Sopenharmony_ci		__field(	__u32, 	goal_logical		)
104162306a36Sopenharmony_ci		__field(	  int,	goal_start		)
104262306a36Sopenharmony_ci		__field(	__u32, 	goal_group		)
104362306a36Sopenharmony_ci		__field(	  int,	goal_len		)
104462306a36Sopenharmony_ci		__field(	__u32, 	result_logical		)
104562306a36Sopenharmony_ci		__field(	  int,	result_start		)
104662306a36Sopenharmony_ci		__field(	__u32, 	result_group		)
104762306a36Sopenharmony_ci		__field(	  int,	result_len		)
104862306a36Sopenharmony_ci		__field(	__u16,	found			)
104962306a36Sopenharmony_ci		__field(	__u16,	groups			)
105062306a36Sopenharmony_ci		__field(	__u16,	buddy			)
105162306a36Sopenharmony_ci		__field(	__u16,	flags			)
105262306a36Sopenharmony_ci		__field(	__u16,	tail			)
105362306a36Sopenharmony_ci		__field(	__u8,	cr			)
105462306a36Sopenharmony_ci	),
105562306a36Sopenharmony_ci
105662306a36Sopenharmony_ci	TP_fast_assign(
105762306a36Sopenharmony_ci		__entry->dev		= ac->ac_inode->i_sb->s_dev;
105862306a36Sopenharmony_ci		__entry->ino		= ac->ac_inode->i_ino;
105962306a36Sopenharmony_ci		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
106062306a36Sopenharmony_ci		__entry->orig_start	= ac->ac_o_ex.fe_start;
106162306a36Sopenharmony_ci		__entry->orig_group	= ac->ac_o_ex.fe_group;
106262306a36Sopenharmony_ci		__entry->orig_len	= ac->ac_o_ex.fe_len;
106362306a36Sopenharmony_ci		__entry->goal_logical	= ac->ac_g_ex.fe_logical;
106462306a36Sopenharmony_ci		__entry->goal_start	= ac->ac_g_ex.fe_start;
106562306a36Sopenharmony_ci		__entry->goal_group	= ac->ac_g_ex.fe_group;
106662306a36Sopenharmony_ci		__entry->goal_len	= ac->ac_g_ex.fe_len;
106762306a36Sopenharmony_ci		__entry->result_logical	= ac->ac_f_ex.fe_logical;
106862306a36Sopenharmony_ci		__entry->result_start	= ac->ac_f_ex.fe_start;
106962306a36Sopenharmony_ci		__entry->result_group	= ac->ac_f_ex.fe_group;
107062306a36Sopenharmony_ci		__entry->result_len	= ac->ac_f_ex.fe_len;
107162306a36Sopenharmony_ci		__entry->found		= ac->ac_found;
107262306a36Sopenharmony_ci		__entry->flags		= ac->ac_flags;
107362306a36Sopenharmony_ci		__entry->groups		= ac->ac_groups_scanned;
107462306a36Sopenharmony_ci		__entry->buddy		= ac->ac_buddy;
107562306a36Sopenharmony_ci		__entry->tail		= ac->ac_tail;
107662306a36Sopenharmony_ci		__entry->cr		= ac->ac_criteria;
107762306a36Sopenharmony_ci	),
107862306a36Sopenharmony_ci
107962306a36Sopenharmony_ci	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u "
108062306a36Sopenharmony_ci		  "result %u/%d/%u@%u blks %u grps %u cr %s flags %s "
108162306a36Sopenharmony_ci		  "tail %u broken %u",
108262306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
108362306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
108462306a36Sopenharmony_ci		  __entry->orig_group, __entry->orig_start,
108562306a36Sopenharmony_ci		  __entry->orig_len, __entry->orig_logical,
108662306a36Sopenharmony_ci		  __entry->goal_group, __entry->goal_start,
108762306a36Sopenharmony_ci		  __entry->goal_len, __entry->goal_logical,
108862306a36Sopenharmony_ci		  __entry->result_group, __entry->result_start,
108962306a36Sopenharmony_ci		  __entry->result_len, __entry->result_logical,
109062306a36Sopenharmony_ci		  __entry->found, __entry->groups, show_criteria(__entry->cr),
109162306a36Sopenharmony_ci		  show_mballoc_flags(__entry->flags), __entry->tail,
109262306a36Sopenharmony_ci		  __entry->buddy ? 1 << __entry->buddy : 0)
109362306a36Sopenharmony_ci);
109462306a36Sopenharmony_ci
109562306a36Sopenharmony_ciTRACE_EVENT(ext4_mballoc_prealloc,
109662306a36Sopenharmony_ci	TP_PROTO(struct ext4_allocation_context *ac),
109762306a36Sopenharmony_ci
109862306a36Sopenharmony_ci	TP_ARGS(ac),
109962306a36Sopenharmony_ci
110062306a36Sopenharmony_ci	TP_STRUCT__entry(
110162306a36Sopenharmony_ci		__field(	dev_t,	dev			)
110262306a36Sopenharmony_ci		__field(	ino_t,	ino			)
110362306a36Sopenharmony_ci		__field(	__u32, 	orig_logical		)
110462306a36Sopenharmony_ci		__field(	  int,	orig_start		)
110562306a36Sopenharmony_ci		__field(	__u32, 	orig_group		)
110662306a36Sopenharmony_ci		__field(	  int,	orig_len		)
110762306a36Sopenharmony_ci		__field(	__u32, 	result_logical		)
110862306a36Sopenharmony_ci		__field(	  int,	result_start		)
110962306a36Sopenharmony_ci		__field(	__u32, 	result_group		)
111062306a36Sopenharmony_ci		__field(	  int,	result_len		)
111162306a36Sopenharmony_ci	),
111262306a36Sopenharmony_ci
111362306a36Sopenharmony_ci	TP_fast_assign(
111462306a36Sopenharmony_ci		__entry->dev		= ac->ac_inode->i_sb->s_dev;
111562306a36Sopenharmony_ci		__entry->ino		= ac->ac_inode->i_ino;
111662306a36Sopenharmony_ci		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
111762306a36Sopenharmony_ci		__entry->orig_start	= ac->ac_o_ex.fe_start;
111862306a36Sopenharmony_ci		__entry->orig_group	= ac->ac_o_ex.fe_group;
111962306a36Sopenharmony_ci		__entry->orig_len	= ac->ac_o_ex.fe_len;
112062306a36Sopenharmony_ci		__entry->result_logical	= ac->ac_b_ex.fe_logical;
112162306a36Sopenharmony_ci		__entry->result_start	= ac->ac_b_ex.fe_start;
112262306a36Sopenharmony_ci		__entry->result_group	= ac->ac_b_ex.fe_group;
112362306a36Sopenharmony_ci		__entry->result_len	= ac->ac_b_ex.fe_len;
112462306a36Sopenharmony_ci	),
112562306a36Sopenharmony_ci
112662306a36Sopenharmony_ci	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u",
112762306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
112862306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
112962306a36Sopenharmony_ci		  __entry->orig_group, __entry->orig_start,
113062306a36Sopenharmony_ci		  __entry->orig_len, __entry->orig_logical,
113162306a36Sopenharmony_ci		  __entry->result_group, __entry->result_start,
113262306a36Sopenharmony_ci		  __entry->result_len, __entry->result_logical)
113362306a36Sopenharmony_ci);
113462306a36Sopenharmony_ci
113562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4__mballoc,
113662306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb,
113762306a36Sopenharmony_ci		 struct inode *inode,
113862306a36Sopenharmony_ci		 ext4_group_t group,
113962306a36Sopenharmony_ci		 ext4_grpblk_t start,
114062306a36Sopenharmony_ci		 ext4_grpblk_t len),
114162306a36Sopenharmony_ci
114262306a36Sopenharmony_ci	TP_ARGS(sb, inode, group, start, len),
114362306a36Sopenharmony_ci
114462306a36Sopenharmony_ci	TP_STRUCT__entry(
114562306a36Sopenharmony_ci		__field(	dev_t,	dev			)
114662306a36Sopenharmony_ci		__field(	ino_t,	ino			)
114762306a36Sopenharmony_ci		__field(	  int,	result_start		)
114862306a36Sopenharmony_ci		__field(	__u32, 	result_group		)
114962306a36Sopenharmony_ci		__field(	  int,	result_len		)
115062306a36Sopenharmony_ci	),
115162306a36Sopenharmony_ci
115262306a36Sopenharmony_ci	TP_fast_assign(
115362306a36Sopenharmony_ci		__entry->dev		= sb->s_dev;
115462306a36Sopenharmony_ci		__entry->ino		= inode ? inode->i_ino : 0;
115562306a36Sopenharmony_ci		__entry->result_start	= start;
115662306a36Sopenharmony_ci		__entry->result_group	= group;
115762306a36Sopenharmony_ci		__entry->result_len	= len;
115862306a36Sopenharmony_ci	),
115962306a36Sopenharmony_ci
116062306a36Sopenharmony_ci	TP_printk("dev %d,%d inode %lu extent %u/%d/%d ",
116162306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
116262306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
116362306a36Sopenharmony_ci		  __entry->result_group, __entry->result_start,
116462306a36Sopenharmony_ci		  __entry->result_len)
116562306a36Sopenharmony_ci);
116662306a36Sopenharmony_ci
116762306a36Sopenharmony_ciDEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard,
116862306a36Sopenharmony_ci
116962306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb,
117062306a36Sopenharmony_ci		 struct inode *inode,
117162306a36Sopenharmony_ci		 ext4_group_t group,
117262306a36Sopenharmony_ci		 ext4_grpblk_t start,
117362306a36Sopenharmony_ci		 ext4_grpblk_t len),
117462306a36Sopenharmony_ci
117562306a36Sopenharmony_ci	TP_ARGS(sb, inode, group, start, len)
117662306a36Sopenharmony_ci);
117762306a36Sopenharmony_ci
117862306a36Sopenharmony_ciDEFINE_EVENT(ext4__mballoc, ext4_mballoc_free,
117962306a36Sopenharmony_ci
118062306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb,
118162306a36Sopenharmony_ci		 struct inode *inode,
118262306a36Sopenharmony_ci		 ext4_group_t group,
118362306a36Sopenharmony_ci		 ext4_grpblk_t start,
118462306a36Sopenharmony_ci		 ext4_grpblk_t len),
118562306a36Sopenharmony_ci
118662306a36Sopenharmony_ci	TP_ARGS(sb, inode, group, start, len)
118762306a36Sopenharmony_ci);
118862306a36Sopenharmony_ci
118962306a36Sopenharmony_ciTRACE_EVENT(ext4_forget,
119062306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, int is_metadata, __u64 block),
119162306a36Sopenharmony_ci
119262306a36Sopenharmony_ci	TP_ARGS(inode, is_metadata, block),
119362306a36Sopenharmony_ci
119462306a36Sopenharmony_ci	TP_STRUCT__entry(
119562306a36Sopenharmony_ci		__field(	dev_t,	dev			)
119662306a36Sopenharmony_ci		__field(	ino_t,	ino			)
119762306a36Sopenharmony_ci		__field(	__u64,	block			)
119862306a36Sopenharmony_ci		__field(	int,	is_metadata		)
119962306a36Sopenharmony_ci		__field(	__u16,	mode			)
120062306a36Sopenharmony_ci	),
120162306a36Sopenharmony_ci
120262306a36Sopenharmony_ci	TP_fast_assign(
120362306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
120462306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
120562306a36Sopenharmony_ci		__entry->block	= block;
120662306a36Sopenharmony_ci		__entry->is_metadata = is_metadata;
120762306a36Sopenharmony_ci		__entry->mode	= inode->i_mode;
120862306a36Sopenharmony_ci	),
120962306a36Sopenharmony_ci
121062306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %llu",
121162306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
121262306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
121362306a36Sopenharmony_ci		  __entry->mode, __entry->is_metadata, __entry->block)
121462306a36Sopenharmony_ci);
121562306a36Sopenharmony_ci
121662306a36Sopenharmony_ciTRACE_EVENT(ext4_da_update_reserve_space,
121762306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, int used_blocks, int quota_claim),
121862306a36Sopenharmony_ci
121962306a36Sopenharmony_ci	TP_ARGS(inode, used_blocks, quota_claim),
122062306a36Sopenharmony_ci
122162306a36Sopenharmony_ci	TP_STRUCT__entry(
122262306a36Sopenharmony_ci		__field(	dev_t,	dev			)
122362306a36Sopenharmony_ci		__field(	ino_t,	ino			)
122462306a36Sopenharmony_ci		__field(	__u64,	i_blocks		)
122562306a36Sopenharmony_ci		__field(	int,	used_blocks		)
122662306a36Sopenharmony_ci		__field(	int,	reserved_data_blocks	)
122762306a36Sopenharmony_ci		__field(	int,	quota_claim		)
122862306a36Sopenharmony_ci		__field(	__u16,	mode			)
122962306a36Sopenharmony_ci	),
123062306a36Sopenharmony_ci
123162306a36Sopenharmony_ci	TP_fast_assign(
123262306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
123362306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
123462306a36Sopenharmony_ci		__entry->i_blocks = inode->i_blocks;
123562306a36Sopenharmony_ci		__entry->used_blocks = used_blocks;
123662306a36Sopenharmony_ci		__entry->reserved_data_blocks =
123762306a36Sopenharmony_ci				EXT4_I(inode)->i_reserved_data_blocks;
123862306a36Sopenharmony_ci		__entry->quota_claim = quota_claim;
123962306a36Sopenharmony_ci		__entry->mode	= inode->i_mode;
124062306a36Sopenharmony_ci	),
124162306a36Sopenharmony_ci
124262306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d "
124362306a36Sopenharmony_ci		  "reserved_data_blocks %d quota_claim %d",
124462306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
124562306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
124662306a36Sopenharmony_ci		  __entry->mode, __entry->i_blocks,
124762306a36Sopenharmony_ci		  __entry->used_blocks, __entry->reserved_data_blocks,
124862306a36Sopenharmony_ci		  __entry->quota_claim)
124962306a36Sopenharmony_ci);
125062306a36Sopenharmony_ci
125162306a36Sopenharmony_ciTRACE_EVENT(ext4_da_reserve_space,
125262306a36Sopenharmony_ci	TP_PROTO(struct inode *inode),
125362306a36Sopenharmony_ci
125462306a36Sopenharmony_ci	TP_ARGS(inode),
125562306a36Sopenharmony_ci
125662306a36Sopenharmony_ci	TP_STRUCT__entry(
125762306a36Sopenharmony_ci		__field(	dev_t,	dev			)
125862306a36Sopenharmony_ci		__field(	ino_t,	ino			)
125962306a36Sopenharmony_ci		__field(	__u64,	i_blocks		)
126062306a36Sopenharmony_ci		__field(	int,	reserved_data_blocks	)
126162306a36Sopenharmony_ci		__field(	__u16,  mode			)
126262306a36Sopenharmony_ci	),
126362306a36Sopenharmony_ci
126462306a36Sopenharmony_ci	TP_fast_assign(
126562306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
126662306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
126762306a36Sopenharmony_ci		__entry->i_blocks = inode->i_blocks;
126862306a36Sopenharmony_ci		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
126962306a36Sopenharmony_ci		__entry->mode	= inode->i_mode;
127062306a36Sopenharmony_ci	),
127162306a36Sopenharmony_ci
127262306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu "
127362306a36Sopenharmony_ci		  "reserved_data_blocks %d",
127462306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
127562306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
127662306a36Sopenharmony_ci		  __entry->mode, __entry->i_blocks,
127762306a36Sopenharmony_ci		  __entry->reserved_data_blocks)
127862306a36Sopenharmony_ci);
127962306a36Sopenharmony_ci
128062306a36Sopenharmony_ciTRACE_EVENT(ext4_da_release_space,
128162306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, int freed_blocks),
128262306a36Sopenharmony_ci
128362306a36Sopenharmony_ci	TP_ARGS(inode, freed_blocks),
128462306a36Sopenharmony_ci
128562306a36Sopenharmony_ci	TP_STRUCT__entry(
128662306a36Sopenharmony_ci		__field(	dev_t,	dev			)
128762306a36Sopenharmony_ci		__field(	ino_t,	ino			)
128862306a36Sopenharmony_ci		__field(	__u64,	i_blocks		)
128962306a36Sopenharmony_ci		__field(	int,	freed_blocks		)
129062306a36Sopenharmony_ci		__field(	int,	reserved_data_blocks	)
129162306a36Sopenharmony_ci		__field(	__u16,  mode			)
129262306a36Sopenharmony_ci	),
129362306a36Sopenharmony_ci
129462306a36Sopenharmony_ci	TP_fast_assign(
129562306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
129662306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
129762306a36Sopenharmony_ci		__entry->i_blocks = inode->i_blocks;
129862306a36Sopenharmony_ci		__entry->freed_blocks = freed_blocks;
129962306a36Sopenharmony_ci		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
130062306a36Sopenharmony_ci		__entry->mode	= inode->i_mode;
130162306a36Sopenharmony_ci	),
130262306a36Sopenharmony_ci
130362306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d "
130462306a36Sopenharmony_ci		  "reserved_data_blocks %d",
130562306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
130662306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
130762306a36Sopenharmony_ci		  __entry->mode, __entry->i_blocks,
130862306a36Sopenharmony_ci		  __entry->freed_blocks, __entry->reserved_data_blocks)
130962306a36Sopenharmony_ci);
131062306a36Sopenharmony_ci
131162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4__bitmap_load,
131262306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, unsigned long group),
131362306a36Sopenharmony_ci
131462306a36Sopenharmony_ci	TP_ARGS(sb, group),
131562306a36Sopenharmony_ci
131662306a36Sopenharmony_ci	TP_STRUCT__entry(
131762306a36Sopenharmony_ci		__field(	dev_t,	dev			)
131862306a36Sopenharmony_ci		__field(	__u32,	group			)
131962306a36Sopenharmony_ci
132062306a36Sopenharmony_ci	),
132162306a36Sopenharmony_ci
132262306a36Sopenharmony_ci	TP_fast_assign(
132362306a36Sopenharmony_ci		__entry->dev	= sb->s_dev;
132462306a36Sopenharmony_ci		__entry->group	= group;
132562306a36Sopenharmony_ci	),
132662306a36Sopenharmony_ci
132762306a36Sopenharmony_ci	TP_printk("dev %d,%d group %u",
132862306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
132962306a36Sopenharmony_ci		  __entry->group)
133062306a36Sopenharmony_ci);
133162306a36Sopenharmony_ci
133262306a36Sopenharmony_ciDEFINE_EVENT(ext4__bitmap_load, ext4_mb_bitmap_load,
133362306a36Sopenharmony_ci
133462306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, unsigned long group),
133562306a36Sopenharmony_ci
133662306a36Sopenharmony_ci	TP_ARGS(sb, group)
133762306a36Sopenharmony_ci);
133862306a36Sopenharmony_ci
133962306a36Sopenharmony_ciDEFINE_EVENT(ext4__bitmap_load, ext4_mb_buddy_bitmap_load,
134062306a36Sopenharmony_ci
134162306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, unsigned long group),
134262306a36Sopenharmony_ci
134362306a36Sopenharmony_ci	TP_ARGS(sb, group)
134462306a36Sopenharmony_ci);
134562306a36Sopenharmony_ci
134662306a36Sopenharmony_ciDEFINE_EVENT(ext4__bitmap_load, ext4_load_inode_bitmap,
134762306a36Sopenharmony_ci
134862306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, unsigned long group),
134962306a36Sopenharmony_ci
135062306a36Sopenharmony_ci	TP_ARGS(sb, group)
135162306a36Sopenharmony_ci);
135262306a36Sopenharmony_ci
135362306a36Sopenharmony_ciTRACE_EVENT(ext4_read_block_bitmap_load,
135462306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, unsigned long group, bool prefetch),
135562306a36Sopenharmony_ci
135662306a36Sopenharmony_ci	TP_ARGS(sb, group, prefetch),
135762306a36Sopenharmony_ci
135862306a36Sopenharmony_ci	TP_STRUCT__entry(
135962306a36Sopenharmony_ci		__field(	dev_t,	dev			)
136062306a36Sopenharmony_ci		__field(	__u32,	group			)
136162306a36Sopenharmony_ci		__field(	bool,	prefetch		)
136262306a36Sopenharmony_ci
136362306a36Sopenharmony_ci	),
136462306a36Sopenharmony_ci
136562306a36Sopenharmony_ci	TP_fast_assign(
136662306a36Sopenharmony_ci		__entry->dev	= sb->s_dev;
136762306a36Sopenharmony_ci		__entry->group	= group;
136862306a36Sopenharmony_ci		__entry->prefetch = prefetch;
136962306a36Sopenharmony_ci	),
137062306a36Sopenharmony_ci
137162306a36Sopenharmony_ci	TP_printk("dev %d,%d group %u prefetch %d",
137262306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
137362306a36Sopenharmony_ci		  __entry->group, __entry->prefetch)
137462306a36Sopenharmony_ci);
137562306a36Sopenharmony_ci
137662306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4__fallocate_mode,
137762306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
137862306a36Sopenharmony_ci
137962306a36Sopenharmony_ci	TP_ARGS(inode, offset, len, mode),
138062306a36Sopenharmony_ci
138162306a36Sopenharmony_ci	TP_STRUCT__entry(
138262306a36Sopenharmony_ci		__field(	dev_t,	dev			)
138362306a36Sopenharmony_ci		__field(	ino_t,	ino			)
138462306a36Sopenharmony_ci		__field(	loff_t,	offset			)
138562306a36Sopenharmony_ci		__field(	loff_t, len			)
138662306a36Sopenharmony_ci		__field(	int,	mode			)
138762306a36Sopenharmony_ci	),
138862306a36Sopenharmony_ci
138962306a36Sopenharmony_ci	TP_fast_assign(
139062306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
139162306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
139262306a36Sopenharmony_ci		__entry->offset	= offset;
139362306a36Sopenharmony_ci		__entry->len	= len;
139462306a36Sopenharmony_ci		__entry->mode	= mode;
139562306a36Sopenharmony_ci	),
139662306a36Sopenharmony_ci
139762306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu offset %lld len %lld mode %s",
139862306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
139962306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
140062306a36Sopenharmony_ci		  __entry->offset, __entry->len,
140162306a36Sopenharmony_ci		  show_falloc_mode(__entry->mode))
140262306a36Sopenharmony_ci);
140362306a36Sopenharmony_ci
140462306a36Sopenharmony_ciDEFINE_EVENT(ext4__fallocate_mode, ext4_fallocate_enter,
140562306a36Sopenharmony_ci
140662306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
140762306a36Sopenharmony_ci
140862306a36Sopenharmony_ci	TP_ARGS(inode, offset, len, mode)
140962306a36Sopenharmony_ci);
141062306a36Sopenharmony_ci
141162306a36Sopenharmony_ciDEFINE_EVENT(ext4__fallocate_mode, ext4_punch_hole,
141262306a36Sopenharmony_ci
141362306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
141462306a36Sopenharmony_ci
141562306a36Sopenharmony_ci	TP_ARGS(inode, offset, len, mode)
141662306a36Sopenharmony_ci);
141762306a36Sopenharmony_ci
141862306a36Sopenharmony_ciDEFINE_EVENT(ext4__fallocate_mode, ext4_zero_range,
141962306a36Sopenharmony_ci
142062306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
142162306a36Sopenharmony_ci
142262306a36Sopenharmony_ci	TP_ARGS(inode, offset, len, mode)
142362306a36Sopenharmony_ci);
142462306a36Sopenharmony_ci
142562306a36Sopenharmony_ciTRACE_EVENT(ext4_fallocate_exit,
142662306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t offset,
142762306a36Sopenharmony_ci		 unsigned int max_blocks, int ret),
142862306a36Sopenharmony_ci
142962306a36Sopenharmony_ci	TP_ARGS(inode, offset, max_blocks, ret),
143062306a36Sopenharmony_ci
143162306a36Sopenharmony_ci	TP_STRUCT__entry(
143262306a36Sopenharmony_ci		__field(	dev_t,	dev			)
143362306a36Sopenharmony_ci		__field(	ino_t,	ino			)
143462306a36Sopenharmony_ci		__field(	loff_t,	pos			)
143562306a36Sopenharmony_ci		__field(	unsigned int,	blocks		)
143662306a36Sopenharmony_ci		__field(	int, 	ret			)
143762306a36Sopenharmony_ci	),
143862306a36Sopenharmony_ci
143962306a36Sopenharmony_ci	TP_fast_assign(
144062306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
144162306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
144262306a36Sopenharmony_ci		__entry->pos	= offset;
144362306a36Sopenharmony_ci		__entry->blocks	= max_blocks;
144462306a36Sopenharmony_ci		__entry->ret	= ret;
144562306a36Sopenharmony_ci	),
144662306a36Sopenharmony_ci
144762306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu pos %lld blocks %u ret %d",
144862306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
144962306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
145062306a36Sopenharmony_ci		  __entry->pos, __entry->blocks,
145162306a36Sopenharmony_ci		  __entry->ret)
145262306a36Sopenharmony_ci);
145362306a36Sopenharmony_ci
145462306a36Sopenharmony_ciTRACE_EVENT(ext4_unlink_enter,
145562306a36Sopenharmony_ci	TP_PROTO(struct inode *parent, struct dentry *dentry),
145662306a36Sopenharmony_ci
145762306a36Sopenharmony_ci	TP_ARGS(parent, dentry),
145862306a36Sopenharmony_ci
145962306a36Sopenharmony_ci	TP_STRUCT__entry(
146062306a36Sopenharmony_ci		__field(	dev_t,	dev			)
146162306a36Sopenharmony_ci		__field(	ino_t,	ino			)
146262306a36Sopenharmony_ci		__field(	ino_t,	parent			)
146362306a36Sopenharmony_ci		__field(	loff_t,	size			)
146462306a36Sopenharmony_ci	),
146562306a36Sopenharmony_ci
146662306a36Sopenharmony_ci	TP_fast_assign(
146762306a36Sopenharmony_ci		__entry->dev		= dentry->d_sb->s_dev;
146862306a36Sopenharmony_ci		__entry->ino		= d_inode(dentry)->i_ino;
146962306a36Sopenharmony_ci		__entry->parent		= parent->i_ino;
147062306a36Sopenharmony_ci		__entry->size		= d_inode(dentry)->i_size;
147162306a36Sopenharmony_ci	),
147262306a36Sopenharmony_ci
147362306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu size %lld parent %lu",
147462306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
147562306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->size,
147662306a36Sopenharmony_ci		  (unsigned long) __entry->parent)
147762306a36Sopenharmony_ci);
147862306a36Sopenharmony_ci
147962306a36Sopenharmony_ciTRACE_EVENT(ext4_unlink_exit,
148062306a36Sopenharmony_ci	TP_PROTO(struct dentry *dentry, int ret),
148162306a36Sopenharmony_ci
148262306a36Sopenharmony_ci	TP_ARGS(dentry, ret),
148362306a36Sopenharmony_ci
148462306a36Sopenharmony_ci	TP_STRUCT__entry(
148562306a36Sopenharmony_ci		__field(	dev_t,	dev			)
148662306a36Sopenharmony_ci		__field(	ino_t,	ino			)
148762306a36Sopenharmony_ci		__field(	int,	ret			)
148862306a36Sopenharmony_ci	),
148962306a36Sopenharmony_ci
149062306a36Sopenharmony_ci	TP_fast_assign(
149162306a36Sopenharmony_ci		__entry->dev		= dentry->d_sb->s_dev;
149262306a36Sopenharmony_ci		__entry->ino		= d_inode(dentry)->i_ino;
149362306a36Sopenharmony_ci		__entry->ret		= ret;
149462306a36Sopenharmony_ci	),
149562306a36Sopenharmony_ci
149662306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu ret %d",
149762306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
149862306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
149962306a36Sopenharmony_ci		  __entry->ret)
150062306a36Sopenharmony_ci);
150162306a36Sopenharmony_ci
150262306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4__truncate,
150362306a36Sopenharmony_ci	TP_PROTO(struct inode *inode),
150462306a36Sopenharmony_ci
150562306a36Sopenharmony_ci	TP_ARGS(inode),
150662306a36Sopenharmony_ci
150762306a36Sopenharmony_ci	TP_STRUCT__entry(
150862306a36Sopenharmony_ci		__field(	dev_t,		dev		)
150962306a36Sopenharmony_ci		__field(	ino_t,		ino		)
151062306a36Sopenharmony_ci		__field(	__u64,		blocks		)
151162306a36Sopenharmony_ci	),
151262306a36Sopenharmony_ci
151362306a36Sopenharmony_ci	TP_fast_assign(
151462306a36Sopenharmony_ci		__entry->dev    = inode->i_sb->s_dev;
151562306a36Sopenharmony_ci		__entry->ino    = inode->i_ino;
151662306a36Sopenharmony_ci		__entry->blocks	= inode->i_blocks;
151762306a36Sopenharmony_ci	),
151862306a36Sopenharmony_ci
151962306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu blocks %llu",
152062306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
152162306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->blocks)
152262306a36Sopenharmony_ci);
152362306a36Sopenharmony_ci
152462306a36Sopenharmony_ciDEFINE_EVENT(ext4__truncate, ext4_truncate_enter,
152562306a36Sopenharmony_ci
152662306a36Sopenharmony_ci	TP_PROTO(struct inode *inode),
152762306a36Sopenharmony_ci
152862306a36Sopenharmony_ci	TP_ARGS(inode)
152962306a36Sopenharmony_ci);
153062306a36Sopenharmony_ci
153162306a36Sopenharmony_ciDEFINE_EVENT(ext4__truncate, ext4_truncate_exit,
153262306a36Sopenharmony_ci
153362306a36Sopenharmony_ci	TP_PROTO(struct inode *inode),
153462306a36Sopenharmony_ci
153562306a36Sopenharmony_ci	TP_ARGS(inode)
153662306a36Sopenharmony_ci);
153762306a36Sopenharmony_ci
153862306a36Sopenharmony_ci/* 'ux' is the unwritten extent. */
153962306a36Sopenharmony_ciTRACE_EVENT(ext4_ext_convert_to_initialized_enter,
154062306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
154162306a36Sopenharmony_ci		 struct ext4_extent *ux),
154262306a36Sopenharmony_ci
154362306a36Sopenharmony_ci	TP_ARGS(inode, map, ux),
154462306a36Sopenharmony_ci
154562306a36Sopenharmony_ci	TP_STRUCT__entry(
154662306a36Sopenharmony_ci		__field(	dev_t,		dev	)
154762306a36Sopenharmony_ci		__field(	ino_t,		ino	)
154862306a36Sopenharmony_ci		__field(	ext4_lblk_t,	m_lblk	)
154962306a36Sopenharmony_ci		__field(	unsigned,	m_len	)
155062306a36Sopenharmony_ci		__field(	ext4_lblk_t,	u_lblk	)
155162306a36Sopenharmony_ci		__field(	unsigned,	u_len	)
155262306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	u_pblk	)
155362306a36Sopenharmony_ci	),
155462306a36Sopenharmony_ci
155562306a36Sopenharmony_ci	TP_fast_assign(
155662306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
155762306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
155862306a36Sopenharmony_ci		__entry->m_lblk		= map->m_lblk;
155962306a36Sopenharmony_ci		__entry->m_len		= map->m_len;
156062306a36Sopenharmony_ci		__entry->u_lblk		= le32_to_cpu(ux->ee_block);
156162306a36Sopenharmony_ci		__entry->u_len		= ext4_ext_get_actual_len(ux);
156262306a36Sopenharmony_ci		__entry->u_pblk		= ext4_ext_pblock(ux);
156362306a36Sopenharmony_ci	),
156462306a36Sopenharmony_ci
156562306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u u_lblk %u u_len %u "
156662306a36Sopenharmony_ci		  "u_pblk %llu",
156762306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
156862306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
156962306a36Sopenharmony_ci		  __entry->m_lblk, __entry->m_len,
157062306a36Sopenharmony_ci		  __entry->u_lblk, __entry->u_len, __entry->u_pblk)
157162306a36Sopenharmony_ci);
157262306a36Sopenharmony_ci
157362306a36Sopenharmony_ci/*
157462306a36Sopenharmony_ci * 'ux' is the unwritten extent.
157562306a36Sopenharmony_ci * 'ix' is the initialized extent to which blocks are transferred.
157662306a36Sopenharmony_ci */
157762306a36Sopenharmony_ciTRACE_EVENT(ext4_ext_convert_to_initialized_fastpath,
157862306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
157962306a36Sopenharmony_ci		 struct ext4_extent *ux, struct ext4_extent *ix),
158062306a36Sopenharmony_ci
158162306a36Sopenharmony_ci	TP_ARGS(inode, map, ux, ix),
158262306a36Sopenharmony_ci
158362306a36Sopenharmony_ci	TP_STRUCT__entry(
158462306a36Sopenharmony_ci		__field(	dev_t,		dev	)
158562306a36Sopenharmony_ci		__field(	ino_t,		ino	)
158662306a36Sopenharmony_ci		__field(	ext4_lblk_t,	m_lblk	)
158762306a36Sopenharmony_ci		__field(	unsigned,	m_len	)
158862306a36Sopenharmony_ci		__field(	ext4_lblk_t,	u_lblk	)
158962306a36Sopenharmony_ci		__field(	unsigned,	u_len	)
159062306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	u_pblk	)
159162306a36Sopenharmony_ci		__field(	ext4_lblk_t,	i_lblk	)
159262306a36Sopenharmony_ci		__field(	unsigned,	i_len	)
159362306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	i_pblk	)
159462306a36Sopenharmony_ci	),
159562306a36Sopenharmony_ci
159662306a36Sopenharmony_ci	TP_fast_assign(
159762306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
159862306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
159962306a36Sopenharmony_ci		__entry->m_lblk		= map->m_lblk;
160062306a36Sopenharmony_ci		__entry->m_len		= map->m_len;
160162306a36Sopenharmony_ci		__entry->u_lblk		= le32_to_cpu(ux->ee_block);
160262306a36Sopenharmony_ci		__entry->u_len		= ext4_ext_get_actual_len(ux);
160362306a36Sopenharmony_ci		__entry->u_pblk		= ext4_ext_pblock(ux);
160462306a36Sopenharmony_ci		__entry->i_lblk		= le32_to_cpu(ix->ee_block);
160562306a36Sopenharmony_ci		__entry->i_len		= ext4_ext_get_actual_len(ix);
160662306a36Sopenharmony_ci		__entry->i_pblk		= ext4_ext_pblock(ix);
160762306a36Sopenharmony_ci	),
160862306a36Sopenharmony_ci
160962306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u "
161062306a36Sopenharmony_ci		  "u_lblk %u u_len %u u_pblk %llu "
161162306a36Sopenharmony_ci		  "i_lblk %u i_len %u i_pblk %llu ",
161262306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
161362306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
161462306a36Sopenharmony_ci		  __entry->m_lblk, __entry->m_len,
161562306a36Sopenharmony_ci		  __entry->u_lblk, __entry->u_len, __entry->u_pblk,
161662306a36Sopenharmony_ci		  __entry->i_lblk, __entry->i_len, __entry->i_pblk)
161762306a36Sopenharmony_ci);
161862306a36Sopenharmony_ci
161962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4__map_blocks_enter,
162062306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
162162306a36Sopenharmony_ci		 unsigned int len, unsigned int flags),
162262306a36Sopenharmony_ci
162362306a36Sopenharmony_ci	TP_ARGS(inode, lblk, len, flags),
162462306a36Sopenharmony_ci
162562306a36Sopenharmony_ci	TP_STRUCT__entry(
162662306a36Sopenharmony_ci		__field(	dev_t,		dev		)
162762306a36Sopenharmony_ci		__field(	ino_t,		ino		)
162862306a36Sopenharmony_ci		__field(	ext4_lblk_t,	lblk		)
162962306a36Sopenharmony_ci		__field(	unsigned int,	len		)
163062306a36Sopenharmony_ci		__field(	unsigned int,	flags		)
163162306a36Sopenharmony_ci	),
163262306a36Sopenharmony_ci
163362306a36Sopenharmony_ci	TP_fast_assign(
163462306a36Sopenharmony_ci		__entry->dev    = inode->i_sb->s_dev;
163562306a36Sopenharmony_ci		__entry->ino    = inode->i_ino;
163662306a36Sopenharmony_ci		__entry->lblk	= lblk;
163762306a36Sopenharmony_ci		__entry->len	= len;
163862306a36Sopenharmony_ci		__entry->flags	= flags;
163962306a36Sopenharmony_ci	),
164062306a36Sopenharmony_ci
164162306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu lblk %u len %u flags %s",
164262306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
164362306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
164462306a36Sopenharmony_ci		  __entry->lblk, __entry->len, show_map_flags(__entry->flags))
164562306a36Sopenharmony_ci);
164662306a36Sopenharmony_ci
164762306a36Sopenharmony_ciDEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter,
164862306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
164962306a36Sopenharmony_ci		 unsigned len, unsigned flags),
165062306a36Sopenharmony_ci
165162306a36Sopenharmony_ci	TP_ARGS(inode, lblk, len, flags)
165262306a36Sopenharmony_ci);
165362306a36Sopenharmony_ci
165462306a36Sopenharmony_ciDEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter,
165562306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
165662306a36Sopenharmony_ci		 unsigned len, unsigned flags),
165762306a36Sopenharmony_ci
165862306a36Sopenharmony_ci	TP_ARGS(inode, lblk, len, flags)
165962306a36Sopenharmony_ci);
166062306a36Sopenharmony_ci
166162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4__map_blocks_exit,
166262306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, unsigned flags, struct ext4_map_blocks *map,
166362306a36Sopenharmony_ci		 int ret),
166462306a36Sopenharmony_ci
166562306a36Sopenharmony_ci	TP_ARGS(inode, flags, map, ret),
166662306a36Sopenharmony_ci
166762306a36Sopenharmony_ci	TP_STRUCT__entry(
166862306a36Sopenharmony_ci		__field(	dev_t,		dev		)
166962306a36Sopenharmony_ci		__field(	ino_t,		ino		)
167062306a36Sopenharmony_ci		__field(	unsigned int,	flags		)
167162306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	pblk		)
167262306a36Sopenharmony_ci		__field(	ext4_lblk_t,	lblk		)
167362306a36Sopenharmony_ci		__field(	unsigned int,	len		)
167462306a36Sopenharmony_ci		__field(	unsigned int,	mflags		)
167562306a36Sopenharmony_ci		__field(	int,		ret		)
167662306a36Sopenharmony_ci	),
167762306a36Sopenharmony_ci
167862306a36Sopenharmony_ci	TP_fast_assign(
167962306a36Sopenharmony_ci		__entry->dev    = inode->i_sb->s_dev;
168062306a36Sopenharmony_ci		__entry->ino    = inode->i_ino;
168162306a36Sopenharmony_ci		__entry->flags	= flags;
168262306a36Sopenharmony_ci		__entry->pblk	= map->m_pblk;
168362306a36Sopenharmony_ci		__entry->lblk	= map->m_lblk;
168462306a36Sopenharmony_ci		__entry->len	= map->m_len;
168562306a36Sopenharmony_ci		__entry->mflags	= map->m_flags;
168662306a36Sopenharmony_ci		__entry->ret	= ret;
168762306a36Sopenharmony_ci	),
168862306a36Sopenharmony_ci
168962306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu flags %s lblk %u pblk %llu len %u "
169062306a36Sopenharmony_ci		  "mflags %s ret %d",
169162306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
169262306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
169362306a36Sopenharmony_ci		  show_map_flags(__entry->flags), __entry->lblk, __entry->pblk,
169462306a36Sopenharmony_ci		  __entry->len, show_mflags(__entry->mflags), __entry->ret)
169562306a36Sopenharmony_ci);
169662306a36Sopenharmony_ci
169762306a36Sopenharmony_ciDEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
169862306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, unsigned flags,
169962306a36Sopenharmony_ci		 struct ext4_map_blocks *map, int ret),
170062306a36Sopenharmony_ci
170162306a36Sopenharmony_ci	TP_ARGS(inode, flags, map, ret)
170262306a36Sopenharmony_ci);
170362306a36Sopenharmony_ci
170462306a36Sopenharmony_ciDEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
170562306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, unsigned flags,
170662306a36Sopenharmony_ci		 struct ext4_map_blocks *map, int ret),
170762306a36Sopenharmony_ci
170862306a36Sopenharmony_ci	TP_ARGS(inode, flags, map, ret)
170962306a36Sopenharmony_ci);
171062306a36Sopenharmony_ci
171162306a36Sopenharmony_ciTRACE_EVENT(ext4_ext_load_extent,
171262306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk),
171362306a36Sopenharmony_ci
171462306a36Sopenharmony_ci	TP_ARGS(inode, lblk, pblk),
171562306a36Sopenharmony_ci
171662306a36Sopenharmony_ci	TP_STRUCT__entry(
171762306a36Sopenharmony_ci		__field(	dev_t,		dev		)
171862306a36Sopenharmony_ci		__field(	ino_t,		ino		)
171962306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	pblk		)
172062306a36Sopenharmony_ci		__field(	ext4_lblk_t,	lblk		)
172162306a36Sopenharmony_ci	),
172262306a36Sopenharmony_ci
172362306a36Sopenharmony_ci	TP_fast_assign(
172462306a36Sopenharmony_ci		__entry->dev    = inode->i_sb->s_dev;
172562306a36Sopenharmony_ci		__entry->ino    = inode->i_ino;
172662306a36Sopenharmony_ci		__entry->pblk	= pblk;
172762306a36Sopenharmony_ci		__entry->lblk	= lblk;
172862306a36Sopenharmony_ci	),
172962306a36Sopenharmony_ci
173062306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu",
173162306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
173262306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
173362306a36Sopenharmony_ci		  __entry->lblk, __entry->pblk)
173462306a36Sopenharmony_ci);
173562306a36Sopenharmony_ci
173662306a36Sopenharmony_ciTRACE_EVENT(ext4_load_inode,
173762306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, unsigned long ino),
173862306a36Sopenharmony_ci
173962306a36Sopenharmony_ci	TP_ARGS(sb, ino),
174062306a36Sopenharmony_ci
174162306a36Sopenharmony_ci	TP_STRUCT__entry(
174262306a36Sopenharmony_ci		__field(	dev_t,	dev		)
174362306a36Sopenharmony_ci		__field(	ino_t,	ino		)
174462306a36Sopenharmony_ci	),
174562306a36Sopenharmony_ci
174662306a36Sopenharmony_ci	TP_fast_assign(
174762306a36Sopenharmony_ci		__entry->dev		= sb->s_dev;
174862306a36Sopenharmony_ci		__entry->ino		= ino;
174962306a36Sopenharmony_ci	),
175062306a36Sopenharmony_ci
175162306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %ld",
175262306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
175362306a36Sopenharmony_ci		  (unsigned long) __entry->ino)
175462306a36Sopenharmony_ci);
175562306a36Sopenharmony_ci
175662306a36Sopenharmony_ciTRACE_EVENT(ext4_journal_start_sb,
175762306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, int blocks, int rsv_blocks,
175862306a36Sopenharmony_ci		 int revoke_creds, int type, unsigned long IP),
175962306a36Sopenharmony_ci
176062306a36Sopenharmony_ci	TP_ARGS(sb, blocks, rsv_blocks, revoke_creds, type, IP),
176162306a36Sopenharmony_ci
176262306a36Sopenharmony_ci	TP_STRUCT__entry(
176362306a36Sopenharmony_ci		__field(	dev_t,		dev		)
176462306a36Sopenharmony_ci		__field(	unsigned long,	ip		)
176562306a36Sopenharmony_ci		__field(	int,		blocks		)
176662306a36Sopenharmony_ci		__field(	int,		rsv_blocks	)
176762306a36Sopenharmony_ci		__field(	int,		revoke_creds	)
176862306a36Sopenharmony_ci		__field(	int,		type		)
176962306a36Sopenharmony_ci	),
177062306a36Sopenharmony_ci
177162306a36Sopenharmony_ci	TP_fast_assign(
177262306a36Sopenharmony_ci		__entry->dev		 = sb->s_dev;
177362306a36Sopenharmony_ci		__entry->ip		 = IP;
177462306a36Sopenharmony_ci		__entry->blocks		 = blocks;
177562306a36Sopenharmony_ci		__entry->rsv_blocks	 = rsv_blocks;
177662306a36Sopenharmony_ci		__entry->revoke_creds	 = revoke_creds;
177762306a36Sopenharmony_ci		__entry->type		 = type;
177862306a36Sopenharmony_ci	),
177962306a36Sopenharmony_ci
178062306a36Sopenharmony_ci	TP_printk("dev %d,%d blocks %d, rsv_blocks %d, revoke_creds %d,"
178162306a36Sopenharmony_ci		  " type %d, caller %pS", MAJOR(__entry->dev),
178262306a36Sopenharmony_ci		  MINOR(__entry->dev), __entry->blocks, __entry->rsv_blocks,
178362306a36Sopenharmony_ci		  __entry->revoke_creds, __entry->type, (void *)__entry->ip)
178462306a36Sopenharmony_ci);
178562306a36Sopenharmony_ci
178662306a36Sopenharmony_ciTRACE_EVENT(ext4_journal_start_inode,
178762306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, int blocks, int rsv_blocks,
178862306a36Sopenharmony_ci		 int revoke_creds, int type, unsigned long IP),
178962306a36Sopenharmony_ci
179062306a36Sopenharmony_ci	TP_ARGS(inode, blocks, rsv_blocks, revoke_creds, type, IP),
179162306a36Sopenharmony_ci
179262306a36Sopenharmony_ci	TP_STRUCT__entry(
179362306a36Sopenharmony_ci		__field(	unsigned long,	ino		)
179462306a36Sopenharmony_ci		__field(	dev_t,		dev		)
179562306a36Sopenharmony_ci		__field(	unsigned long,	ip		)
179662306a36Sopenharmony_ci		__field(	int,		blocks		)
179762306a36Sopenharmony_ci		__field(	int,		rsv_blocks	)
179862306a36Sopenharmony_ci		__field(	int,		revoke_creds	)
179962306a36Sopenharmony_ci		__field(	int,		type		)
180062306a36Sopenharmony_ci	),
180162306a36Sopenharmony_ci
180262306a36Sopenharmony_ci	TP_fast_assign(
180362306a36Sopenharmony_ci		__entry->dev		 = inode->i_sb->s_dev;
180462306a36Sopenharmony_ci		__entry->ip		 = IP;
180562306a36Sopenharmony_ci		__entry->blocks		 = blocks;
180662306a36Sopenharmony_ci		__entry->rsv_blocks	 = rsv_blocks;
180762306a36Sopenharmony_ci		__entry->revoke_creds	 = revoke_creds;
180862306a36Sopenharmony_ci		__entry->type		 = type;
180962306a36Sopenharmony_ci		__entry->ino		 = inode->i_ino;
181062306a36Sopenharmony_ci	),
181162306a36Sopenharmony_ci
181262306a36Sopenharmony_ci	TP_printk("dev %d,%d blocks %d, rsv_blocks %d, revoke_creds %d,"
181362306a36Sopenharmony_ci		  " type %d, ino %lu, caller %pS", MAJOR(__entry->dev),
181462306a36Sopenharmony_ci		  MINOR(__entry->dev), __entry->blocks, __entry->rsv_blocks,
181562306a36Sopenharmony_ci		  __entry->revoke_creds, __entry->type, __entry->ino,
181662306a36Sopenharmony_ci		  (void *)__entry->ip)
181762306a36Sopenharmony_ci);
181862306a36Sopenharmony_ci
181962306a36Sopenharmony_ciTRACE_EVENT(ext4_journal_start_reserved,
182062306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, int blocks, unsigned long IP),
182162306a36Sopenharmony_ci
182262306a36Sopenharmony_ci	TP_ARGS(sb, blocks, IP),
182362306a36Sopenharmony_ci
182462306a36Sopenharmony_ci	TP_STRUCT__entry(
182562306a36Sopenharmony_ci		__field(	dev_t,	dev			)
182662306a36Sopenharmony_ci		__field(unsigned long,	ip			)
182762306a36Sopenharmony_ci		__field(	  int,	blocks			)
182862306a36Sopenharmony_ci	),
182962306a36Sopenharmony_ci
183062306a36Sopenharmony_ci	TP_fast_assign(
183162306a36Sopenharmony_ci		__entry->dev		 = sb->s_dev;
183262306a36Sopenharmony_ci		__entry->ip		 = IP;
183362306a36Sopenharmony_ci		__entry->blocks		 = blocks;
183462306a36Sopenharmony_ci	),
183562306a36Sopenharmony_ci
183662306a36Sopenharmony_ci	TP_printk("dev %d,%d blocks, %d caller %pS",
183762306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
183862306a36Sopenharmony_ci		  __entry->blocks, (void *)__entry->ip)
183962306a36Sopenharmony_ci);
184062306a36Sopenharmony_ci
184162306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4__trim,
184262306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb,
184362306a36Sopenharmony_ci		 ext4_group_t group,
184462306a36Sopenharmony_ci		 ext4_grpblk_t start,
184562306a36Sopenharmony_ci		 ext4_grpblk_t len),
184662306a36Sopenharmony_ci
184762306a36Sopenharmony_ci	TP_ARGS(sb, group, start, len),
184862306a36Sopenharmony_ci
184962306a36Sopenharmony_ci	TP_STRUCT__entry(
185062306a36Sopenharmony_ci		__field(	int,	dev_major		)
185162306a36Sopenharmony_ci		__field(	int,	dev_minor		)
185262306a36Sopenharmony_ci		__field(	__u32, 	group			)
185362306a36Sopenharmony_ci		__field(	int,	start			)
185462306a36Sopenharmony_ci		__field(	int,	len			)
185562306a36Sopenharmony_ci	),
185662306a36Sopenharmony_ci
185762306a36Sopenharmony_ci	TP_fast_assign(
185862306a36Sopenharmony_ci		__entry->dev_major	= MAJOR(sb->s_dev);
185962306a36Sopenharmony_ci		__entry->dev_minor	= MINOR(sb->s_dev);
186062306a36Sopenharmony_ci		__entry->group		= group;
186162306a36Sopenharmony_ci		__entry->start		= start;
186262306a36Sopenharmony_ci		__entry->len		= len;
186362306a36Sopenharmony_ci	),
186462306a36Sopenharmony_ci
186562306a36Sopenharmony_ci	TP_printk("dev %d,%d group %u, start %d, len %d",
186662306a36Sopenharmony_ci		  __entry->dev_major, __entry->dev_minor,
186762306a36Sopenharmony_ci		  __entry->group, __entry->start, __entry->len)
186862306a36Sopenharmony_ci);
186962306a36Sopenharmony_ci
187062306a36Sopenharmony_ciDEFINE_EVENT(ext4__trim, ext4_trim_extent,
187162306a36Sopenharmony_ci
187262306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb,
187362306a36Sopenharmony_ci		 ext4_group_t group,
187462306a36Sopenharmony_ci		 ext4_grpblk_t start,
187562306a36Sopenharmony_ci		 ext4_grpblk_t len),
187662306a36Sopenharmony_ci
187762306a36Sopenharmony_ci	TP_ARGS(sb, group, start, len)
187862306a36Sopenharmony_ci);
187962306a36Sopenharmony_ci
188062306a36Sopenharmony_ciDEFINE_EVENT(ext4__trim, ext4_trim_all_free,
188162306a36Sopenharmony_ci
188262306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb,
188362306a36Sopenharmony_ci		 ext4_group_t group,
188462306a36Sopenharmony_ci		 ext4_grpblk_t start,
188562306a36Sopenharmony_ci		 ext4_grpblk_t len),
188662306a36Sopenharmony_ci
188762306a36Sopenharmony_ci	TP_ARGS(sb, group, start, len)
188862306a36Sopenharmony_ci);
188962306a36Sopenharmony_ci
189062306a36Sopenharmony_ciTRACE_EVENT(ext4_ext_handle_unwritten_extents,
189162306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int flags,
189262306a36Sopenharmony_ci		 unsigned int allocated, ext4_fsblk_t newblock),
189362306a36Sopenharmony_ci
189462306a36Sopenharmony_ci	TP_ARGS(inode, map, flags, allocated, newblock),
189562306a36Sopenharmony_ci
189662306a36Sopenharmony_ci	TP_STRUCT__entry(
189762306a36Sopenharmony_ci		__field(	dev_t,		dev		)
189862306a36Sopenharmony_ci		__field(	ino_t,		ino		)
189962306a36Sopenharmony_ci		__field(	int,		flags		)
190062306a36Sopenharmony_ci		__field(	ext4_lblk_t,	lblk		)
190162306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	pblk		)
190262306a36Sopenharmony_ci		__field(	unsigned int,	len		)
190362306a36Sopenharmony_ci		__field(	unsigned int,	allocated	)
190462306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	newblk		)
190562306a36Sopenharmony_ci	),
190662306a36Sopenharmony_ci
190762306a36Sopenharmony_ci	TP_fast_assign(
190862306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
190962306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
191062306a36Sopenharmony_ci		__entry->flags		= flags;
191162306a36Sopenharmony_ci		__entry->lblk		= map->m_lblk;
191262306a36Sopenharmony_ci		__entry->pblk		= map->m_pblk;
191362306a36Sopenharmony_ci		__entry->len		= map->m_len;
191462306a36Sopenharmony_ci		__entry->allocated	= allocated;
191562306a36Sopenharmony_ci		__entry->newblk		= newblock;
191662306a36Sopenharmony_ci	),
191762306a36Sopenharmony_ci
191862306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %s "
191962306a36Sopenharmony_ci		  "allocated %d newblock %llu",
192062306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
192162306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
192262306a36Sopenharmony_ci		  (unsigned) __entry->lblk, (unsigned long long) __entry->pblk,
192362306a36Sopenharmony_ci		  __entry->len, show_map_flags(__entry->flags),
192462306a36Sopenharmony_ci		  (unsigned int) __entry->allocated,
192562306a36Sopenharmony_ci		  (unsigned long long) __entry->newblk)
192662306a36Sopenharmony_ci);
192762306a36Sopenharmony_ci
192862306a36Sopenharmony_ciTRACE_EVENT(ext4_get_implied_cluster_alloc_exit,
192962306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, struct ext4_map_blocks *map, int ret),
193062306a36Sopenharmony_ci
193162306a36Sopenharmony_ci	TP_ARGS(sb, map, ret),
193262306a36Sopenharmony_ci
193362306a36Sopenharmony_ci	TP_STRUCT__entry(
193462306a36Sopenharmony_ci		__field(	dev_t,		dev	)
193562306a36Sopenharmony_ci		__field(	unsigned int,	flags	)
193662306a36Sopenharmony_ci		__field(	ext4_lblk_t,	lblk	)
193762306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	pblk	)
193862306a36Sopenharmony_ci		__field(	unsigned int,	len	)
193962306a36Sopenharmony_ci		__field(	int,		ret	)
194062306a36Sopenharmony_ci	),
194162306a36Sopenharmony_ci
194262306a36Sopenharmony_ci	TP_fast_assign(
194362306a36Sopenharmony_ci		__entry->dev	= sb->s_dev;
194462306a36Sopenharmony_ci		__entry->flags	= map->m_flags;
194562306a36Sopenharmony_ci		__entry->lblk	= map->m_lblk;
194662306a36Sopenharmony_ci		__entry->pblk	= map->m_pblk;
194762306a36Sopenharmony_ci		__entry->len	= map->m_len;
194862306a36Sopenharmony_ci		__entry->ret	= ret;
194962306a36Sopenharmony_ci	),
195062306a36Sopenharmony_ci
195162306a36Sopenharmony_ci	TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %s ret %d",
195262306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
195362306a36Sopenharmony_ci		  __entry->lblk, (unsigned long long) __entry->pblk,
195462306a36Sopenharmony_ci		  __entry->len, show_mflags(__entry->flags), __entry->ret)
195562306a36Sopenharmony_ci);
195662306a36Sopenharmony_ci
195762306a36Sopenharmony_ciTRACE_EVENT(ext4_ext_show_extent,
195862306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk,
195962306a36Sopenharmony_ci		 unsigned short len),
196062306a36Sopenharmony_ci
196162306a36Sopenharmony_ci	TP_ARGS(inode, lblk, pblk, len),
196262306a36Sopenharmony_ci
196362306a36Sopenharmony_ci	TP_STRUCT__entry(
196462306a36Sopenharmony_ci		__field(	dev_t,		dev	)
196562306a36Sopenharmony_ci		__field(	ino_t,		ino	)
196662306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	pblk	)
196762306a36Sopenharmony_ci		__field(	ext4_lblk_t,	lblk	)
196862306a36Sopenharmony_ci		__field(	unsigned short,	len	)
196962306a36Sopenharmony_ci	),
197062306a36Sopenharmony_ci
197162306a36Sopenharmony_ci	TP_fast_assign(
197262306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
197362306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
197462306a36Sopenharmony_ci		__entry->pblk	= pblk;
197562306a36Sopenharmony_ci		__entry->lblk	= lblk;
197662306a36Sopenharmony_ci		__entry->len	= len;
197762306a36Sopenharmony_ci	),
197862306a36Sopenharmony_ci
197962306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u",
198062306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
198162306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
198262306a36Sopenharmony_ci		  (unsigned) __entry->lblk,
198362306a36Sopenharmony_ci		  (unsigned long long) __entry->pblk,
198462306a36Sopenharmony_ci		  (unsigned short) __entry->len)
198562306a36Sopenharmony_ci);
198662306a36Sopenharmony_ci
198762306a36Sopenharmony_ciTRACE_EVENT(ext4_remove_blocks,
198862306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct ext4_extent *ex,
198962306a36Sopenharmony_ci		 ext4_lblk_t from, ext4_fsblk_t to,
199062306a36Sopenharmony_ci		 struct partial_cluster *pc),
199162306a36Sopenharmony_ci
199262306a36Sopenharmony_ci	TP_ARGS(inode, ex, from, to, pc),
199362306a36Sopenharmony_ci
199462306a36Sopenharmony_ci	TP_STRUCT__entry(
199562306a36Sopenharmony_ci		__field(	dev_t,		dev	)
199662306a36Sopenharmony_ci		__field(	ino_t,		ino	)
199762306a36Sopenharmony_ci		__field(	ext4_lblk_t,	from	)
199862306a36Sopenharmony_ci		__field(	ext4_lblk_t,	to	)
199962306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	ee_pblk	)
200062306a36Sopenharmony_ci		__field(	ext4_lblk_t,	ee_lblk	)
200162306a36Sopenharmony_ci		__field(	unsigned short,	ee_len	)
200262306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	pc_pclu	)
200362306a36Sopenharmony_ci		__field(	ext4_lblk_t,	pc_lblk	)
200462306a36Sopenharmony_ci		__field(	int,		pc_state)
200562306a36Sopenharmony_ci	),
200662306a36Sopenharmony_ci
200762306a36Sopenharmony_ci	TP_fast_assign(
200862306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
200962306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
201062306a36Sopenharmony_ci		__entry->from		= from;
201162306a36Sopenharmony_ci		__entry->to		= to;
201262306a36Sopenharmony_ci		__entry->ee_pblk	= ext4_ext_pblock(ex);
201362306a36Sopenharmony_ci		__entry->ee_lblk	= le32_to_cpu(ex->ee_block);
201462306a36Sopenharmony_ci		__entry->ee_len		= ext4_ext_get_actual_len(ex);
201562306a36Sopenharmony_ci		__entry->pc_pclu	= pc->pclu;
201662306a36Sopenharmony_ci		__entry->pc_lblk	= pc->lblk;
201762306a36Sopenharmony_ci		__entry->pc_state	= pc->state;
201862306a36Sopenharmony_ci	),
201962306a36Sopenharmony_ci
202062306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu extent [%u(%llu), %u]"
202162306a36Sopenharmony_ci		  "from %u to %u partial [pclu %lld lblk %u state %d]",
202262306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
202362306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
202462306a36Sopenharmony_ci		  (unsigned) __entry->ee_lblk,
202562306a36Sopenharmony_ci		  (unsigned long long) __entry->ee_pblk,
202662306a36Sopenharmony_ci		  (unsigned short) __entry->ee_len,
202762306a36Sopenharmony_ci		  (unsigned) __entry->from,
202862306a36Sopenharmony_ci		  (unsigned) __entry->to,
202962306a36Sopenharmony_ci		  (long long) __entry->pc_pclu,
203062306a36Sopenharmony_ci		  (unsigned int) __entry->pc_lblk,
203162306a36Sopenharmony_ci		  (int) __entry->pc_state)
203262306a36Sopenharmony_ci);
203362306a36Sopenharmony_ci
203462306a36Sopenharmony_ciTRACE_EVENT(ext4_ext_rm_leaf,
203562306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, ext4_lblk_t start,
203662306a36Sopenharmony_ci		 struct ext4_extent *ex,
203762306a36Sopenharmony_ci		 struct partial_cluster *pc),
203862306a36Sopenharmony_ci
203962306a36Sopenharmony_ci	TP_ARGS(inode, start, ex, pc),
204062306a36Sopenharmony_ci
204162306a36Sopenharmony_ci	TP_STRUCT__entry(
204262306a36Sopenharmony_ci		__field(	dev_t,		dev	)
204362306a36Sopenharmony_ci		__field(	ino_t,		ino	)
204462306a36Sopenharmony_ci		__field(	ext4_lblk_t,	start	)
204562306a36Sopenharmony_ci		__field(	ext4_lblk_t,	ee_lblk	)
204662306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	ee_pblk	)
204762306a36Sopenharmony_ci		__field(	short,		ee_len	)
204862306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	pc_pclu	)
204962306a36Sopenharmony_ci		__field(	ext4_lblk_t,	pc_lblk	)
205062306a36Sopenharmony_ci		__field(	int,		pc_state)
205162306a36Sopenharmony_ci	),
205262306a36Sopenharmony_ci
205362306a36Sopenharmony_ci	TP_fast_assign(
205462306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
205562306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
205662306a36Sopenharmony_ci		__entry->start		= start;
205762306a36Sopenharmony_ci		__entry->ee_lblk	= le32_to_cpu(ex->ee_block);
205862306a36Sopenharmony_ci		__entry->ee_pblk	= ext4_ext_pblock(ex);
205962306a36Sopenharmony_ci		__entry->ee_len		= ext4_ext_get_actual_len(ex);
206062306a36Sopenharmony_ci		__entry->pc_pclu	= pc->pclu;
206162306a36Sopenharmony_ci		__entry->pc_lblk	= pc->lblk;
206262306a36Sopenharmony_ci		__entry->pc_state	= pc->state;
206362306a36Sopenharmony_ci	),
206462306a36Sopenharmony_ci
206562306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu start_lblk %u last_extent [%u(%llu), %u]"
206662306a36Sopenharmony_ci		  "partial [pclu %lld lblk %u state %d]",
206762306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
206862306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
206962306a36Sopenharmony_ci		  (unsigned) __entry->start,
207062306a36Sopenharmony_ci		  (unsigned) __entry->ee_lblk,
207162306a36Sopenharmony_ci		  (unsigned long long) __entry->ee_pblk,
207262306a36Sopenharmony_ci		  (unsigned short) __entry->ee_len,
207362306a36Sopenharmony_ci		  (long long) __entry->pc_pclu,
207462306a36Sopenharmony_ci		  (unsigned int) __entry->pc_lblk,
207562306a36Sopenharmony_ci		  (int) __entry->pc_state)
207662306a36Sopenharmony_ci);
207762306a36Sopenharmony_ci
207862306a36Sopenharmony_ciTRACE_EVENT(ext4_ext_rm_idx,
207962306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, ext4_fsblk_t pblk),
208062306a36Sopenharmony_ci
208162306a36Sopenharmony_ci	TP_ARGS(inode, pblk),
208262306a36Sopenharmony_ci
208362306a36Sopenharmony_ci	TP_STRUCT__entry(
208462306a36Sopenharmony_ci		__field(	dev_t,		dev	)
208562306a36Sopenharmony_ci		__field(	ino_t,		ino	)
208662306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	pblk	)
208762306a36Sopenharmony_ci	),
208862306a36Sopenharmony_ci
208962306a36Sopenharmony_ci	TP_fast_assign(
209062306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
209162306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
209262306a36Sopenharmony_ci		__entry->pblk	= pblk;
209362306a36Sopenharmony_ci	),
209462306a36Sopenharmony_ci
209562306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu index_pblk %llu",
209662306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
209762306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
209862306a36Sopenharmony_ci		  (unsigned long long) __entry->pblk)
209962306a36Sopenharmony_ci);
210062306a36Sopenharmony_ci
210162306a36Sopenharmony_ciTRACE_EVENT(ext4_ext_remove_space,
210262306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, ext4_lblk_t start,
210362306a36Sopenharmony_ci		 ext4_lblk_t end, int depth),
210462306a36Sopenharmony_ci
210562306a36Sopenharmony_ci	TP_ARGS(inode, start, end, depth),
210662306a36Sopenharmony_ci
210762306a36Sopenharmony_ci	TP_STRUCT__entry(
210862306a36Sopenharmony_ci		__field(	dev_t,		dev	)
210962306a36Sopenharmony_ci		__field(	ino_t,		ino	)
211062306a36Sopenharmony_ci		__field(	ext4_lblk_t,	start	)
211162306a36Sopenharmony_ci		__field(	ext4_lblk_t,	end	)
211262306a36Sopenharmony_ci		__field(	int,		depth	)
211362306a36Sopenharmony_ci	),
211462306a36Sopenharmony_ci
211562306a36Sopenharmony_ci	TP_fast_assign(
211662306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
211762306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
211862306a36Sopenharmony_ci		__entry->start	= start;
211962306a36Sopenharmony_ci		__entry->end	= end;
212062306a36Sopenharmony_ci		__entry->depth	= depth;
212162306a36Sopenharmony_ci	),
212262306a36Sopenharmony_ci
212362306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu since %u end %u depth %d",
212462306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
212562306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
212662306a36Sopenharmony_ci		  (unsigned) __entry->start,
212762306a36Sopenharmony_ci		  (unsigned) __entry->end,
212862306a36Sopenharmony_ci		  __entry->depth)
212962306a36Sopenharmony_ci);
213062306a36Sopenharmony_ci
213162306a36Sopenharmony_ciTRACE_EVENT(ext4_ext_remove_space_done,
213262306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end,
213362306a36Sopenharmony_ci		 int depth, struct partial_cluster *pc, __le16 eh_entries),
213462306a36Sopenharmony_ci
213562306a36Sopenharmony_ci	TP_ARGS(inode, start, end, depth, pc, eh_entries),
213662306a36Sopenharmony_ci
213762306a36Sopenharmony_ci	TP_STRUCT__entry(
213862306a36Sopenharmony_ci		__field(	dev_t,		dev		)
213962306a36Sopenharmony_ci		__field(	ino_t,		ino		)
214062306a36Sopenharmony_ci		__field(	ext4_lblk_t,	start		)
214162306a36Sopenharmony_ci		__field(	ext4_lblk_t,	end		)
214262306a36Sopenharmony_ci		__field(	int,		depth		)
214362306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	pc_pclu		)
214462306a36Sopenharmony_ci		__field(	ext4_lblk_t,	pc_lblk		)
214562306a36Sopenharmony_ci		__field(	int,		pc_state	)
214662306a36Sopenharmony_ci		__field(	unsigned short,	eh_entries	)
214762306a36Sopenharmony_ci	),
214862306a36Sopenharmony_ci
214962306a36Sopenharmony_ci	TP_fast_assign(
215062306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
215162306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
215262306a36Sopenharmony_ci		__entry->start		= start;
215362306a36Sopenharmony_ci		__entry->end		= end;
215462306a36Sopenharmony_ci		__entry->depth		= depth;
215562306a36Sopenharmony_ci		__entry->pc_pclu	= pc->pclu;
215662306a36Sopenharmony_ci		__entry->pc_lblk	= pc->lblk;
215762306a36Sopenharmony_ci		__entry->pc_state	= pc->state;
215862306a36Sopenharmony_ci		__entry->eh_entries	= le16_to_cpu(eh_entries);
215962306a36Sopenharmony_ci	),
216062306a36Sopenharmony_ci
216162306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu since %u end %u depth %d "
216262306a36Sopenharmony_ci		  "partial [pclu %lld lblk %u state %d] "
216362306a36Sopenharmony_ci		  "remaining_entries %u",
216462306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
216562306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
216662306a36Sopenharmony_ci		  (unsigned) __entry->start,
216762306a36Sopenharmony_ci		  (unsigned) __entry->end,
216862306a36Sopenharmony_ci		  __entry->depth,
216962306a36Sopenharmony_ci		  (long long) __entry->pc_pclu,
217062306a36Sopenharmony_ci		  (unsigned int) __entry->pc_lblk,
217162306a36Sopenharmony_ci		  (int) __entry->pc_state,
217262306a36Sopenharmony_ci		  (unsigned short) __entry->eh_entries)
217362306a36Sopenharmony_ci);
217462306a36Sopenharmony_ci
217562306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4__es_extent,
217662306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct extent_status *es),
217762306a36Sopenharmony_ci
217862306a36Sopenharmony_ci	TP_ARGS(inode, es),
217962306a36Sopenharmony_ci
218062306a36Sopenharmony_ci	TP_STRUCT__entry(
218162306a36Sopenharmony_ci		__field(	dev_t,		dev		)
218262306a36Sopenharmony_ci		__field(	ino_t,		ino		)
218362306a36Sopenharmony_ci		__field(	ext4_lblk_t,	lblk		)
218462306a36Sopenharmony_ci		__field(	ext4_lblk_t,	len		)
218562306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	pblk		)
218662306a36Sopenharmony_ci		__field(	char, status	)
218762306a36Sopenharmony_ci	),
218862306a36Sopenharmony_ci
218962306a36Sopenharmony_ci	TP_fast_assign(
219062306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
219162306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
219262306a36Sopenharmony_ci		__entry->lblk	= es->es_lblk;
219362306a36Sopenharmony_ci		__entry->len	= es->es_len;
219462306a36Sopenharmony_ci		__entry->pblk	= ext4_es_show_pblock(es);
219562306a36Sopenharmony_ci		__entry->status	= ext4_es_status(es);
219662306a36Sopenharmony_ci	),
219762306a36Sopenharmony_ci
219862306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
219962306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
220062306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
220162306a36Sopenharmony_ci		  __entry->lblk, __entry->len,
220262306a36Sopenharmony_ci		  __entry->pblk, show_extent_status(__entry->status))
220362306a36Sopenharmony_ci);
220462306a36Sopenharmony_ci
220562306a36Sopenharmony_ciDEFINE_EVENT(ext4__es_extent, ext4_es_insert_extent,
220662306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct extent_status *es),
220762306a36Sopenharmony_ci
220862306a36Sopenharmony_ci	TP_ARGS(inode, es)
220962306a36Sopenharmony_ci);
221062306a36Sopenharmony_ci
221162306a36Sopenharmony_ciDEFINE_EVENT(ext4__es_extent, ext4_es_cache_extent,
221262306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct extent_status *es),
221362306a36Sopenharmony_ci
221462306a36Sopenharmony_ci	TP_ARGS(inode, es)
221562306a36Sopenharmony_ci);
221662306a36Sopenharmony_ci
221762306a36Sopenharmony_ciTRACE_EVENT(ext4_es_remove_extent,
221862306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_lblk_t len),
221962306a36Sopenharmony_ci
222062306a36Sopenharmony_ci	TP_ARGS(inode, lblk, len),
222162306a36Sopenharmony_ci
222262306a36Sopenharmony_ci	TP_STRUCT__entry(
222362306a36Sopenharmony_ci		__field(	dev_t,	dev			)
222462306a36Sopenharmony_ci		__field(	ino_t,	ino			)
222562306a36Sopenharmony_ci		__field(	loff_t,	lblk			)
222662306a36Sopenharmony_ci		__field(	loff_t,	len			)
222762306a36Sopenharmony_ci	),
222862306a36Sopenharmony_ci
222962306a36Sopenharmony_ci	TP_fast_assign(
223062306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
223162306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
223262306a36Sopenharmony_ci		__entry->lblk	= lblk;
223362306a36Sopenharmony_ci		__entry->len	= len;
223462306a36Sopenharmony_ci	),
223562306a36Sopenharmony_ci
223662306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu es [%lld/%lld)",
223762306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
223862306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
223962306a36Sopenharmony_ci		  __entry->lblk, __entry->len)
224062306a36Sopenharmony_ci);
224162306a36Sopenharmony_ci
224262306a36Sopenharmony_ciTRACE_EVENT(ext4_es_find_extent_range_enter,
224362306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
224462306a36Sopenharmony_ci
224562306a36Sopenharmony_ci	TP_ARGS(inode, lblk),
224662306a36Sopenharmony_ci
224762306a36Sopenharmony_ci	TP_STRUCT__entry(
224862306a36Sopenharmony_ci		__field(	dev_t,		dev		)
224962306a36Sopenharmony_ci		__field(	ino_t,		ino		)
225062306a36Sopenharmony_ci		__field(	ext4_lblk_t,	lblk		)
225162306a36Sopenharmony_ci	),
225262306a36Sopenharmony_ci
225362306a36Sopenharmony_ci	TP_fast_assign(
225462306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
225562306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
225662306a36Sopenharmony_ci		__entry->lblk	= lblk;
225762306a36Sopenharmony_ci	),
225862306a36Sopenharmony_ci
225962306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu lblk %u",
226062306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
226162306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->lblk)
226262306a36Sopenharmony_ci);
226362306a36Sopenharmony_ci
226462306a36Sopenharmony_ciTRACE_EVENT(ext4_es_find_extent_range_exit,
226562306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct extent_status *es),
226662306a36Sopenharmony_ci
226762306a36Sopenharmony_ci	TP_ARGS(inode, es),
226862306a36Sopenharmony_ci
226962306a36Sopenharmony_ci	TP_STRUCT__entry(
227062306a36Sopenharmony_ci		__field(	dev_t,		dev		)
227162306a36Sopenharmony_ci		__field(	ino_t,		ino		)
227262306a36Sopenharmony_ci		__field(	ext4_lblk_t,	lblk		)
227362306a36Sopenharmony_ci		__field(	ext4_lblk_t,	len		)
227462306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	pblk		)
227562306a36Sopenharmony_ci		__field(	char, status	)
227662306a36Sopenharmony_ci	),
227762306a36Sopenharmony_ci
227862306a36Sopenharmony_ci	TP_fast_assign(
227962306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
228062306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
228162306a36Sopenharmony_ci		__entry->lblk	= es->es_lblk;
228262306a36Sopenharmony_ci		__entry->len	= es->es_len;
228362306a36Sopenharmony_ci		__entry->pblk	= ext4_es_show_pblock(es);
228462306a36Sopenharmony_ci		__entry->status	= ext4_es_status(es);
228562306a36Sopenharmony_ci	),
228662306a36Sopenharmony_ci
228762306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
228862306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
228962306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
229062306a36Sopenharmony_ci		  __entry->lblk, __entry->len,
229162306a36Sopenharmony_ci		  __entry->pblk, show_extent_status(__entry->status))
229262306a36Sopenharmony_ci);
229362306a36Sopenharmony_ci
229462306a36Sopenharmony_ciTRACE_EVENT(ext4_es_lookup_extent_enter,
229562306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
229662306a36Sopenharmony_ci
229762306a36Sopenharmony_ci	TP_ARGS(inode, lblk),
229862306a36Sopenharmony_ci
229962306a36Sopenharmony_ci	TP_STRUCT__entry(
230062306a36Sopenharmony_ci		__field(	dev_t,		dev		)
230162306a36Sopenharmony_ci		__field(	ino_t,		ino		)
230262306a36Sopenharmony_ci		__field(	ext4_lblk_t,	lblk		)
230362306a36Sopenharmony_ci	),
230462306a36Sopenharmony_ci
230562306a36Sopenharmony_ci	TP_fast_assign(
230662306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
230762306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
230862306a36Sopenharmony_ci		__entry->lblk	= lblk;
230962306a36Sopenharmony_ci	),
231062306a36Sopenharmony_ci
231162306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu lblk %u",
231262306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
231362306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->lblk)
231462306a36Sopenharmony_ci);
231562306a36Sopenharmony_ci
231662306a36Sopenharmony_ciTRACE_EVENT(ext4_es_lookup_extent_exit,
231762306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct extent_status *es,
231862306a36Sopenharmony_ci		 int found),
231962306a36Sopenharmony_ci
232062306a36Sopenharmony_ci	TP_ARGS(inode, es, found),
232162306a36Sopenharmony_ci
232262306a36Sopenharmony_ci	TP_STRUCT__entry(
232362306a36Sopenharmony_ci		__field(	dev_t,		dev		)
232462306a36Sopenharmony_ci		__field(	ino_t,		ino		)
232562306a36Sopenharmony_ci		__field(	ext4_lblk_t,	lblk		)
232662306a36Sopenharmony_ci		__field(	ext4_lblk_t,	len		)
232762306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	pblk		)
232862306a36Sopenharmony_ci		__field(	char,		status		)
232962306a36Sopenharmony_ci		__field(	int,		found		)
233062306a36Sopenharmony_ci	),
233162306a36Sopenharmony_ci
233262306a36Sopenharmony_ci	TP_fast_assign(
233362306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
233462306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
233562306a36Sopenharmony_ci		__entry->lblk	= es->es_lblk;
233662306a36Sopenharmony_ci		__entry->len	= es->es_len;
233762306a36Sopenharmony_ci		__entry->pblk	= ext4_es_show_pblock(es);
233862306a36Sopenharmony_ci		__entry->status	= ext4_es_status(es);
233962306a36Sopenharmony_ci		__entry->found	= found;
234062306a36Sopenharmony_ci	),
234162306a36Sopenharmony_ci
234262306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu found %d [%u/%u) %llu %s",
234362306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
234462306a36Sopenharmony_ci		  (unsigned long) __entry->ino, __entry->found,
234562306a36Sopenharmony_ci		  __entry->lblk, __entry->len,
234662306a36Sopenharmony_ci		  __entry->found ? __entry->pblk : 0,
234762306a36Sopenharmony_ci		  show_extent_status(__entry->found ? __entry->status : 0))
234862306a36Sopenharmony_ci);
234962306a36Sopenharmony_ci
235062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4__es_shrink_enter,
235162306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
235262306a36Sopenharmony_ci
235362306a36Sopenharmony_ci	TP_ARGS(sb, nr_to_scan, cache_cnt),
235462306a36Sopenharmony_ci
235562306a36Sopenharmony_ci	TP_STRUCT__entry(
235662306a36Sopenharmony_ci		__field(	dev_t,	dev			)
235762306a36Sopenharmony_ci		__field(	int,	nr_to_scan		)
235862306a36Sopenharmony_ci		__field(	int,	cache_cnt		)
235962306a36Sopenharmony_ci	),
236062306a36Sopenharmony_ci
236162306a36Sopenharmony_ci	TP_fast_assign(
236262306a36Sopenharmony_ci		__entry->dev		= sb->s_dev;
236362306a36Sopenharmony_ci		__entry->nr_to_scan	= nr_to_scan;
236462306a36Sopenharmony_ci		__entry->cache_cnt	= cache_cnt;
236562306a36Sopenharmony_ci	),
236662306a36Sopenharmony_ci
236762306a36Sopenharmony_ci	TP_printk("dev %d,%d nr_to_scan %d cache_cnt %d",
236862306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
236962306a36Sopenharmony_ci		  __entry->nr_to_scan, __entry->cache_cnt)
237062306a36Sopenharmony_ci);
237162306a36Sopenharmony_ci
237262306a36Sopenharmony_ciDEFINE_EVENT(ext4__es_shrink_enter, ext4_es_shrink_count,
237362306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
237462306a36Sopenharmony_ci
237562306a36Sopenharmony_ci	TP_ARGS(sb, nr_to_scan, cache_cnt)
237662306a36Sopenharmony_ci);
237762306a36Sopenharmony_ci
237862306a36Sopenharmony_ciDEFINE_EVENT(ext4__es_shrink_enter, ext4_es_shrink_scan_enter,
237962306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
238062306a36Sopenharmony_ci
238162306a36Sopenharmony_ci	TP_ARGS(sb, nr_to_scan, cache_cnt)
238262306a36Sopenharmony_ci);
238362306a36Sopenharmony_ci
238462306a36Sopenharmony_ciTRACE_EVENT(ext4_es_shrink_scan_exit,
238562306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, int nr_shrunk, int cache_cnt),
238662306a36Sopenharmony_ci
238762306a36Sopenharmony_ci	TP_ARGS(sb, nr_shrunk, cache_cnt),
238862306a36Sopenharmony_ci
238962306a36Sopenharmony_ci	TP_STRUCT__entry(
239062306a36Sopenharmony_ci		__field(	dev_t,	dev			)
239162306a36Sopenharmony_ci		__field(	int,	nr_shrunk		)
239262306a36Sopenharmony_ci		__field(	int,	cache_cnt		)
239362306a36Sopenharmony_ci	),
239462306a36Sopenharmony_ci
239562306a36Sopenharmony_ci	TP_fast_assign(
239662306a36Sopenharmony_ci		__entry->dev		= sb->s_dev;
239762306a36Sopenharmony_ci		__entry->nr_shrunk	= nr_shrunk;
239862306a36Sopenharmony_ci		__entry->cache_cnt	= cache_cnt;
239962306a36Sopenharmony_ci	),
240062306a36Sopenharmony_ci
240162306a36Sopenharmony_ci	TP_printk("dev %d,%d nr_shrunk %d cache_cnt %d",
240262306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
240362306a36Sopenharmony_ci		  __entry->nr_shrunk, __entry->cache_cnt)
240462306a36Sopenharmony_ci);
240562306a36Sopenharmony_ci
240662306a36Sopenharmony_ciTRACE_EVENT(ext4_collapse_range,
240762306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t offset, loff_t len),
240862306a36Sopenharmony_ci
240962306a36Sopenharmony_ci	TP_ARGS(inode, offset, len),
241062306a36Sopenharmony_ci
241162306a36Sopenharmony_ci	TP_STRUCT__entry(
241262306a36Sopenharmony_ci		__field(dev_t,	dev)
241362306a36Sopenharmony_ci		__field(ino_t,	ino)
241462306a36Sopenharmony_ci		__field(loff_t,	offset)
241562306a36Sopenharmony_ci		__field(loff_t, len)
241662306a36Sopenharmony_ci	),
241762306a36Sopenharmony_ci
241862306a36Sopenharmony_ci	TP_fast_assign(
241962306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
242062306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
242162306a36Sopenharmony_ci		__entry->offset	= offset;
242262306a36Sopenharmony_ci		__entry->len	= len;
242362306a36Sopenharmony_ci	),
242462306a36Sopenharmony_ci
242562306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu offset %lld len %lld",
242662306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
242762306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
242862306a36Sopenharmony_ci		  __entry->offset, __entry->len)
242962306a36Sopenharmony_ci);
243062306a36Sopenharmony_ci
243162306a36Sopenharmony_ciTRACE_EVENT(ext4_insert_range,
243262306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, loff_t offset, loff_t len),
243362306a36Sopenharmony_ci
243462306a36Sopenharmony_ci	TP_ARGS(inode, offset, len),
243562306a36Sopenharmony_ci
243662306a36Sopenharmony_ci	TP_STRUCT__entry(
243762306a36Sopenharmony_ci		__field(dev_t,	dev)
243862306a36Sopenharmony_ci		__field(ino_t,	ino)
243962306a36Sopenharmony_ci		__field(loff_t,	offset)
244062306a36Sopenharmony_ci		__field(loff_t, len)
244162306a36Sopenharmony_ci	),
244262306a36Sopenharmony_ci
244362306a36Sopenharmony_ci	TP_fast_assign(
244462306a36Sopenharmony_ci		__entry->dev	= inode->i_sb->s_dev;
244562306a36Sopenharmony_ci		__entry->ino	= inode->i_ino;
244662306a36Sopenharmony_ci		__entry->offset	= offset;
244762306a36Sopenharmony_ci		__entry->len	= len;
244862306a36Sopenharmony_ci	),
244962306a36Sopenharmony_ci
245062306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu offset %lld len %lld",
245162306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
245262306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
245362306a36Sopenharmony_ci		  __entry->offset, __entry->len)
245462306a36Sopenharmony_ci);
245562306a36Sopenharmony_ci
245662306a36Sopenharmony_ciTRACE_EVENT(ext4_es_shrink,
245762306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, int nr_shrunk, u64 scan_time,
245862306a36Sopenharmony_ci		 int nr_skipped, int retried),
245962306a36Sopenharmony_ci
246062306a36Sopenharmony_ci	TP_ARGS(sb, nr_shrunk, scan_time, nr_skipped, retried),
246162306a36Sopenharmony_ci
246262306a36Sopenharmony_ci	TP_STRUCT__entry(
246362306a36Sopenharmony_ci		__field(	dev_t,		dev		)
246462306a36Sopenharmony_ci		__field(	int,		nr_shrunk	)
246562306a36Sopenharmony_ci		__field(	unsigned long long, scan_time	)
246662306a36Sopenharmony_ci		__field(	int,		nr_skipped	)
246762306a36Sopenharmony_ci		__field(	int,		retried		)
246862306a36Sopenharmony_ci	),
246962306a36Sopenharmony_ci
247062306a36Sopenharmony_ci	TP_fast_assign(
247162306a36Sopenharmony_ci		__entry->dev		= sb->s_dev;
247262306a36Sopenharmony_ci		__entry->nr_shrunk	= nr_shrunk;
247362306a36Sopenharmony_ci		__entry->scan_time	= div_u64(scan_time, 1000);
247462306a36Sopenharmony_ci		__entry->nr_skipped	= nr_skipped;
247562306a36Sopenharmony_ci		__entry->retried	= retried;
247662306a36Sopenharmony_ci	),
247762306a36Sopenharmony_ci
247862306a36Sopenharmony_ci	TP_printk("dev %d,%d nr_shrunk %d, scan_time %llu "
247962306a36Sopenharmony_ci		  "nr_skipped %d retried %d",
248062306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->nr_shrunk,
248162306a36Sopenharmony_ci		  __entry->scan_time, __entry->nr_skipped, __entry->retried)
248262306a36Sopenharmony_ci);
248362306a36Sopenharmony_ci
248462306a36Sopenharmony_ciTRACE_EVENT(ext4_es_insert_delayed_block,
248562306a36Sopenharmony_ci	TP_PROTO(struct inode *inode, struct extent_status *es,
248662306a36Sopenharmony_ci		 bool allocated),
248762306a36Sopenharmony_ci
248862306a36Sopenharmony_ci	TP_ARGS(inode, es, allocated),
248962306a36Sopenharmony_ci
249062306a36Sopenharmony_ci	TP_STRUCT__entry(
249162306a36Sopenharmony_ci		__field(	dev_t,		dev		)
249262306a36Sopenharmony_ci		__field(	ino_t,		ino		)
249362306a36Sopenharmony_ci		__field(	ext4_lblk_t,	lblk		)
249462306a36Sopenharmony_ci		__field(	ext4_lblk_t,	len		)
249562306a36Sopenharmony_ci		__field(	ext4_fsblk_t,	pblk		)
249662306a36Sopenharmony_ci		__field(	char,		status		)
249762306a36Sopenharmony_ci		__field(	bool,		allocated	)
249862306a36Sopenharmony_ci	),
249962306a36Sopenharmony_ci
250062306a36Sopenharmony_ci	TP_fast_assign(
250162306a36Sopenharmony_ci		__entry->dev		= inode->i_sb->s_dev;
250262306a36Sopenharmony_ci		__entry->ino		= inode->i_ino;
250362306a36Sopenharmony_ci		__entry->lblk		= es->es_lblk;
250462306a36Sopenharmony_ci		__entry->len		= es->es_len;
250562306a36Sopenharmony_ci		__entry->pblk		= ext4_es_show_pblock(es);
250662306a36Sopenharmony_ci		__entry->status		= ext4_es_status(es);
250762306a36Sopenharmony_ci		__entry->allocated	= allocated;
250862306a36Sopenharmony_ci	),
250962306a36Sopenharmony_ci
251062306a36Sopenharmony_ci	TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s "
251162306a36Sopenharmony_ci		  "allocated %d",
251262306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
251362306a36Sopenharmony_ci		  (unsigned long) __entry->ino,
251462306a36Sopenharmony_ci		  __entry->lblk, __entry->len,
251562306a36Sopenharmony_ci		  __entry->pblk, show_extent_status(__entry->status),
251662306a36Sopenharmony_ci		  __entry->allocated)
251762306a36Sopenharmony_ci);
251862306a36Sopenharmony_ci
251962306a36Sopenharmony_ci/* fsmap traces */
252062306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4_fsmap_class,
252162306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, u32 keydev, u32 agno, u64 bno, u64 len,
252262306a36Sopenharmony_ci		 u64 owner),
252362306a36Sopenharmony_ci	TP_ARGS(sb, keydev, agno, bno, len, owner),
252462306a36Sopenharmony_ci	TP_STRUCT__entry(
252562306a36Sopenharmony_ci		__field(dev_t, dev)
252662306a36Sopenharmony_ci		__field(dev_t, keydev)
252762306a36Sopenharmony_ci		__field(u32, agno)
252862306a36Sopenharmony_ci		__field(u64, bno)
252962306a36Sopenharmony_ci		__field(u64, len)
253062306a36Sopenharmony_ci		__field(u64, owner)
253162306a36Sopenharmony_ci	),
253262306a36Sopenharmony_ci	TP_fast_assign(
253362306a36Sopenharmony_ci		__entry->dev = sb->s_bdev->bd_dev;
253462306a36Sopenharmony_ci		__entry->keydev = new_decode_dev(keydev);
253562306a36Sopenharmony_ci		__entry->agno = agno;
253662306a36Sopenharmony_ci		__entry->bno = bno;
253762306a36Sopenharmony_ci		__entry->len = len;
253862306a36Sopenharmony_ci		__entry->owner = owner;
253962306a36Sopenharmony_ci	),
254062306a36Sopenharmony_ci	TP_printk("dev %d:%d keydev %d:%d agno %u bno %llu len %llu owner %lld\n",
254162306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
254262306a36Sopenharmony_ci		  MAJOR(__entry->keydev), MINOR(__entry->keydev),
254362306a36Sopenharmony_ci		  __entry->agno,
254462306a36Sopenharmony_ci		  __entry->bno,
254562306a36Sopenharmony_ci		  __entry->len,
254662306a36Sopenharmony_ci		  __entry->owner)
254762306a36Sopenharmony_ci)
254862306a36Sopenharmony_ci#define DEFINE_FSMAP_EVENT(name) \
254962306a36Sopenharmony_ciDEFINE_EVENT(ext4_fsmap_class, name, \
255062306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, u32 keydev, u32 agno, u64 bno, u64 len, \
255162306a36Sopenharmony_ci		 u64 owner), \
255262306a36Sopenharmony_ci	TP_ARGS(sb, keydev, agno, bno, len, owner))
255362306a36Sopenharmony_ciDEFINE_FSMAP_EVENT(ext4_fsmap_low_key);
255462306a36Sopenharmony_ciDEFINE_FSMAP_EVENT(ext4_fsmap_high_key);
255562306a36Sopenharmony_ciDEFINE_FSMAP_EVENT(ext4_fsmap_mapping);
255662306a36Sopenharmony_ci
255762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4_getfsmap_class,
255862306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, struct ext4_fsmap *fsmap),
255962306a36Sopenharmony_ci	TP_ARGS(sb, fsmap),
256062306a36Sopenharmony_ci	TP_STRUCT__entry(
256162306a36Sopenharmony_ci		__field(dev_t, dev)
256262306a36Sopenharmony_ci		__field(dev_t, keydev)
256362306a36Sopenharmony_ci		__field(u64, block)
256462306a36Sopenharmony_ci		__field(u64, len)
256562306a36Sopenharmony_ci		__field(u64, owner)
256662306a36Sopenharmony_ci		__field(u64, flags)
256762306a36Sopenharmony_ci	),
256862306a36Sopenharmony_ci	TP_fast_assign(
256962306a36Sopenharmony_ci		__entry->dev = sb->s_bdev->bd_dev;
257062306a36Sopenharmony_ci		__entry->keydev = new_decode_dev(fsmap->fmr_device);
257162306a36Sopenharmony_ci		__entry->block = fsmap->fmr_physical;
257262306a36Sopenharmony_ci		__entry->len = fsmap->fmr_length;
257362306a36Sopenharmony_ci		__entry->owner = fsmap->fmr_owner;
257462306a36Sopenharmony_ci		__entry->flags = fsmap->fmr_flags;
257562306a36Sopenharmony_ci	),
257662306a36Sopenharmony_ci	TP_printk("dev %d:%d keydev %d:%d block %llu len %llu owner %lld flags 0x%llx\n",
257762306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
257862306a36Sopenharmony_ci		  MAJOR(__entry->keydev), MINOR(__entry->keydev),
257962306a36Sopenharmony_ci		  __entry->block,
258062306a36Sopenharmony_ci		  __entry->len,
258162306a36Sopenharmony_ci		  __entry->owner,
258262306a36Sopenharmony_ci		  __entry->flags)
258362306a36Sopenharmony_ci)
258462306a36Sopenharmony_ci#define DEFINE_GETFSMAP_EVENT(name) \
258562306a36Sopenharmony_ciDEFINE_EVENT(ext4_getfsmap_class, name, \
258662306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, struct ext4_fsmap *fsmap), \
258762306a36Sopenharmony_ci	TP_ARGS(sb, fsmap))
258862306a36Sopenharmony_ciDEFINE_GETFSMAP_EVENT(ext4_getfsmap_low_key);
258962306a36Sopenharmony_ciDEFINE_GETFSMAP_EVENT(ext4_getfsmap_high_key);
259062306a36Sopenharmony_ciDEFINE_GETFSMAP_EVENT(ext4_getfsmap_mapping);
259162306a36Sopenharmony_ci
259262306a36Sopenharmony_ciTRACE_EVENT(ext4_shutdown,
259362306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, unsigned long flags),
259462306a36Sopenharmony_ci
259562306a36Sopenharmony_ci	TP_ARGS(sb, flags),
259662306a36Sopenharmony_ci
259762306a36Sopenharmony_ci	TP_STRUCT__entry(
259862306a36Sopenharmony_ci		__field(	dev_t,	dev			)
259962306a36Sopenharmony_ci		__field(     unsigned,	flags			)
260062306a36Sopenharmony_ci	),
260162306a36Sopenharmony_ci
260262306a36Sopenharmony_ci	TP_fast_assign(
260362306a36Sopenharmony_ci		__entry->dev	= sb->s_dev;
260462306a36Sopenharmony_ci		__entry->flags	= flags;
260562306a36Sopenharmony_ci	),
260662306a36Sopenharmony_ci
260762306a36Sopenharmony_ci	TP_printk("dev %d,%d flags %u",
260862306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
260962306a36Sopenharmony_ci		  __entry->flags)
261062306a36Sopenharmony_ci);
261162306a36Sopenharmony_ci
261262306a36Sopenharmony_ciTRACE_EVENT(ext4_error,
261362306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, const char *function,
261462306a36Sopenharmony_ci		 unsigned int line),
261562306a36Sopenharmony_ci
261662306a36Sopenharmony_ci	TP_ARGS(sb, function, line),
261762306a36Sopenharmony_ci
261862306a36Sopenharmony_ci	TP_STRUCT__entry(
261962306a36Sopenharmony_ci		__field(	dev_t,	dev			)
262062306a36Sopenharmony_ci		__field( const char *,	function		)
262162306a36Sopenharmony_ci		__field(     unsigned,	line			)
262262306a36Sopenharmony_ci	),
262362306a36Sopenharmony_ci
262462306a36Sopenharmony_ci	TP_fast_assign(
262562306a36Sopenharmony_ci		__entry->dev	= sb->s_dev;
262662306a36Sopenharmony_ci		__entry->function = function;
262762306a36Sopenharmony_ci		__entry->line	= line;
262862306a36Sopenharmony_ci	),
262962306a36Sopenharmony_ci
263062306a36Sopenharmony_ci	TP_printk("dev %d,%d function %s line %u",
263162306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
263262306a36Sopenharmony_ci		  __entry->function, __entry->line)
263362306a36Sopenharmony_ci);
263462306a36Sopenharmony_ci
263562306a36Sopenharmony_ciTRACE_EVENT(ext4_prefetch_bitmaps,
263662306a36Sopenharmony_ci	    TP_PROTO(struct super_block *sb, ext4_group_t group,
263762306a36Sopenharmony_ci		     ext4_group_t next, unsigned int prefetch_ios),
263862306a36Sopenharmony_ci
263962306a36Sopenharmony_ci	TP_ARGS(sb, group, next, prefetch_ios),
264062306a36Sopenharmony_ci
264162306a36Sopenharmony_ci	TP_STRUCT__entry(
264262306a36Sopenharmony_ci		__field(	dev_t,	dev			)
264362306a36Sopenharmony_ci		__field(	__u32,	group			)
264462306a36Sopenharmony_ci		__field(	__u32,	next			)
264562306a36Sopenharmony_ci		__field(	__u32,	ios			)
264662306a36Sopenharmony_ci	),
264762306a36Sopenharmony_ci
264862306a36Sopenharmony_ci	TP_fast_assign(
264962306a36Sopenharmony_ci		__entry->dev	= sb->s_dev;
265062306a36Sopenharmony_ci		__entry->group	= group;
265162306a36Sopenharmony_ci		__entry->next	= next;
265262306a36Sopenharmony_ci		__entry->ios	= prefetch_ios;
265362306a36Sopenharmony_ci	),
265462306a36Sopenharmony_ci
265562306a36Sopenharmony_ci	TP_printk("dev %d,%d group %u next %u ios %u",
265662306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
265762306a36Sopenharmony_ci		  __entry->group, __entry->next, __entry->ios)
265862306a36Sopenharmony_ci);
265962306a36Sopenharmony_ci
266062306a36Sopenharmony_ciTRACE_EVENT(ext4_lazy_itable_init,
266162306a36Sopenharmony_ci	    TP_PROTO(struct super_block *sb, ext4_group_t group),
266262306a36Sopenharmony_ci
266362306a36Sopenharmony_ci	TP_ARGS(sb, group),
266462306a36Sopenharmony_ci
266562306a36Sopenharmony_ci	TP_STRUCT__entry(
266662306a36Sopenharmony_ci		__field(	dev_t,	dev			)
266762306a36Sopenharmony_ci		__field(	__u32,	group			)
266862306a36Sopenharmony_ci	),
266962306a36Sopenharmony_ci
267062306a36Sopenharmony_ci	TP_fast_assign(
267162306a36Sopenharmony_ci		__entry->dev	= sb->s_dev;
267262306a36Sopenharmony_ci		__entry->group	= group;
267362306a36Sopenharmony_ci	),
267462306a36Sopenharmony_ci
267562306a36Sopenharmony_ci	TP_printk("dev %d,%d group %u",
267662306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->group)
267762306a36Sopenharmony_ci);
267862306a36Sopenharmony_ci
267962306a36Sopenharmony_ciTRACE_EVENT(ext4_fc_replay_scan,
268062306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, int error, int off),
268162306a36Sopenharmony_ci
268262306a36Sopenharmony_ci	TP_ARGS(sb, error, off),
268362306a36Sopenharmony_ci
268462306a36Sopenharmony_ci	TP_STRUCT__entry(
268562306a36Sopenharmony_ci		__field(dev_t, dev)
268662306a36Sopenharmony_ci		__field(int, error)
268762306a36Sopenharmony_ci		__field(int, off)
268862306a36Sopenharmony_ci	),
268962306a36Sopenharmony_ci
269062306a36Sopenharmony_ci	TP_fast_assign(
269162306a36Sopenharmony_ci		__entry->dev = sb->s_dev;
269262306a36Sopenharmony_ci		__entry->error = error;
269362306a36Sopenharmony_ci		__entry->off = off;
269462306a36Sopenharmony_ci	),
269562306a36Sopenharmony_ci
269662306a36Sopenharmony_ci	TP_printk("dev %d,%d error %d, off %d",
269762306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
269862306a36Sopenharmony_ci		  __entry->error, __entry->off)
269962306a36Sopenharmony_ci);
270062306a36Sopenharmony_ci
270162306a36Sopenharmony_ciTRACE_EVENT(ext4_fc_replay,
270262306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, int tag, int ino, int priv1, int priv2),
270362306a36Sopenharmony_ci
270462306a36Sopenharmony_ci	TP_ARGS(sb, tag, ino, priv1, priv2),
270562306a36Sopenharmony_ci
270662306a36Sopenharmony_ci	TP_STRUCT__entry(
270762306a36Sopenharmony_ci		__field(dev_t, dev)
270862306a36Sopenharmony_ci		__field(int, tag)
270962306a36Sopenharmony_ci		__field(int, ino)
271062306a36Sopenharmony_ci		__field(int, priv1)
271162306a36Sopenharmony_ci		__field(int, priv2)
271262306a36Sopenharmony_ci	),
271362306a36Sopenharmony_ci
271462306a36Sopenharmony_ci	TP_fast_assign(
271562306a36Sopenharmony_ci		__entry->dev = sb->s_dev;
271662306a36Sopenharmony_ci		__entry->tag = tag;
271762306a36Sopenharmony_ci		__entry->ino = ino;
271862306a36Sopenharmony_ci		__entry->priv1 = priv1;
271962306a36Sopenharmony_ci		__entry->priv2 = priv2;
272062306a36Sopenharmony_ci	),
272162306a36Sopenharmony_ci
272262306a36Sopenharmony_ci	TP_printk("dev %d,%d: tag %d, ino %d, data1 %d, data2 %d",
272362306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
272462306a36Sopenharmony_ci		  __entry->tag, __entry->ino, __entry->priv1, __entry->priv2)
272562306a36Sopenharmony_ci);
272662306a36Sopenharmony_ci
272762306a36Sopenharmony_ciTRACE_EVENT(ext4_fc_commit_start,
272862306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, tid_t commit_tid),
272962306a36Sopenharmony_ci
273062306a36Sopenharmony_ci	TP_ARGS(sb, commit_tid),
273162306a36Sopenharmony_ci
273262306a36Sopenharmony_ci	TP_STRUCT__entry(
273362306a36Sopenharmony_ci		__field(dev_t, dev)
273462306a36Sopenharmony_ci		__field(tid_t, tid)
273562306a36Sopenharmony_ci	),
273662306a36Sopenharmony_ci
273762306a36Sopenharmony_ci	TP_fast_assign(
273862306a36Sopenharmony_ci		__entry->dev = sb->s_dev;
273962306a36Sopenharmony_ci		__entry->tid = commit_tid;
274062306a36Sopenharmony_ci	),
274162306a36Sopenharmony_ci
274262306a36Sopenharmony_ci	TP_printk("dev %d,%d tid %u", MAJOR(__entry->dev), MINOR(__entry->dev),
274362306a36Sopenharmony_ci		  __entry->tid)
274462306a36Sopenharmony_ci);
274562306a36Sopenharmony_ci
274662306a36Sopenharmony_ciTRACE_EVENT(ext4_fc_commit_stop,
274762306a36Sopenharmony_ci	    TP_PROTO(struct super_block *sb, int nblks, int reason,
274862306a36Sopenharmony_ci		     tid_t commit_tid),
274962306a36Sopenharmony_ci
275062306a36Sopenharmony_ci	TP_ARGS(sb, nblks, reason, commit_tid),
275162306a36Sopenharmony_ci
275262306a36Sopenharmony_ci	TP_STRUCT__entry(
275362306a36Sopenharmony_ci		__field(dev_t, dev)
275462306a36Sopenharmony_ci		__field(int, nblks)
275562306a36Sopenharmony_ci		__field(int, reason)
275662306a36Sopenharmony_ci		__field(int, num_fc)
275762306a36Sopenharmony_ci		__field(int, num_fc_ineligible)
275862306a36Sopenharmony_ci		__field(int, nblks_agg)
275962306a36Sopenharmony_ci		__field(tid_t, tid)
276062306a36Sopenharmony_ci	),
276162306a36Sopenharmony_ci
276262306a36Sopenharmony_ci	TP_fast_assign(
276362306a36Sopenharmony_ci		__entry->dev = sb->s_dev;
276462306a36Sopenharmony_ci		__entry->nblks = nblks;
276562306a36Sopenharmony_ci		__entry->reason = reason;
276662306a36Sopenharmony_ci		__entry->num_fc = EXT4_SB(sb)->s_fc_stats.fc_num_commits;
276762306a36Sopenharmony_ci		__entry->num_fc_ineligible =
276862306a36Sopenharmony_ci			EXT4_SB(sb)->s_fc_stats.fc_ineligible_commits;
276962306a36Sopenharmony_ci		__entry->nblks_agg = EXT4_SB(sb)->s_fc_stats.fc_numblks;
277062306a36Sopenharmony_ci		__entry->tid = commit_tid;
277162306a36Sopenharmony_ci	),
277262306a36Sopenharmony_ci
277362306a36Sopenharmony_ci	TP_printk("dev %d,%d nblks %d, reason %d, fc = %d, ineligible = %d, agg_nblks %d, tid %u",
277462306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
277562306a36Sopenharmony_ci		  __entry->nblks, __entry->reason, __entry->num_fc,
277662306a36Sopenharmony_ci		  __entry->num_fc_ineligible, __entry->nblks_agg, __entry->tid)
277762306a36Sopenharmony_ci);
277862306a36Sopenharmony_ci
277962306a36Sopenharmony_ci#define FC_REASON_NAME_STAT(reason)					\
278062306a36Sopenharmony_ci	show_fc_reason(reason),						\
278162306a36Sopenharmony_ci	__entry->fc_ineligible_rc[reason]
278262306a36Sopenharmony_ci
278362306a36Sopenharmony_ciTRACE_EVENT(ext4_fc_stats,
278462306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb),
278562306a36Sopenharmony_ci
278662306a36Sopenharmony_ci	TP_ARGS(sb),
278762306a36Sopenharmony_ci
278862306a36Sopenharmony_ci	TP_STRUCT__entry(
278962306a36Sopenharmony_ci		__field(dev_t, dev)
279062306a36Sopenharmony_ci		__array(unsigned int, fc_ineligible_rc, EXT4_FC_REASON_MAX)
279162306a36Sopenharmony_ci		__field(unsigned long, fc_commits)
279262306a36Sopenharmony_ci		__field(unsigned long, fc_ineligible_commits)
279362306a36Sopenharmony_ci		__field(unsigned long, fc_numblks)
279462306a36Sopenharmony_ci	),
279562306a36Sopenharmony_ci
279662306a36Sopenharmony_ci	TP_fast_assign(
279762306a36Sopenharmony_ci		int i;
279862306a36Sopenharmony_ci
279962306a36Sopenharmony_ci		__entry->dev = sb->s_dev;
280062306a36Sopenharmony_ci		for (i = 0; i < EXT4_FC_REASON_MAX; i++) {
280162306a36Sopenharmony_ci			__entry->fc_ineligible_rc[i] =
280262306a36Sopenharmony_ci				EXT4_SB(sb)->s_fc_stats.fc_ineligible_reason_count[i];
280362306a36Sopenharmony_ci		}
280462306a36Sopenharmony_ci		__entry->fc_commits = EXT4_SB(sb)->s_fc_stats.fc_num_commits;
280562306a36Sopenharmony_ci		__entry->fc_ineligible_commits =
280662306a36Sopenharmony_ci			EXT4_SB(sb)->s_fc_stats.fc_ineligible_commits;
280762306a36Sopenharmony_ci		__entry->fc_numblks = EXT4_SB(sb)->s_fc_stats.fc_numblks;
280862306a36Sopenharmony_ci	),
280962306a36Sopenharmony_ci
281062306a36Sopenharmony_ci	TP_printk("dev %d,%d fc ineligible reasons:\n"
281162306a36Sopenharmony_ci		  "%s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u"
281262306a36Sopenharmony_ci		  "num_commits:%lu, ineligible: %lu, numblks: %lu",
281362306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
281462306a36Sopenharmony_ci		  FC_REASON_NAME_STAT(EXT4_FC_REASON_XATTR),
281562306a36Sopenharmony_ci		  FC_REASON_NAME_STAT(EXT4_FC_REASON_CROSS_RENAME),
281662306a36Sopenharmony_ci		  FC_REASON_NAME_STAT(EXT4_FC_REASON_JOURNAL_FLAG_CHANGE),
281762306a36Sopenharmony_ci		  FC_REASON_NAME_STAT(EXT4_FC_REASON_NOMEM),
281862306a36Sopenharmony_ci		  FC_REASON_NAME_STAT(EXT4_FC_REASON_SWAP_BOOT),
281962306a36Sopenharmony_ci		  FC_REASON_NAME_STAT(EXT4_FC_REASON_RESIZE),
282062306a36Sopenharmony_ci		  FC_REASON_NAME_STAT(EXT4_FC_REASON_RENAME_DIR),
282162306a36Sopenharmony_ci		  FC_REASON_NAME_STAT(EXT4_FC_REASON_FALLOC_RANGE),
282262306a36Sopenharmony_ci		  FC_REASON_NAME_STAT(EXT4_FC_REASON_INODE_JOURNAL_DATA),
282362306a36Sopenharmony_ci		  FC_REASON_NAME_STAT(EXT4_FC_REASON_ENCRYPTED_FILENAME),
282462306a36Sopenharmony_ci		  __entry->fc_commits, __entry->fc_ineligible_commits,
282562306a36Sopenharmony_ci		  __entry->fc_numblks)
282662306a36Sopenharmony_ci);
282762306a36Sopenharmony_ci
282862306a36Sopenharmony_ciDECLARE_EVENT_CLASS(ext4_fc_track_dentry,
282962306a36Sopenharmony_ci
283062306a36Sopenharmony_ci	TP_PROTO(handle_t *handle, struct inode *inode,
283162306a36Sopenharmony_ci		 struct dentry *dentry, int ret),
283262306a36Sopenharmony_ci
283362306a36Sopenharmony_ci	TP_ARGS(handle, inode, dentry, ret),
283462306a36Sopenharmony_ci
283562306a36Sopenharmony_ci	TP_STRUCT__entry(
283662306a36Sopenharmony_ci		__field(dev_t, dev)
283762306a36Sopenharmony_ci		__field(tid_t, t_tid)
283862306a36Sopenharmony_ci		__field(ino_t, i_ino)
283962306a36Sopenharmony_ci		__field(tid_t, i_sync_tid)
284062306a36Sopenharmony_ci		__field(int, error)
284162306a36Sopenharmony_ci	),
284262306a36Sopenharmony_ci
284362306a36Sopenharmony_ci	TP_fast_assign(
284462306a36Sopenharmony_ci		struct ext4_inode_info *ei = EXT4_I(inode);
284562306a36Sopenharmony_ci
284662306a36Sopenharmony_ci		__entry->dev = inode->i_sb->s_dev;
284762306a36Sopenharmony_ci		__entry->t_tid = handle->h_transaction->t_tid;
284862306a36Sopenharmony_ci		__entry->i_ino = inode->i_ino;
284962306a36Sopenharmony_ci		__entry->i_sync_tid = ei->i_sync_tid;
285062306a36Sopenharmony_ci		__entry->error = ret;
285162306a36Sopenharmony_ci	),
285262306a36Sopenharmony_ci
285362306a36Sopenharmony_ci	TP_printk("dev %d,%d, t_tid %u, ino %lu, i_sync_tid %u, error %d",
285462306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
285562306a36Sopenharmony_ci		  __entry->t_tid, __entry->i_ino, __entry->i_sync_tid,
285662306a36Sopenharmony_ci		  __entry->error
285762306a36Sopenharmony_ci	)
285862306a36Sopenharmony_ci);
285962306a36Sopenharmony_ci
286062306a36Sopenharmony_ci#define DEFINE_EVENT_CLASS_DENTRY(__type)				\
286162306a36Sopenharmony_ciDEFINE_EVENT(ext4_fc_track_dentry, ext4_fc_track_##__type,		\
286262306a36Sopenharmony_ci	TP_PROTO(handle_t *handle, struct inode *inode,			\
286362306a36Sopenharmony_ci		 struct dentry *dentry, int ret),			\
286462306a36Sopenharmony_ci	TP_ARGS(handle, inode, dentry, ret)				\
286562306a36Sopenharmony_ci)
286662306a36Sopenharmony_ci
286762306a36Sopenharmony_ciDEFINE_EVENT_CLASS_DENTRY(create);
286862306a36Sopenharmony_ciDEFINE_EVENT_CLASS_DENTRY(link);
286962306a36Sopenharmony_ciDEFINE_EVENT_CLASS_DENTRY(unlink);
287062306a36Sopenharmony_ci
287162306a36Sopenharmony_ciTRACE_EVENT(ext4_fc_track_inode,
287262306a36Sopenharmony_ci	TP_PROTO(handle_t *handle, struct inode *inode, int ret),
287362306a36Sopenharmony_ci
287462306a36Sopenharmony_ci	TP_ARGS(handle, inode, ret),
287562306a36Sopenharmony_ci
287662306a36Sopenharmony_ci	TP_STRUCT__entry(
287762306a36Sopenharmony_ci		__field(dev_t, dev)
287862306a36Sopenharmony_ci		__field(tid_t, t_tid)
287962306a36Sopenharmony_ci		__field(ino_t, i_ino)
288062306a36Sopenharmony_ci		__field(tid_t, i_sync_tid)
288162306a36Sopenharmony_ci		__field(int, error)
288262306a36Sopenharmony_ci	),
288362306a36Sopenharmony_ci
288462306a36Sopenharmony_ci	TP_fast_assign(
288562306a36Sopenharmony_ci		struct ext4_inode_info *ei = EXT4_I(inode);
288662306a36Sopenharmony_ci
288762306a36Sopenharmony_ci		__entry->dev = inode->i_sb->s_dev;
288862306a36Sopenharmony_ci		__entry->t_tid = handle->h_transaction->t_tid;
288962306a36Sopenharmony_ci		__entry->i_ino = inode->i_ino;
289062306a36Sopenharmony_ci		__entry->i_sync_tid = ei->i_sync_tid;
289162306a36Sopenharmony_ci		__entry->error = ret;
289262306a36Sopenharmony_ci	),
289362306a36Sopenharmony_ci
289462306a36Sopenharmony_ci	TP_printk("dev %d:%d, t_tid %u, inode %lu, i_sync_tid %u, error %d",
289562306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
289662306a36Sopenharmony_ci		  __entry->t_tid, __entry->i_ino, __entry->i_sync_tid,
289762306a36Sopenharmony_ci		  __entry->error)
289862306a36Sopenharmony_ci	);
289962306a36Sopenharmony_ci
290062306a36Sopenharmony_ciTRACE_EVENT(ext4_fc_track_range,
290162306a36Sopenharmony_ci	TP_PROTO(handle_t *handle, struct inode *inode,
290262306a36Sopenharmony_ci		 long start, long end, int ret),
290362306a36Sopenharmony_ci
290462306a36Sopenharmony_ci	TP_ARGS(handle, inode, start, end, ret),
290562306a36Sopenharmony_ci
290662306a36Sopenharmony_ci	TP_STRUCT__entry(
290762306a36Sopenharmony_ci		__field(dev_t, dev)
290862306a36Sopenharmony_ci		__field(tid_t, t_tid)
290962306a36Sopenharmony_ci		__field(ino_t, i_ino)
291062306a36Sopenharmony_ci		__field(tid_t, i_sync_tid)
291162306a36Sopenharmony_ci		__field(long, start)
291262306a36Sopenharmony_ci		__field(long, end)
291362306a36Sopenharmony_ci		__field(int, error)
291462306a36Sopenharmony_ci	),
291562306a36Sopenharmony_ci
291662306a36Sopenharmony_ci	TP_fast_assign(
291762306a36Sopenharmony_ci		struct ext4_inode_info *ei = EXT4_I(inode);
291862306a36Sopenharmony_ci
291962306a36Sopenharmony_ci		__entry->dev = inode->i_sb->s_dev;
292062306a36Sopenharmony_ci		__entry->t_tid = handle->h_transaction->t_tid;
292162306a36Sopenharmony_ci		__entry->i_ino = inode->i_ino;
292262306a36Sopenharmony_ci		__entry->i_sync_tid = ei->i_sync_tid;
292362306a36Sopenharmony_ci		__entry->start = start;
292462306a36Sopenharmony_ci		__entry->end = end;
292562306a36Sopenharmony_ci		__entry->error = ret;
292662306a36Sopenharmony_ci	),
292762306a36Sopenharmony_ci
292862306a36Sopenharmony_ci	TP_printk("dev %d:%d, t_tid %u, inode %lu, i_sync_tid %u, error %d, start %ld, end %ld",
292962306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
293062306a36Sopenharmony_ci		  __entry->t_tid, __entry->i_ino, __entry->i_sync_tid,
293162306a36Sopenharmony_ci		  __entry->error, __entry->start, __entry->end)
293262306a36Sopenharmony_ci	);
293362306a36Sopenharmony_ci
293462306a36Sopenharmony_ciTRACE_EVENT(ext4_fc_cleanup,
293562306a36Sopenharmony_ci	TP_PROTO(journal_t *journal, int full, tid_t tid),
293662306a36Sopenharmony_ci
293762306a36Sopenharmony_ci	TP_ARGS(journal, full, tid),
293862306a36Sopenharmony_ci
293962306a36Sopenharmony_ci	TP_STRUCT__entry(
294062306a36Sopenharmony_ci		__field(dev_t, dev)
294162306a36Sopenharmony_ci		__field(int, j_fc_off)
294262306a36Sopenharmony_ci		__field(int, full)
294362306a36Sopenharmony_ci		__field(tid_t, tid)
294462306a36Sopenharmony_ci	),
294562306a36Sopenharmony_ci
294662306a36Sopenharmony_ci	TP_fast_assign(
294762306a36Sopenharmony_ci		struct super_block *sb = journal->j_private;
294862306a36Sopenharmony_ci
294962306a36Sopenharmony_ci		__entry->dev = sb->s_dev;
295062306a36Sopenharmony_ci		__entry->j_fc_off = journal->j_fc_off;
295162306a36Sopenharmony_ci		__entry->full = full;
295262306a36Sopenharmony_ci		__entry->tid = tid;
295362306a36Sopenharmony_ci	),
295462306a36Sopenharmony_ci
295562306a36Sopenharmony_ci	TP_printk("dev %d,%d, j_fc_off %d, full %d, tid %u",
295662306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
295762306a36Sopenharmony_ci		  __entry->j_fc_off, __entry->full, __entry->tid)
295862306a36Sopenharmony_ci	);
295962306a36Sopenharmony_ci
296062306a36Sopenharmony_ciTRACE_EVENT(ext4_update_sb,
296162306a36Sopenharmony_ci	TP_PROTO(struct super_block *sb, ext4_fsblk_t fsblk,
296262306a36Sopenharmony_ci		 unsigned int flags),
296362306a36Sopenharmony_ci
296462306a36Sopenharmony_ci	TP_ARGS(sb, fsblk, flags),
296562306a36Sopenharmony_ci
296662306a36Sopenharmony_ci	TP_STRUCT__entry(
296762306a36Sopenharmony_ci		__field(dev_t,		dev)
296862306a36Sopenharmony_ci		__field(ext4_fsblk_t,	fsblk)
296962306a36Sopenharmony_ci		__field(unsigned int,	flags)
297062306a36Sopenharmony_ci	),
297162306a36Sopenharmony_ci
297262306a36Sopenharmony_ci	TP_fast_assign(
297362306a36Sopenharmony_ci		__entry->dev	= sb->s_dev;
297462306a36Sopenharmony_ci		__entry->fsblk	= fsblk;
297562306a36Sopenharmony_ci		__entry->flags	= flags;
297662306a36Sopenharmony_ci	),
297762306a36Sopenharmony_ci
297862306a36Sopenharmony_ci	TP_printk("dev %d,%d fsblk %llu flags %u",
297962306a36Sopenharmony_ci		  MAJOR(__entry->dev), MINOR(__entry->dev),
298062306a36Sopenharmony_ci		  __entry->fsblk, __entry->flags)
298162306a36Sopenharmony_ci);
298262306a36Sopenharmony_ci
298362306a36Sopenharmony_ci#endif /* _TRACE_EXT4_H */
298462306a36Sopenharmony_ci
298562306a36Sopenharmony_ci/* This part must be outside protection */
298662306a36Sopenharmony_ci#include <trace/define_trace.h>
2987