xref: /openbmc/linux/include/trace/events/ext4.h (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
29bffad1eSTheodore Ts'o #undef TRACE_SYSTEM
39bffad1eSTheodore Ts'o #define TRACE_SYSTEM ext4
49bffad1eSTheodore Ts'o 
5d0b6e04aSLi Zefan #if !defined(_TRACE_EXT4_H) || defined(TRACE_HEADER_MULTI_READ)
6d0b6e04aSLi Zefan #define _TRACE_EXT4_H
7d0b6e04aSLi Zefan 
89bffad1eSTheodore Ts'o #include <linux/writeback.h>
99bffad1eSTheodore Ts'o #include <linux/tracepoint.h>
109bffad1eSTheodore Ts'o 
113661d286STheodore Ts'o struct ext4_allocation_context;
123661d286STheodore Ts'o struct ext4_allocation_request;
136f91bc5fSEric Gouriou struct ext4_extent;
143661d286STheodore Ts'o struct ext4_prealloc_space;
15fb40ba0dSTheodore Ts'o struct ext4_inode_info;
160ef12249SJosh Stone struct mpage_da_data;
17d8990240SAditya Kali struct ext4_map_blocks;
18992e9fddSZheng Liu struct extent_status;
190c9ec4beSDarrick J. Wong struct ext4_fsmap;
209fe67149SEric Whitney struct partial_cluster;
21fb40ba0dSTheodore Ts'o 
22fb40ba0dSTheodore Ts'o #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
233661d286STheodore Ts'o 
2421ddd568STheodore Ts'o #define show_mballoc_flags(flags) __print_flags(flags, "|",	\
2521ddd568STheodore Ts'o 	{ EXT4_MB_HINT_MERGE,		"HINT_MERGE" },		\
2621ddd568STheodore Ts'o 	{ EXT4_MB_HINT_RESERVED,	"HINT_RESV" },		\
2721ddd568STheodore Ts'o 	{ EXT4_MB_HINT_METADATA,	"HINT_MDATA" },		\
2821ddd568STheodore Ts'o 	{ EXT4_MB_HINT_FIRST,		"HINT_FIRST" },		\
2921ddd568STheodore Ts'o 	{ EXT4_MB_HINT_BEST,		"HINT_BEST" },		\
3021ddd568STheodore Ts'o 	{ EXT4_MB_HINT_DATA,		"HINT_DATA" },		\
3121ddd568STheodore Ts'o 	{ EXT4_MB_HINT_NOPREALLOC,	"HINT_NOPREALLOC" },	\
3221ddd568STheodore Ts'o 	{ EXT4_MB_HINT_GROUP_ALLOC,	"HINT_GRP_ALLOC" },	\
3321ddd568STheodore Ts'o 	{ EXT4_MB_HINT_GOAL_ONLY,	"HINT_GOAL_ONLY" },	\
3421ddd568STheodore Ts'o 	{ EXT4_MB_HINT_TRY_GOAL,	"HINT_TRY_GOAL" },	\
3521ddd568STheodore Ts'o 	{ EXT4_MB_DELALLOC_RESERVED,	"DELALLOC_RESV" },	\
3621ddd568STheodore Ts'o 	{ EXT4_MB_STREAM_ALLOC,		"STREAM_ALLOC" },	\
3721ddd568STheodore Ts'o 	{ EXT4_MB_USE_ROOT_BLOCKS,	"USE_ROOT_BLKS" },	\
3899377830SRitesh Harjani 	{ EXT4_MB_USE_RESERVED,		"USE_RESV" },		\
3999377830SRitesh Harjani 	{ EXT4_MB_STRICT_CHECK,		"STRICT_CHECK" })
4021ddd568STheodore Ts'o 
4121ddd568STheodore Ts'o #define show_map_flags(flags) __print_flags(flags, "|",			\
4221ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_CREATE,		"CREATE" },		\
43556615dcSLukas Czerner 	{ EXT4_GET_BLOCKS_UNWRIT_EXT,		"UNWRIT" },		\
4421ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_DELALLOC_RESERVE,	"DELALLOC" },		\
4521ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_PRE_IO,		"PRE_IO" },		\
4621ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_CONVERT,		"CONVERT" },		\
4721ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_METADATA_NOFAIL,	"METADATA_NOFAIL" },	\
4821ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_NO_NORMALIZE,		"NO_NORMALIZE" },	\
49493e83aaSEric Whitney 	{ EXT4_GET_BLOCKS_CONVERT_UNWRITTEN,	"CONVERT_UNWRITTEN" },  \
50493e83aaSEric Whitney 	{ EXT4_GET_BLOCKS_ZERO,			"ZERO" },		\
51493e83aaSEric Whitney 	{ EXT4_GET_BLOCKS_IO_SUBMIT,		"IO_SUBMIT" },		\
52493e83aaSEric Whitney 	{ EXT4_EX_NOCACHE,			"EX_NOCACHE" })
5321ddd568STheodore Ts'o 
54459c8074SDmitry Monakhov /*
55459c8074SDmitry Monakhov  * __print_flags() requires that all enum values be wrapped in the
56459c8074SDmitry Monakhov  * TRACE_DEFINE_ENUM macro so that the enum value can be encoded in the ftrace
57459c8074SDmitry Monakhov  * ring buffer.
58459c8074SDmitry Monakhov  */
59459c8074SDmitry Monakhov TRACE_DEFINE_ENUM(BH_New);
60459c8074SDmitry Monakhov TRACE_DEFINE_ENUM(BH_Mapped);
61459c8074SDmitry Monakhov TRACE_DEFINE_ENUM(BH_Unwritten);
62459c8074SDmitry Monakhov TRACE_DEFINE_ENUM(BH_Boundary);
63459c8074SDmitry Monakhov 
6421ddd568STheodore Ts'o #define show_mflags(flags) __print_flags(flags, "",	\
6521ddd568STheodore Ts'o 	{ EXT4_MAP_NEW,		"N" },			\
6621ddd568STheodore Ts'o 	{ EXT4_MAP_MAPPED,	"M" },			\
6721ddd568STheodore Ts'o 	{ EXT4_MAP_UNWRITTEN,	"U" },			\
68cbd7584eSJan Kara 	{ EXT4_MAP_BOUNDARY,	"B" })
6921ddd568STheodore Ts'o 
7021ddd568STheodore Ts'o #define show_free_flags(flags) __print_flags(flags, "|",	\
7121ddd568STheodore Ts'o 	{ EXT4_FREE_BLOCKS_METADATA,		"METADATA" },	\
7221ddd568STheodore Ts'o 	{ EXT4_FREE_BLOCKS_FORGET,		"FORGET" },	\
7321ddd568STheodore Ts'o 	{ EXT4_FREE_BLOCKS_VALIDATED,		"VALIDATED" },	\
7421ddd568STheodore Ts'o 	{ EXT4_FREE_BLOCKS_NO_QUOT_UPDATE,	"NO_QUOTA" },	\
7521ddd568STheodore Ts'o 	{ EXT4_FREE_BLOCKS_NOFREE_FIRST_CLUSTER,"1ST_CLUSTER" },\
7621ddd568STheodore Ts'o 	{ EXT4_FREE_BLOCKS_NOFREE_LAST_CLUSTER,	"LAST_CLUSTER" })
7721ddd568STheodore Ts'o 
78459c8074SDmitry Monakhov TRACE_DEFINE_ENUM(ES_WRITTEN_B);
79459c8074SDmitry Monakhov TRACE_DEFINE_ENUM(ES_UNWRITTEN_B);
80459c8074SDmitry Monakhov TRACE_DEFINE_ENUM(ES_DELAYED_B);
81459c8074SDmitry Monakhov TRACE_DEFINE_ENUM(ES_HOLE_B);
82459c8074SDmitry Monakhov TRACE_DEFINE_ENUM(ES_REFERENCED_B);
83459c8074SDmitry Monakhov 
8421ddd568STheodore Ts'o #define show_extent_status(status) __print_flags(status, "",	\
853be78c73STheodore Ts'o 	{ EXTENT_STATUS_WRITTEN,	"W" },			\
863be78c73STheodore Ts'o 	{ EXTENT_STATUS_UNWRITTEN,	"U" },			\
873be78c73STheodore Ts'o 	{ EXTENT_STATUS_DELAYED,	"D" },			\
88459c8074SDmitry Monakhov 	{ EXTENT_STATUS_HOLE,		"H" },			\
89459c8074SDmitry Monakhov 	{ EXTENT_STATUS_REFERENCED,	"R" })
9021ddd568STheodore Ts'o 
91a633f5a3SLukas Czerner #define show_falloc_mode(mode) __print_flags(mode, "|",		\
92a633f5a3SLukas Czerner 	{ FALLOC_FL_KEEP_SIZE,		"KEEP_SIZE"},		\
93a633f5a3SLukas Czerner 	{ FALLOC_FL_PUNCH_HOLE,		"PUNCH_HOLE"},		\
949eb79482SNamjae Jeon 	{ FALLOC_FL_NO_HIDE_STALE,	"NO_HIDE_STALE"},	\
95b8a86845SLukas Czerner 	{ FALLOC_FL_COLLAPSE_RANGE,	"COLLAPSE_RANGE"},	\
96b8a86845SLukas Czerner 	{ FALLOC_FL_ZERO_RANGE,		"ZERO_RANGE"})
97a633f5a3SLukas Czerner 
987af1974aSRitesh Harjani TRACE_DEFINE_ENUM(EXT4_FC_REASON_XATTR);
997af1974aSRitesh Harjani TRACE_DEFINE_ENUM(EXT4_FC_REASON_CROSS_RENAME);
1007af1974aSRitesh Harjani TRACE_DEFINE_ENUM(EXT4_FC_REASON_JOURNAL_FLAG_CHANGE);
1017af1974aSRitesh Harjani TRACE_DEFINE_ENUM(EXT4_FC_REASON_NOMEM);
1027af1974aSRitesh Harjani TRACE_DEFINE_ENUM(EXT4_FC_REASON_SWAP_BOOT);
1037af1974aSRitesh Harjani TRACE_DEFINE_ENUM(EXT4_FC_REASON_RESIZE);
1047af1974aSRitesh Harjani TRACE_DEFINE_ENUM(EXT4_FC_REASON_RENAME_DIR);
1057af1974aSRitesh Harjani TRACE_DEFINE_ENUM(EXT4_FC_REASON_FALLOC_RANGE);
1067af1974aSRitesh Harjani TRACE_DEFINE_ENUM(EXT4_FC_REASON_INODE_JOURNAL_DATA);
107*0fbcb525SEric Biggers TRACE_DEFINE_ENUM(EXT4_FC_REASON_ENCRYPTED_FILENAME);
1087af1974aSRitesh Harjani TRACE_DEFINE_ENUM(EXT4_FC_REASON_MAX);
1097af1974aSRitesh Harjani 
110aa75f4d3SHarshad Shirwadkar #define show_fc_reason(reason)						\
111aa75f4d3SHarshad Shirwadkar 	__print_symbolic(reason,					\
112aa75f4d3SHarshad Shirwadkar 		{ EXT4_FC_REASON_XATTR,		"XATTR"},		\
113aa75f4d3SHarshad Shirwadkar 		{ EXT4_FC_REASON_CROSS_RENAME,	"CROSS_RENAME"},	\
114aa75f4d3SHarshad Shirwadkar 		{ EXT4_FC_REASON_JOURNAL_FLAG_CHANGE, "JOURNAL_FLAG_CHANGE"}, \
115b21ebf14SHarshad Shirwadkar 		{ EXT4_FC_REASON_NOMEM,	"NO_MEM"},			\
116aa75f4d3SHarshad Shirwadkar 		{ EXT4_FC_REASON_SWAP_BOOT,	"SWAP_BOOT"},		\
117aa75f4d3SHarshad Shirwadkar 		{ EXT4_FC_REASON_RESIZE,	"RESIZE"},		\
118aa75f4d3SHarshad Shirwadkar 		{ EXT4_FC_REASON_RENAME_DIR,	"RENAME_DIR"},		\
119556e0319SHarshad Shirwadkar 		{ EXT4_FC_REASON_FALLOC_RANGE,	"FALLOC_RANGE"},	\
120*0fbcb525SEric Biggers 		{ EXT4_FC_REASON_INODE_JOURNAL_DATA,	"INODE_JOURNAL_DATA"}, \
121*0fbcb525SEric Biggers 		{ EXT4_FC_REASON_ENCRYPTED_FILENAME,	"ENCRYPTED_FILENAME"})
12221ddd568STheodore Ts'o 
123a26f4992STheodore Ts'o TRACE_DEFINE_ENUM(CR_POWER2_ALIGNED);
124a26f4992STheodore Ts'o TRACE_DEFINE_ENUM(CR_GOAL_LEN_FAST);
125a26f4992STheodore Ts'o TRACE_DEFINE_ENUM(CR_BEST_AVAIL_LEN);
126a26f4992STheodore Ts'o TRACE_DEFINE_ENUM(CR_GOAL_LEN_SLOW);
127a26f4992STheodore Ts'o TRACE_DEFINE_ENUM(CR_ANY_FREE);
128a26f4992STheodore Ts'o 
129a26f4992STheodore Ts'o #define show_criteria(cr)                                               \
130a26f4992STheodore Ts'o 	__print_symbolic(cr,                                            \
131a26f4992STheodore Ts'o 			 { CR_POWER2_ALIGNED, "CR_POWER2_ALIGNED" },	\
132a26f4992STheodore Ts'o 			 { CR_GOAL_LEN_FAST, "CR_GOAL_LEN_FAST" },      \
133a26f4992STheodore Ts'o 			 { CR_BEST_AVAIL_LEN, "CR_BEST_AVAIL_LEN" },    \
134a26f4992STheodore Ts'o 			 { CR_GOAL_LEN_SLOW, "CR_GOAL_LEN_SLOW" },      \
135a26f4992STheodore Ts'o 			 { CR_ANY_FREE, "CR_ANY_FREE" })
136a26f4992STheodore Ts'o 
137a26f4992STheodore Ts'o TRACE_EVENT(ext4_other_inode_update_time,
138a26f4992STheodore Ts'o 	TP_PROTO(struct inode *inode, ino_t orig_ino),
139a26f4992STheodore Ts'o 
140a26f4992STheodore Ts'o 	TP_ARGS(inode, orig_ino),
141a26f4992STheodore Ts'o 
142a26f4992STheodore Ts'o 	TP_STRUCT__entry(
143a26f4992STheodore Ts'o 		__field(	dev_t,	dev			)
144a26f4992STheodore Ts'o 		__field(	ino_t,	ino			)
145a26f4992STheodore Ts'o 		__field(	ino_t,	orig_ino		)
146a26f4992STheodore Ts'o 		__field(	uid_t,	uid			)
147a26f4992STheodore Ts'o 		__field(	gid_t,	gid			)
148a26f4992STheodore Ts'o 		__field(	__u16, mode			)
149a26f4992STheodore Ts'o 	),
150a26f4992STheodore Ts'o 
151a26f4992STheodore Ts'o 	TP_fast_assign(
152a26f4992STheodore Ts'o 		__entry->orig_ino = orig_ino;
1539bffad1eSTheodore Ts'o 		__entry->dev	= inode->i_sb->s_dev;
1549bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
1559bffad1eSTheodore Ts'o 		__entry->uid	= i_uid_read(inode);
1569bffad1eSTheodore Ts'o 		__entry->gid	= i_gid_read(inode);
1579bffad1eSTheodore Ts'o 		__entry->mode	= inode->i_mode;
1589bffad1eSTheodore Ts'o 	),
1590562e0baSJiaying Zhang 
1609bffad1eSTheodore Ts'o 	TP_printk("dev %d,%d orig_ino %lu ino %lu mode 0%o uid %u gid %u",
1619bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1629bffad1eSTheodore Ts'o 		  (unsigned long) __entry->orig_ino,
163a9c667f8SLukas Czerner 		  (unsigned long) __entry->ino, __entry->mode,
164210c0526SAnatol Pomozov 		  __entry->uid, __entry->gid)
1659bffad1eSTheodore Ts'o );
1669bffad1eSTheodore Ts'o 
1679bffad1eSTheodore Ts'o TRACE_EVENT(ext4_free_inode,
1680562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode),
1699bffad1eSTheodore Ts'o 
17008cefc7aSEric W. Biederman 	TP_ARGS(inode),
17108cefc7aSEric W. Biederman 
1729bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
173210c0526SAnatol Pomozov 		__field(	dev_t,	dev			)
1749bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
1759bffad1eSTheodore Ts'o 		__field(	uid_t,	uid			)
176a269029dSTheodore Ts'o 		__field(	gid_t,	gid			)
1770562e0baSJiaying Zhang 		__field(	__u64, blocks			)
178a9c667f8SLukas Czerner 		__field(	__u16, mode			)
179a9c667f8SLukas Czerner 	),
1809bffad1eSTheodore Ts'o 
1819bffad1eSTheodore Ts'o 	TP_fast_assign(
1829bffad1eSTheodore Ts'o 		__entry->dev	= inode->i_sb->s_dev;
1839bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
1849bffad1eSTheodore Ts'o 		__entry->uid	= i_uid_read(inode);
1859bffad1eSTheodore Ts'o 		__entry->gid	= i_gid_read(inode);
1869bffad1eSTheodore Ts'o 		__entry->blocks	= inode->i_blocks;
1879bffad1eSTheodore Ts'o 		__entry->mode	= inode->i_mode;
1880562e0baSJiaying Zhang 	),
1899bffad1eSTheodore Ts'o 
19059be8e72STheodore Ts'o 	TP_printk("dev %d,%d ino %lu mode 0%o uid %u gid %u blocks %llu",
1919bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1929bffad1eSTheodore Ts'o 		  (unsigned long) __entry->ino, __entry->mode,
1939bffad1eSTheodore Ts'o 		  __entry->uid, __entry->gid, __entry->blocks)
1940562e0baSJiaying Zhang );
1959bffad1eSTheodore Ts'o 
1969bffad1eSTheodore Ts'o TRACE_EVENT(ext4_request_inode,
1979bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *dir, int mode),
1989bffad1eSTheodore Ts'o 
199a269029dSTheodore Ts'o 	TP_ARGS(dir, mode),
2000562e0baSJiaying Zhang 
201a269029dSTheodore Ts'o 	TP_STRUCT__entry(
2029bffad1eSTheodore Ts'o 		__field(	dev_t,	dev			)
2039bffad1eSTheodore Ts'o 		__field(	ino_t,	dir			)
2049bffad1eSTheodore Ts'o 		__field(	__u16, mode			)
2059bffad1eSTheodore Ts'o 	),
2069bffad1eSTheodore Ts'o 
2079bffad1eSTheodore Ts'o 	TP_fast_assign(
2089bffad1eSTheodore Ts'o 		__entry->dev	= dir->i_sb->s_dev;
2099bffad1eSTheodore Ts'o 		__entry->dir	= dir->i_ino;
2100562e0baSJiaying Zhang 		__entry->mode	= mode;
2119bffad1eSTheodore Ts'o 	),
2129bffad1eSTheodore Ts'o 
21359be8e72STheodore Ts'o 	TP_printk("dev %d,%d dir %lu mode 0%o",
2149bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2159bffad1eSTheodore Ts'o 		  (unsigned long) __entry->dir, __entry->mode)
2169bffad1eSTheodore Ts'o );
2170562e0baSJiaying Zhang 
2189bffad1eSTheodore Ts'o TRACE_EVENT(ext4_allocate_inode,
2199bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, struct inode *dir, int mode),
2209bffad1eSTheodore Ts'o 
2219bffad1eSTheodore Ts'o 	TP_ARGS(inode, dir, mode),
2229bffad1eSTheodore Ts'o 
223a269029dSTheodore Ts'o 	TP_STRUCT__entry(
2240562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
225a269029dSTheodore Ts'o 		__field(	ino_t,	ino			)
226a3710fd1STheodore Ts'o 		__field(	ino_t,	dir			)
2279bffad1eSTheodore Ts'o 		__field(	__u16,	mode			)
2289bffad1eSTheodore Ts'o 	),
2297ff9c073STheodore Ts'o 
2307ff9c073STheodore Ts'o 	TP_fast_assign(
2317ff9c073STheodore Ts'o 		__entry->dev	= inode->i_sb->s_dev;
2327ff9c073STheodore Ts'o 		__entry->ino	= inode->i_ino;
2337ff9c073STheodore Ts'o 		__entry->dir	= dir->i_ino;
2347ff9c073STheodore Ts'o 		__entry->mode	= mode;
2350562e0baSJiaying Zhang 	),
2367ff9c073STheodore Ts'o 
2377ff9c073STheodore Ts'o 	TP_printk("dev %d,%d ino %lu dir %lu mode 0%o",
2387ff9c073STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2397ff9c073STheodore Ts'o 		  (unsigned long) __entry->ino,
2407ff9c073STheodore Ts'o 		  (unsigned long) __entry->dir, __entry->mode)
2410562e0baSJiaying Zhang );
2427ff9c073STheodore Ts'o 
2437ff9c073STheodore Ts'o TRACE_EVENT(ext4_evict_inode,
2447ff9c073STheodore Ts'o 	TP_PROTO(struct inode *inode),
2457ff9c073STheodore Ts'o 
2467ff9c073STheodore Ts'o 	TP_ARGS(inode),
2470562e0baSJiaying Zhang 
2487ff9c073STheodore Ts'o 	TP_STRUCT__entry(
2497ff9c073STheodore Ts'o 		__field(	dev_t,	dev			)
2507ff9c073STheodore Ts'o 		__field(	ino_t,	ino			)
2517ff9c073STheodore Ts'o 		__field(	int,	nlink			)
2527ff9c073STheodore Ts'o 	),
2537ff9c073STheodore Ts'o 
2547ff9c073STheodore Ts'o 	TP_fast_assign(
2557ff9c073STheodore Ts'o 		__entry->dev	= inode->i_sb->s_dev;
2567ff9c073STheodore Ts'o 		__entry->ino	= inode->i_ino;
2570562e0baSJiaying Zhang 		__entry->nlink	= inode->i_nlink;
2587ff9c073STheodore Ts'o 	),
2597ff9c073STheodore Ts'o 
2607ff9c073STheodore Ts'o 	TP_printk("dev %d,%d ino %lu nlink %d",
2617ff9c073STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2627ff9c073STheodore Ts'o 		  (unsigned long) __entry->ino, __entry->nlink)
2630562e0baSJiaying Zhang );
2647ff9c073STheodore Ts'o 
2657ff9c073STheodore Ts'o TRACE_EVENT(ext4_drop_inode,
2667ff9c073STheodore Ts'o 	TP_PROTO(struct inode *inode, int drop),
2677ff9c073STheodore Ts'o 
2687ff9c073STheodore Ts'o 	TP_ARGS(inode, drop),
2690562e0baSJiaying Zhang 
2707ff9c073STheodore Ts'o 	TP_STRUCT__entry(
2717ff9c073STheodore Ts'o 		__field(	dev_t,	dev			)
2727ff9c073STheodore Ts'o 		__field(	ino_t,	ino			)
273fde87268STheodore Ts'o 		__field(	int,	drop			)
274fde87268STheodore Ts'o 	),
275fde87268STheodore Ts'o 
276fde87268STheodore Ts'o 	TP_fast_assign(
277fde87268STheodore Ts'o 		__entry->dev	= inode->i_sb->s_dev;
278fde87268STheodore Ts'o 		__entry->ino	= inode->i_ino;
279fde87268STheodore Ts'o 		__entry->drop	= drop;
280fde87268STheodore Ts'o 	),
281fde87268STheodore Ts'o 
282fde87268STheodore Ts'o 	TP_printk("dev %d,%d ino %lu drop %d",
283fde87268STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
284fde87268STheodore Ts'o 		  (unsigned long) __entry->ino, __entry->drop)
285fde87268STheodore Ts'o );
286fde87268STheodore Ts'o 
287fde87268STheodore Ts'o TRACE_EVENT(ext4_nfs_commit_metadata,
288fde87268STheodore Ts'o 	TP_PROTO(struct inode *inode),
289fde87268STheodore Ts'o 
290fde87268STheodore Ts'o 	TP_ARGS(inode),
291fde87268STheodore Ts'o 
292fde87268STheodore Ts'o 	TP_STRUCT__entry(
2937ff9c073STheodore Ts'o 		__field(	dev_t,	dev			)
2947ff9c073STheodore Ts'o 		__field(	ino_t,	ino			)
2957ff9c073STheodore Ts'o 	),
2967ff9c073STheodore Ts'o 
2977ff9c073STheodore Ts'o 	TP_fast_assign(
2987ff9c073STheodore Ts'o 		__entry->dev	= inode->i_sb->s_dev;
2990562e0baSJiaying Zhang 		__entry->ino	= inode->i_ino;
3007ff9c073STheodore Ts'o 	),
3017ff9c073STheodore Ts'o 
3027ff9c073STheodore Ts'o 	TP_printk("dev %d,%d ino %lu",
3037ff9c073STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
3047ff9c073STheodore Ts'o 		  (unsigned long) __entry->ino)
3050562e0baSJiaying Zhang );
3067ff9c073STheodore Ts'o 
3077ff9c073STheodore Ts'o TRACE_EVENT(ext4_mark_inode_dirty,
3087ff9c073STheodore Ts'o 	TP_PROTO(struct inode *inode, unsigned long IP),
3097ff9c073STheodore Ts'o 
310bbedb179SScott Wood 	TP_ARGS(inode, IP),
3110562e0baSJiaying Zhang 
3127ff9c073STheodore Ts'o 	TP_STRUCT__entry(
3137ff9c073STheodore Ts'o 		__field(	dev_t,	dev			)
3147ff9c073STheodore Ts'o 		__field(	ino_t,	ino			)
3157ff9c073STheodore Ts'o 		__field(unsigned long,	ip			)
3167ff9c073STheodore Ts'o 	),
3177ff9c073STheodore Ts'o 
3187ff9c073STheodore Ts'o 	TP_fast_assign(
3197ff9c073STheodore Ts'o 		__entry->dev	= inode->i_sb->s_dev;
3207ff9c073STheodore Ts'o 		__entry->ino	= inode->i_ino;
3210562e0baSJiaying Zhang 		__entry->ip	= IP;
3227ff9c073STheodore Ts'o 	),
3237ff9c073STheodore Ts'o 
3247ff9c073STheodore Ts'o 	TP_printk("dev %d,%d ino %lu caller %pS",
3257ff9c073STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
3267ff9c073STheodore Ts'o 		  (unsigned long) __entry->ino, (void *)__entry->ip)
3270562e0baSJiaying Zhang );
3287ff9c073STheodore Ts'o 
3297ff9c073STheodore Ts'o TRACE_EVENT(ext4_begin_ordered_truncate,
3307ff9c073STheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t new_size),
3317ff9c073STheodore Ts'o 
3327ff9c073STheodore Ts'o 	TP_ARGS(inode, new_size),
3330562e0baSJiaying Zhang 
3347ff9c073STheodore Ts'o 	TP_STRUCT__entry(
335a9c667f8SLukas Czerner 		__field(	dev_t,	dev			)
3367ff9c073STheodore Ts'o 		__field(	ino_t,	ino			)
3377ff9c073STheodore Ts'o 		__field(	loff_t,	new_size		)
338b5eb34c3SLi Zefan 	),
3399bffad1eSTheodore Ts'o 
3409d6b0cd7SMatthew Wilcox (Oracle) 	TP_fast_assign(
3419bffad1eSTheodore Ts'o 		__entry->dev		= inode->i_sb->s_dev;
3429d6b0cd7SMatthew Wilcox (Oracle) 		__entry->ino		= inode->i_ino;
3439bffad1eSTheodore Ts'o 		__entry->new_size	= new_size;
3449bffad1eSTheodore Ts'o 	),
3450562e0baSJiaying Zhang 
3469bffad1eSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu new_size %lld",
3479bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
3489bffad1eSTheodore Ts'o 		  (unsigned long) __entry->ino,
3499bffad1eSTheodore Ts'o 		  __entry->new_size)
3509bffad1eSTheodore Ts'o );
3519bffad1eSTheodore Ts'o 
3520562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__write_begin,
3539bffad1eSTheodore Ts'o 
3549bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len),
3559bffad1eSTheodore Ts'o 
3569bffad1eSTheodore Ts'o 	TP_ARGS(inode, pos, len),
3579bffad1eSTheodore Ts'o 
3589d6b0cd7SMatthew Wilcox (Oracle) 	TP_STRUCT__entry(
3590562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
360a269029dSTheodore Ts'o 		__field(	ino_t,	ino			)
3619d6b0cd7SMatthew Wilcox (Oracle) 		__field(	loff_t,	pos			)
3629bffad1eSTheodore Ts'o 		__field(	unsigned int, len		)
3639bffad1eSTheodore Ts'o 	),
364b5eb34c3SLi Zefan 
365b5eb34c3SLi Zefan 	TP_fast_assign(
3669d6b0cd7SMatthew Wilcox (Oracle) 		__entry->dev	= inode->i_sb->s_dev;
367b5eb34c3SLi Zefan 		__entry->ino	= inode->i_ino;
3689d6b0cd7SMatthew Wilcox (Oracle) 		__entry->pos	= pos;
369b5eb34c3SLi Zefan 		__entry->len	= len;
370b5eb34c3SLi Zefan 	),
371b5eb34c3SLi Zefan 
372b5eb34c3SLi Zefan 	TP_printk("dev %d,%d ino %lu pos %lld len %u",
3739d6b0cd7SMatthew Wilcox (Oracle) 		  MAJOR(__entry->dev), MINOR(__entry->dev),
374b5eb34c3SLi Zefan 		  (unsigned long) __entry->ino,
3759d6b0cd7SMatthew Wilcox (Oracle) 		  __entry->pos, __entry->len)
376b5eb34c3SLi Zefan );
377b5eb34c3SLi Zefan 
378b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_begin, ext4_write_begin,
3799bffad1eSTheodore Ts'o 
3809bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len),
3819bffad1eSTheodore Ts'o 
3829bffad1eSTheodore Ts'o 	TP_ARGS(inode, pos, len)
3839bffad1eSTheodore Ts'o );
3849bffad1eSTheodore Ts'o 
3850562e0baSJiaying Zhang DEFINE_EVENT(ext4__write_begin, ext4_da_write_begin,
3869bffad1eSTheodore Ts'o 
3879bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len),
3889bffad1eSTheodore Ts'o 
3899bffad1eSTheodore Ts'o 	TP_ARGS(inode, pos, len)
3909bffad1eSTheodore Ts'o );
3919bffad1eSTheodore Ts'o 
3929bffad1eSTheodore Ts'o DECLARE_EVENT_CLASS(ext4__write_end,
3930562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
3949bffad1eSTheodore Ts'o 			unsigned int copied),
3959bffad1eSTheodore Ts'o 
3969bffad1eSTheodore Ts'o 	TP_ARGS(inode, pos, len, copied),
3979bffad1eSTheodore Ts'o 
3989bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
3999bffad1eSTheodore Ts'o 		__field(	dev_t,	dev			)
400a9c667f8SLukas Czerner 		__field(	ino_t,	ino			)
4010562e0baSJiaying Zhang 		__field(	loff_t,	pos			)
4020562e0baSJiaying Zhang 		__field(	unsigned int, len		)
4030562e0baSJiaying Zhang 		__field(	unsigned int, copied		)
4049bffad1eSTheodore Ts'o 	),
4059bffad1eSTheodore Ts'o 
40674d553aaSTheodore Ts'o 	TP_fast_assign(
407b5eb34c3SLi Zefan 		__entry->dev	= inode->i_sb->s_dev;
4089bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
4099bffad1eSTheodore Ts'o 		__entry->pos	= pos;
4109bffad1eSTheodore Ts'o 		__entry->len	= len;
411b5eb34c3SLi Zefan 		__entry->copied	= copied;
412b5eb34c3SLi Zefan 	),
4139bffad1eSTheodore Ts'o 
414b5eb34c3SLi Zefan 	TP_printk("dev %d,%d ino %lu pos %lld len %u copied %u",
4159bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
416b5eb34c3SLi Zefan 		  (unsigned long) __entry->ino,
417b5eb34c3SLi Zefan 		  __entry->pos, __entry->len, __entry->copied)
418b5eb34c3SLi Zefan );
419b5eb34c3SLi Zefan 
420b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_end, ext4_write_end,
421b5eb34c3SLi Zefan 
422b5eb34c3SLi Zefan 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
423b5eb34c3SLi Zefan 		 unsigned int copied),
424b5eb34c3SLi Zefan 
425b5eb34c3SLi Zefan 	TP_ARGS(inode, pos, len, copied)
426b5eb34c3SLi Zefan );
427b5eb34c3SLi Zefan 
4289bffad1eSTheodore Ts'o DEFINE_EVENT(ext4__write_end, ext4_journalled_write_end,
4299bffad1eSTheodore Ts'o 
43020970ba6STheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
4319bffad1eSTheodore Ts'o 		 unsigned int copied),
4329bffad1eSTheodore Ts'o 
4339bffad1eSTheodore Ts'o 	TP_ARGS(inode, pos, len, copied)
4349bffad1eSTheodore Ts'o );
4359bffad1eSTheodore Ts'o 
4360562e0baSJiaying Zhang DEFINE_EVENT(ext4__write_end, ext4_da_write_end,
4379bffad1eSTheodore Ts'o 
4389bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
4399bffad1eSTheodore Ts'o 		 unsigned int copied),
4409bffad1eSTheodore Ts'o 
4419bffad1eSTheodore Ts'o 	TP_ARGS(inode, pos, len, copied)
442210c0526SAnatol Pomozov );
4430562e0baSJiaying Zhang 
4449bffad1eSTheodore Ts'o TRACE_EVENT(ext4_writepages,
4459bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, struct writeback_control *wbc),
4469bffad1eSTheodore Ts'o 
4479bffad1eSTheodore Ts'o 	TP_ARGS(inode, wbc),
4489bffad1eSTheodore Ts'o 
4490562e0baSJiaying Zhang 	TP_STRUCT__entry(
4509bffad1eSTheodore Ts'o 		__field(	dev_t,	dev			)
4519bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
4529bffad1eSTheodore Ts'o 		__field(	long,	nr_to_write		)
4539bffad1eSTheodore Ts'o 		__field(	long,	pages_skipped		)
4549bffad1eSTheodore Ts'o 		__field(	loff_t,	range_start		)
455210c0526SAnatol Pomozov 		__field(	loff_t,	range_end		)
4560562e0baSJiaying Zhang 		__field(       pgoff_t,	writeback_index		)
4579bffad1eSTheodore Ts'o 		__field(	int,	sync_mode		)
4589bffad1eSTheodore Ts'o 		__field(	char,	for_kupdate		)
4599bffad1eSTheodore Ts'o 		__field(	char,	range_cyclic		)
4609bffad1eSTheodore Ts'o 	),
461a107e5a3STheodore Ts'o 
462a9c667f8SLukas Czerner 	TP_fast_assign(
4630562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
4640562e0baSJiaying Zhang 		__entry->ino		= inode->i_ino;
465a3710fd1STheodore Ts'o 		__entry->nr_to_write	= wbc->nr_to_write;
4669bffad1eSTheodore Ts'o 		__entry->pages_skipped	= wbc->pages_skipped;
4670562e0baSJiaying Zhang 		__entry->range_start	= wbc->range_start;
4680562e0baSJiaying Zhang 		__entry->range_end	= wbc->range_end;
46955138e0bSTheodore Ts'o 		__entry->writeback_index = inode->i_mapping->writeback_index;
4709bffad1eSTheodore Ts'o 		__entry->sync_mode	= wbc->sync_mode;
4719bffad1eSTheodore Ts'o 		__entry->for_kupdate	= wbc->for_kupdate;
472b3a3ca8cSTheodore Ts'o 		__entry->range_cyclic	= wbc->range_cyclic;
4734e7ea81dSJan Kara 	),
4744e7ea81dSJan Kara 
475b3a3ca8cSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu nr_to_write %ld pages_skipped %ld "
4764e7ea81dSJan Kara 		  "range_start %lld range_end %lld sync_mode %d "
477b3a3ca8cSTheodore Ts'o 		  "for_kupdate %d range_cyclic %d writeback_index %lu",
478b3a3ca8cSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
4790562e0baSJiaying Zhang 		  (unsigned long) __entry->ino, __entry->nr_to_write,
480b3a3ca8cSTheodore Ts'o 		  __entry->pages_skipped, __entry->range_start,
4814e7ea81dSJan Kara 		  __entry->range_end, __entry->sync_mode,
4824e7ea81dSJan Kara 		  __entry->for_kupdate, __entry->range_cyclic,
4830562e0baSJiaying Zhang 		  (unsigned long) __entry->writeback_index)
484b3a3ca8cSTheodore Ts'o );
485b3a3ca8cSTheodore Ts'o 
486b3a3ca8cSTheodore Ts'o TRACE_EVENT(ext4_da_write_pages,
4870562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, pgoff_t first_page,
488b3a3ca8cSTheodore Ts'o 		 struct writeback_control *wbc),
4894e7ea81dSJan Kara 
4904e7ea81dSJan Kara 	TP_ARGS(inode, first_page, wbc),
4914e7ea81dSJan Kara 
492b3a3ca8cSTheodore Ts'o 	TP_STRUCT__entry(
493b3a3ca8cSTheodore Ts'o 		__field(	dev_t,	dev			)
4944e7ea81dSJan Kara 		__field(	ino_t,	ino			)
4954e7ea81dSJan Kara 		__field(      pgoff_t,	first_page		)
4960562e0baSJiaying Zhang 		__field(	 long,	nr_to_write		)
4974e7ea81dSJan Kara 		__field(	  int,	sync_mode		)
4984e7ea81dSJan Kara 	),
4994e7ea81dSJan Kara 
5004e7ea81dSJan Kara 	TP_fast_assign(
5014e7ea81dSJan Kara 		__entry->dev		= inode->i_sb->s_dev;
5024e7ea81dSJan Kara 		__entry->ino		= inode->i_ino;
5034e7ea81dSJan Kara 		__entry->first_page	= first_page;
5044e7ea81dSJan Kara 		__entry->nr_to_write	= wbc->nr_to_write;
5054e7ea81dSJan Kara 		__entry->sync_mode	= wbc->sync_mode;
5064e7ea81dSJan Kara 	),
5074e7ea81dSJan Kara 
5084e7ea81dSJan Kara 	TP_printk("dev %d,%d ino %lu first_page %lu nr_to_write %ld "
5094e7ea81dSJan Kara 		  "sync_mode %d",
5104e7ea81dSJan Kara 		  MAJOR(__entry->dev), MINOR(__entry->dev),
5114e7ea81dSJan Kara 		  (unsigned long) __entry->ino, __entry->first_page,
5124e7ea81dSJan Kara 		  __entry->nr_to_write, __entry->sync_mode)
5134e7ea81dSJan Kara );
5144e7ea81dSJan Kara 
5154e7ea81dSJan Kara TRACE_EVENT(ext4_da_write_pages_extent,
5164e7ea81dSJan Kara 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map),
5174e7ea81dSJan Kara 
5184e7ea81dSJan Kara 	TP_ARGS(inode, map),
5194e7ea81dSJan Kara 
5204e7ea81dSJan Kara 	TP_STRUCT__entry(
5214e7ea81dSJan Kara 		__field(	dev_t,	dev			)
52221ddd568STheodore Ts'o 		__field(	ino_t,	ino			)
5234e7ea81dSJan Kara 		__field(	__u64,	lblk			)
5244e7ea81dSJan Kara 		__field(	__u32,	len			)
52521ddd568STheodore Ts'o 		__field(	__u32,	flags			)
526b3a3ca8cSTheodore Ts'o 	),
527b3a3ca8cSTheodore Ts'o 
52820970ba6STheodore Ts'o 	TP_fast_assign(
5299bffad1eSTheodore Ts'o 		__entry->dev		= inode->i_sb->s_dev;
5309bffad1eSTheodore Ts'o 		__entry->ino		= inode->i_ino;
5319bffad1eSTheodore Ts'o 		__entry->lblk		= map->m_lblk;
5329bffad1eSTheodore Ts'o 		__entry->len		= map->m_len;
5339bffad1eSTheodore Ts'o 		__entry->flags		= map->m_flags;
5349bffad1eSTheodore Ts'o 	),
5350562e0baSJiaying Zhang 
5369bffad1eSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu lblk %llu len %u flags %s",
5379bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
5389bffad1eSTheodore Ts'o 		  (unsigned long) __entry->ino, __entry->lblk, __entry->len,
5399bffad1eSTheodore Ts'o 		  show_mflags(__entry->flags))
54055138e0bSTheodore Ts'o );
541210c0526SAnatol Pomozov 
5429bffad1eSTheodore Ts'o TRACE_EVENT(ext4_writepages_result,
5439bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, struct writeback_control *wbc,
5449bffad1eSTheodore Ts'o 			int ret, int pages_written),
5450562e0baSJiaying Zhang 
5469bffad1eSTheodore Ts'o 	TP_ARGS(inode, wbc, ret, pages_written),
5479bffad1eSTheodore Ts'o 
5489bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
5499bffad1eSTheodore Ts'o 		__field(	dev_t,	dev			)
55055138e0bSTheodore Ts'o 		__field(	ino_t,	ino			)
551210c0526SAnatol Pomozov 		__field(	int,	ret			)
5529bffad1eSTheodore Ts'o 		__field(	int,	pages_written		)
5539bffad1eSTheodore Ts'o 		__field(	long,	pages_skipped		)
5540562e0baSJiaying Zhang 		__field(       pgoff_t,	writeback_index		)
555b7a2441fSWu Fengguang 		__field(	int,	sync_mode		)
5560562e0baSJiaying Zhang 	),
557a3710fd1STheodore Ts'o 
5589bffad1eSTheodore Ts'o 	TP_fast_assign(
559b7a2441fSWu Fengguang 		__entry->dev		= inode->i_sb->s_dev;
56055138e0bSTheodore Ts'o 		__entry->ino		= inode->i_ino;
5619bffad1eSTheodore Ts'o 		__entry->ret		= ret;
5629bffad1eSTheodore Ts'o 		__entry->pages_written	= pages_written;
5630562e0baSJiaying Zhang 		__entry->pages_skipped	= wbc->pages_skipped;
5640562e0baSJiaying Zhang 		__entry->writeback_index = inode->i_mapping->writeback_index;
5650562e0baSJiaying Zhang 		__entry->sync_mode	= wbc->sync_mode;
5660562e0baSJiaying Zhang 	),
5670562e0baSJiaying Zhang 
5680562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld "
5690562e0baSJiaying Zhang 		  "sync_mode %d writeback_index %lu",
570210c0526SAnatol Pomozov 		  MAJOR(__entry->dev), MINOR(__entry->dev),
571210c0526SAnatol Pomozov 		  (unsigned long) __entry->ino, __entry->ret,
5720562e0baSJiaying Zhang 		  __entry->pages_written, __entry->pages_skipped,
5730562e0baSJiaying Zhang 		  __entry->sync_mode,
5740562e0baSJiaying Zhang 		  (unsigned long) __entry->writeback_index)
5750562e0baSJiaying Zhang );
5760562e0baSJiaying Zhang 
577210c0526SAnatol Pomozov DECLARE_EVENT_CLASS(ext4__folio_op,
578210c0526SAnatol Pomozov 	TP_PROTO(struct inode *inode, struct folio *folio),
5790562e0baSJiaying Zhang 
5800562e0baSJiaying Zhang 	TP_ARGS(inode, folio),
5810562e0baSJiaying Zhang 
5820562e0baSJiaying Zhang 	TP_STRUCT__entry(
5830562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
584a9c667f8SLukas Czerner 		__field(	ino_t,	ino			)
585a9c667f8SLukas Czerner 		__field(	pgoff_t, index			)
586a9c667f8SLukas Czerner 
5870562e0baSJiaying Zhang 	),
5880562e0baSJiaying Zhang 
5890562e0baSJiaying Zhang 	TP_fast_assign(
5900562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
5910562e0baSJiaying Zhang 		__entry->ino	= inode->i_ino;
5920562e0baSJiaying Zhang 		__entry->index	= folio->index;
5930562e0baSJiaying Zhang 	),
5940562e0baSJiaying Zhang 
5950562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu folio_index %lu",
5960562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
5970562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
5980562e0baSJiaying Zhang 		  (unsigned long) __entry->index)
5990562e0baSJiaying Zhang );
6000562e0baSJiaying Zhang 
601ccd16945SMatthew Wilcox (Oracle) DEFINE_EVENT(ext4__folio_op, ext4_read_folio,
602ccd16945SMatthew Wilcox (Oracle) 
6030562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, struct folio *folio),
604ccd16945SMatthew Wilcox (Oracle) 
6050562e0baSJiaying Zhang 	TP_ARGS(inode, folio)
6060562e0baSJiaying Zhang );
607210c0526SAnatol Pomozov 
608210c0526SAnatol Pomozov DEFINE_EVENT(ext4__folio_op, ext4_release_folio,
6090562e0baSJiaying Zhang 
610ccd16945SMatthew Wilcox (Oracle) 	TP_PROTO(struct inode *inode, struct folio *folio),
611ccd16945SMatthew Wilcox (Oracle) 
6120562e0baSJiaying Zhang 	TP_ARGS(inode, folio)
6130562e0baSJiaying Zhang );
6140562e0baSJiaying Zhang 
615ccd16945SMatthew Wilcox (Oracle) DECLARE_EVENT_CLASS(ext4_invalidate_folio_op,
616ccd16945SMatthew Wilcox (Oracle) 	TP_PROTO(struct folio *folio, size_t offset, size_t length),
617ccd16945SMatthew Wilcox (Oracle) 
6180562e0baSJiaying Zhang 	TP_ARGS(folio, offset, length),
619ca99fdd2SLukas Czerner 
6200562e0baSJiaying Zhang 	TP_STRUCT__entry(
6210562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
622ccd16945SMatthew Wilcox (Oracle) 		__field(	ino_t,	ino			)
6230562e0baSJiaying Zhang 		__field(	pgoff_t, index			)
6240562e0baSJiaying Zhang 		__field(	size_t, offset			)
625ca99fdd2SLukas Czerner 		__field(	size_t, length			)
626ca99fdd2SLukas Czerner 	),
6270562e0baSJiaying Zhang 
6280562e0baSJiaying Zhang 	TP_fast_assign(
629ccd16945SMatthew Wilcox (Oracle) 		__entry->dev	= folio->mapping->host->i_sb->s_dev;
630ccd16945SMatthew Wilcox (Oracle) 		__entry->ino	= folio->mapping->host->i_ino;
6314520fb3cSJan Kara 		__entry->index	= folio->index;
632ccd16945SMatthew Wilcox (Oracle) 		__entry->offset	= offset;
6334520fb3cSJan Kara 		__entry->length	= length;
6344520fb3cSJan Kara 	),
635ccd16945SMatthew Wilcox (Oracle) 
636ccd16945SMatthew Wilcox (Oracle) 	TP_printk("dev %d,%d ino %lu folio_index %lu offset %zu length %zu",
6374520fb3cSJan Kara 		  MAJOR(__entry->dev), MINOR(__entry->dev),
638ccd16945SMatthew Wilcox (Oracle) 		  (unsigned long) __entry->ino,
6394520fb3cSJan Kara 		  (unsigned long) __entry->index,
6404520fb3cSJan Kara 		  __entry->offset, __entry->length)
6419bffad1eSTheodore Ts'o );
6429bffad1eSTheodore Ts'o 
6439bffad1eSTheodore Ts'o DEFINE_EVENT(ext4_invalidate_folio_op, ext4_invalidate_folio,
6449bffad1eSTheodore Ts'o 	TP_PROTO(struct folio *folio, size_t offset, size_t length),
6459bffad1eSTheodore Ts'o 
6469bffad1eSTheodore Ts'o 	TP_ARGS(folio, offset, length)
6479bffad1eSTheodore Ts'o );
6480562e0baSJiaying Zhang 
6499bffad1eSTheodore Ts'o DEFINE_EVENT(ext4_invalidate_folio_op, ext4_journalled_invalidate_folio,
6509bffad1eSTheodore Ts'o 	TP_PROTO(struct folio *folio, size_t offset, size_t length),
6519bffad1eSTheodore Ts'o 
6529bffad1eSTheodore Ts'o 	TP_ARGS(folio, offset, length)
6539bffad1eSTheodore Ts'o );
6549bffad1eSTheodore Ts'o 
6550562e0baSJiaying Zhang TRACE_EVENT(ext4_discard_blocks,
6569bffad1eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, unsigned long long blk,
6579bffad1eSTheodore Ts'o 			unsigned long long count),
6589bffad1eSTheodore Ts'o 
6599bffad1eSTheodore Ts'o 	TP_ARGS(sb, blk, count),
660a269029dSTheodore Ts'o 
6610562e0baSJiaying Zhang 	TP_STRUCT__entry(
662a269029dSTheodore Ts'o 		__field(	dev_t,	dev			)
6639bffad1eSTheodore Ts'o 		__field(	__u64,	blk			)
6649bffad1eSTheodore Ts'o 		__field(	__u64,	count			)
665f084db93SLi Zefan 
6669bffad1eSTheodore Ts'o 	),
6679bffad1eSTheodore Ts'o 
6689bffad1eSTheodore Ts'o 	TP_fast_assign(
6699bffad1eSTheodore Ts'o 		__entry->dev	= sb->s_dev;
6709bffad1eSTheodore Ts'o 		__entry->blk	= blk;
6719bffad1eSTheodore Ts'o 		__entry->count	= count;
6720562e0baSJiaying Zhang 	),
6739bffad1eSTheodore Ts'o 
6749bffad1eSTheodore Ts'o 	TP_printk("dev %d,%d blk %llu count %llu",
6759bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
676210c0526SAnatol Pomozov 		  __entry->blk, __entry->count)
6779bffad1eSTheodore Ts'o );
6789bffad1eSTheodore Ts'o 
6799bffad1eSTheodore Ts'o DECLARE_EVENT_CLASS(ext4__mb_new_pa,
6809bffad1eSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_context *ac,
6810562e0baSJiaying Zhang 		 struct ext4_prealloc_space *pa),
6829bffad1eSTheodore Ts'o 
6839bffad1eSTheodore Ts'o 	TP_ARGS(ac, pa),
6849bffad1eSTheodore Ts'o 
685210c0526SAnatol Pomozov 	TP_STRUCT__entry(
6869bffad1eSTheodore Ts'o 		__field(	dev_t,	dev			)
6879bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
688a269029dSTheodore Ts'o 		__field(	__u64,	pa_pstart		)
6890562e0baSJiaying Zhang 		__field(	__u64,	pa_lstart		)
6900562e0baSJiaying Zhang 		__field(	__u32,	pa_len			)
6910562e0baSJiaying Zhang 
6929bffad1eSTheodore Ts'o 	),
6939bffad1eSTheodore Ts'o 
694f084db93SLi Zefan 	TP_fast_assign(
695f084db93SLi Zefan 		__entry->dev		= ac->ac_sb->s_dev;
6969bffad1eSTheodore Ts'o 		__entry->ino		= ac->ac_inode->i_ino;
6979bffad1eSTheodore Ts'o 		__entry->pa_pstart	= pa->pa_pstart;
6989bffad1eSTheodore Ts'o 		__entry->pa_lstart	= pa->pa_lstart;
699f084db93SLi Zefan 		__entry->pa_len		= pa->pa_len;
700f084db93SLi Zefan 	),
7019bffad1eSTheodore Ts'o 
702f084db93SLi Zefan 	TP_printk("dev %d,%d ino %lu pstart %llu len %u lstart %llu",
7039bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
704f084db93SLi Zefan 		  (unsigned long) __entry->ino,
705f084db93SLi Zefan 		  __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart)
7069bffad1eSTheodore Ts'o );
707f084db93SLi Zefan 
7089bffad1eSTheodore Ts'o DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_inode_pa,
7099bffad1eSTheodore Ts'o 
7109bffad1eSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_context *ac,
711a9c667f8SLukas Czerner 		 struct ext4_prealloc_space *pa),
7129bffad1eSTheodore Ts'o 
7139bffad1eSTheodore Ts'o 	TP_ARGS(ac, pa)
714a9c667f8SLukas Czerner );
7159bffad1eSTheodore Ts'o 
7169bffad1eSTheodore Ts'o DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_group_pa,
7170562e0baSJiaying Zhang 
7189bffad1eSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_context *ac,
7199bffad1eSTheodore Ts'o 		 struct ext4_prealloc_space *pa),
7209bffad1eSTheodore Ts'o 
7219bffad1eSTheodore Ts'o 	TP_ARGS(ac, pa)
7229bffad1eSTheodore Ts'o );
7239bffad1eSTheodore Ts'o 
7249bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_release_inode_pa,
725a9c667f8SLukas Czerner 	TP_PROTO(struct ext4_prealloc_space *pa,
726a9c667f8SLukas Czerner 		 unsigned long long block, unsigned int count),
7279bffad1eSTheodore Ts'o 
7289bffad1eSTheodore Ts'o 	TP_ARGS(pa, block, count),
7299bffad1eSTheodore Ts'o 
7309bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
731a269029dSTheodore Ts'o 		__field(	dev_t,	dev			)
7320562e0baSJiaying Zhang 		__field(	ino_t,	ino			)
7330562e0baSJiaying Zhang 		__field(	__u64,	block			)
7340562e0baSJiaying Zhang 		__field(	__u32,	count			)
7359bffad1eSTheodore Ts'o 
7369bffad1eSTheodore Ts'o 	),
7379bffad1eSTheodore Ts'o 
73860e07cf5SYongqiang Yang 	TP_fast_assign(
7399bffad1eSTheodore Ts'o 		__entry->dev		= pa->pa_inode->i_sb->s_dev;
74060e07cf5SYongqiang Yang 		__entry->ino		= pa->pa_inode->i_ino;
7419bffad1eSTheodore Ts'o 		__entry->block		= block;
7429bffad1eSTheodore Ts'o 		__entry->count		= count;
7430562e0baSJiaying Zhang 	),
7449bffad1eSTheodore Ts'o 
7459bffad1eSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu block %llu count %u",
7469bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
7479bffad1eSTheodore Ts'o 		  (unsigned long) __entry->ino,
7489bffad1eSTheodore Ts'o 		  __entry->block, __entry->count)
7499bffad1eSTheodore Ts'o );
75060e07cf5SYongqiang Yang 
7519bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_release_group_pa,
7529bffad1eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, struct ext4_prealloc_space *pa),
7539bffad1eSTheodore Ts'o 
7549bffad1eSTheodore Ts'o 	TP_ARGS(sb, pa),
755a269029dSTheodore Ts'o 
7560562e0baSJiaying Zhang 	TP_STRUCT__entry(
757a269029dSTheodore Ts'o 		__field(	dev_t,	dev			)
7589bffad1eSTheodore Ts'o 		__field(	__u64,	pa_pstart		)
7599bffad1eSTheodore Ts'o 		__field(	__u32,	pa_len			)
7609bffad1eSTheodore Ts'o 
76127bc446eSbrookxu 	),
7629bffad1eSTheodore Ts'o 
76327bc446eSbrookxu 	TP_fast_assign(
7649bffad1eSTheodore Ts'o 		__entry->dev		= sb->s_dev;
7659bffad1eSTheodore Ts'o 		__entry->pa_pstart	= pa->pa_pstart;
7660562e0baSJiaying Zhang 		__entry->pa_len		= pa->pa_len;
7679bffad1eSTheodore Ts'o 	),
76827bc446eSbrookxu 
76927bc446eSbrookxu 	TP_printk("dev %d,%d pstart %llu len %u",
7709bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
7719bffad1eSTheodore Ts'o 		  __entry->pa_pstart, __entry->pa_len)
7729bffad1eSTheodore Ts'o );
7739bffad1eSTheodore Ts'o 
7740562e0baSJiaying Zhang TRACE_EVENT(ext4_discard_preallocations,
7759bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, unsigned int len, unsigned int needed),
77627bc446eSbrookxu 
77727bc446eSbrookxu 	TP_ARGS(inode, len, needed),
7789bffad1eSTheodore Ts'o 
7799bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
78027bc446eSbrookxu 		__field(	dev_t,		dev		)
7810562e0baSJiaying Zhang 		__field(	ino_t,		ino		)
78227bc446eSbrookxu 		__field(	unsigned int,	len		)
78327bc446eSbrookxu 		__field(	unsigned int,	needed		)
7849bffad1eSTheodore Ts'o 
7859bffad1eSTheodore Ts'o 	),
7869bffad1eSTheodore Ts'o 
7879bffad1eSTheodore Ts'o 	TP_fast_assign(
7889bffad1eSTheodore Ts'o 		__entry->dev	= inode->i_sb->s_dev;
7899bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
7909bffad1eSTheodore Ts'o 		__entry->len	= len;
7919bffad1eSTheodore Ts'o 		__entry->needed	= needed;
7920562e0baSJiaying Zhang 	),
7939bffad1eSTheodore Ts'o 
7949bffad1eSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu len: %u needed %u",
7959bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
7969bffad1eSTheodore Ts'o 		  (unsigned long) __entry->ino, __entry->len,
7979bffad1eSTheodore Ts'o 		  __entry->needed)
7980562e0baSJiaying Zhang );
7999bffad1eSTheodore Ts'o 
8009bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_discard_preallocations,
8019bffad1eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, int needed),
802a269029dSTheodore Ts'o 
8030562e0baSJiaying Zhang 	TP_ARGS(sb, needed),
8040562e0baSJiaying Zhang 
8059bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
8069bffad1eSTheodore Ts'o 		__field(	dev_t,	dev			)
8079bffad1eSTheodore Ts'o 		__field(	int,	needed			)
8089bffad1eSTheodore Ts'o 
8099bffad1eSTheodore Ts'o 	),
8109bffad1eSTheodore Ts'o 
8119bffad1eSTheodore Ts'o 	TP_fast_assign(
8129bffad1eSTheodore Ts'o 		__entry->dev	= sb->s_dev;
8130562e0baSJiaying Zhang 		__entry->needed	= needed;
8149bffad1eSTheodore Ts'o 	),
8159bffad1eSTheodore Ts'o 
816a9c667f8SLukas Czerner 	TP_printk("dev %d,%d needed %d",
817a9c667f8SLukas Czerner 		  MAJOR(__entry->dev), MINOR(__entry->dev),
818a9c667f8SLukas Czerner 		  __entry->needed)
8199bffad1eSTheodore Ts'o );
8209bffad1eSTheodore Ts'o 
8219bffad1eSTheodore Ts'o TRACE_EVENT(ext4_request_blocks,
822210c0526SAnatol Pomozov 	TP_PROTO(struct ext4_allocation_request *ar),
8239bffad1eSTheodore Ts'o 
8249bffad1eSTheodore Ts'o 	TP_ARGS(ar),
8259bffad1eSTheodore Ts'o 
8260562e0baSJiaying Zhang 	TP_STRUCT__entry(
8279bffad1eSTheodore Ts'o 		__field(	dev_t,	dev			)
8289bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
8299bffad1eSTheodore Ts'o 		__field(	unsigned int, len		)
8309bffad1eSTheodore Ts'o 		__field(	__u32,  logical			)
8319bffad1eSTheodore Ts'o 		__field(	__u32,	lleft			)
8329bffad1eSTheodore Ts'o 		__field(	__u32,	lright			)
8339bffad1eSTheodore Ts'o 		__field(	__u64,	goal			)
8349bffad1eSTheodore Ts'o 		__field(	__u64,	pleft			)
835210c0526SAnatol Pomozov 		__field(	__u64,	pright			)
8369bffad1eSTheodore Ts'o 		__field(	unsigned int, flags		)
8379bffad1eSTheodore Ts'o 	),
83821ddd568STheodore Ts'o 
839a9c667f8SLukas Czerner 	TP_fast_assign(
8400562e0baSJiaying Zhang 		__entry->dev	= ar->inode->i_sb->s_dev;
84121ddd568STheodore Ts'o 		__entry->ino	= ar->inode->i_ino;
842a9c667f8SLukas Czerner 		__entry->len	= ar->len;
843a9c667f8SLukas Czerner 		__entry->logical = ar->logical;
844a9c667f8SLukas Czerner 		__entry->goal	= ar->goal;
8459bffad1eSTheodore Ts'o 		__entry->lleft	= ar->lleft;
8469bffad1eSTheodore Ts'o 		__entry->lright	= ar->lright;
8479bffad1eSTheodore Ts'o 		__entry->pleft	= ar->pleft;
8489bffad1eSTheodore Ts'o 		__entry->pright	= ar->pright;
8499bffad1eSTheodore Ts'o 		__entry->flags	= ar->flags;
8509bffad1eSTheodore Ts'o 	),
8519bffad1eSTheodore Ts'o 
8529bffad1eSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu flags %s len %u lblk %u goal %llu "
8530562e0baSJiaying Zhang 		  "lleft %u lright %u pleft %llu pright %llu ",
8549bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
8559bffad1eSTheodore Ts'o 		  (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
8569bffad1eSTheodore Ts'o 		  __entry->len, __entry->logical, __entry->goal,
857a9c667f8SLukas Czerner 		  __entry->lleft, __entry->lright, __entry->pleft,
858a9c667f8SLukas Czerner 		  __entry->pright)
859a9c667f8SLukas Czerner );
8609bffad1eSTheodore Ts'o 
8619bffad1eSTheodore Ts'o TRACE_EVENT(ext4_allocate_blocks,
8629bffad1eSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_request *ar, unsigned long long block),
863210c0526SAnatol Pomozov 
8649bffad1eSTheodore Ts'o 	TP_ARGS(ar, block),
8659bffad1eSTheodore Ts'o 
8669bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
8670562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
8689bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
8699bffad1eSTheodore Ts'o 		__field(	__u64,	block			)
8709bffad1eSTheodore Ts'o 		__field(	unsigned int, len		)
8719bffad1eSTheodore Ts'o 		__field(	__u32,  logical			)
8729bffad1eSTheodore Ts'o 		__field(	__u32,	lleft			)
8739bffad1eSTheodore Ts'o 		__field(	__u32,	lright			)
8749bffad1eSTheodore Ts'o 		__field(	__u64,	goal			)
8759bffad1eSTheodore Ts'o 		__field(	__u64,	pleft			)
8769bffad1eSTheodore Ts'o 		__field(	__u64,	pright			)
877210c0526SAnatol Pomozov 		__field(	unsigned int, flags		)
8789bffad1eSTheodore Ts'o 	),
8799bffad1eSTheodore Ts'o 
88021ddd568STheodore Ts'o 	TP_fast_assign(
881a9c667f8SLukas Czerner 		__entry->dev	= ar->inode->i_sb->s_dev;
8820562e0baSJiaying Zhang 		__entry->ino	= ar->inode->i_ino;
88321ddd568STheodore Ts'o 		__entry->block	= block;
884a9c667f8SLukas Czerner 		__entry->len	= ar->len;
885a9c667f8SLukas Czerner 		__entry->logical = ar->logical;
886a9c667f8SLukas Czerner 		__entry->goal	= ar->goal;
8879bffad1eSTheodore Ts'o 		__entry->lleft	= ar->lleft;
8889bffad1eSTheodore Ts'o 		__entry->lright	= ar->lright;
8899bffad1eSTheodore Ts'o 		__entry->pleft	= ar->pleft;
8909bffad1eSTheodore Ts'o 		__entry->pright	= ar->pright;
891e6362609STheodore Ts'o 		__entry->flags	= ar->flags;
8929bffad1eSTheodore Ts'o 	),
893e6362609STheodore Ts'o 
8949bffad1eSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu flags %s len %u block %llu lblk %u "
8959bffad1eSTheodore Ts'o 		  "goal %llu lleft %u lright %u pleft %llu pright %llu",
8960562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
8979bffad1eSTheodore Ts'o 		  (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
8989bffad1eSTheodore Ts'o 		  __entry->len, __entry->block, __entry->logical,
8999bffad1eSTheodore Ts'o 		  __entry->goal,  __entry->lleft, __entry->lright,
900e6362609STheodore Ts'o 		  __entry->pleft, __entry->pright)
901210c0526SAnatol Pomozov );
9029bffad1eSTheodore Ts'o 
9039bffad1eSTheodore Ts'o TRACE_EVENT(ext4_free_blocks,
9049bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, __u64 block, unsigned long count,
9050562e0baSJiaying Zhang 		 int flags),
9069bffad1eSTheodore Ts'o 
9079bffad1eSTheodore Ts'o 	TP_ARGS(inode, block, count, flags),
9089bffad1eSTheodore Ts'o 
909e6362609STheodore Ts'o 	TP_STRUCT__entry(
910210c0526SAnatol Pomozov 		__field(	dev_t,	dev			)
9119bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
9129bffad1eSTheodore Ts'o 		__field(	__u64,	block			)
91321ddd568STheodore Ts'o 		__field(	unsigned long,	count		)
9140562e0baSJiaying Zhang 		__field(	int,	flags			)
915a269029dSTheodore Ts'o 		__field(	__u16,	mode			)
916e6362609STheodore Ts'o 	),
91721ddd568STheodore Ts'o 
9189bffad1eSTheodore Ts'o 	TP_fast_assign(
9199bffad1eSTheodore Ts'o 		__entry->dev		= inode->i_sb->s_dev;
9200562e0baSJiaying Zhang 		__entry->ino		= inode->i_ino;
9217ea80859SChristoph Hellwig 		__entry->block		= block;
9229bffad1eSTheodore Ts'o 		__entry->count		= count;
9237ea80859SChristoph Hellwig 		__entry->flags		= flags;
9249bffad1eSTheodore Ts'o 		__entry->mode		= inode->i_mode;
9259bffad1eSTheodore Ts'o 	),
9260562e0baSJiaying Zhang 
9279bffad1eSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %s",
9289bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
9299bffad1eSTheodore Ts'o 		  (unsigned long) __entry->ino,
9309bffad1eSTheodore Ts'o 		  __entry->mode, __entry->block, __entry->count,
9319bffad1eSTheodore Ts'o 		  show_free_flags(__entry->flags))
9329bffad1eSTheodore Ts'o );
9337ea80859SChristoph Hellwig 
9347ea80859SChristoph Hellwig TRACE_EVENT(ext4_sync_file_enter,
935fc64005cSAl Viro 	TP_PROTO(struct file *file, int datasync),
9362b0143b5SDavid Howells 
9379bffad1eSTheodore Ts'o 	TP_ARGS(file, datasync),
9382b0143b5SDavid Howells 
9399bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
9409bffad1eSTheodore Ts'o 		__field(	dev_t,	dev			)
941a9c667f8SLukas Czerner 		__field(	ino_t,	ino			)
9420562e0baSJiaying Zhang 		__field(	ino_t,	parent			)
943a269029dSTheodore Ts'o 		__field(	int,	datasync		)
944a3710fd1STheodore Ts'o 	),
9459bffad1eSTheodore Ts'o 
9469bffad1eSTheodore Ts'o 	TP_fast_assign(
9470562e0baSJiaying Zhang 		struct dentry *dentry = file->f_path.dentry;
9480562e0baSJiaying Zhang 
9490562e0baSJiaying Zhang 		__entry->dev		= dentry->d_sb->s_dev;
9500562e0baSJiaying Zhang 		__entry->ino		= d_inode(dentry)->i_ino;
9510562e0baSJiaying Zhang 		__entry->datasync	= datasync;
9520562e0baSJiaying Zhang 		__entry->parent		= d_inode(dentry->d_parent)->i_ino;
9530562e0baSJiaying Zhang 	),
954210c0526SAnatol Pomozov 
955210c0526SAnatol Pomozov 	TP_printk("dev %d,%d ino %lu parent %lu datasync %d ",
9560562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
9570562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
9580562e0baSJiaying Zhang 		  (unsigned long) __entry->parent, __entry->datasync)
9590562e0baSJiaying Zhang );
960210c0526SAnatol Pomozov 
961210c0526SAnatol Pomozov TRACE_EVENT(ext4_sync_file_exit,
9620562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, int ret),
9630562e0baSJiaying Zhang 
964a9c667f8SLukas Czerner 	TP_ARGS(inode, ret),
9650562e0baSJiaying Zhang 
9660562e0baSJiaying Zhang 	TP_STRUCT__entry(
9670562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
9680562e0baSJiaying Zhang 		__field(	ino_t,	ino			)
9690562e0baSJiaying Zhang 		__field(	int,	ret			)
9709bffad1eSTheodore Ts'o 	),
9719bffad1eSTheodore Ts'o 
9729bffad1eSTheodore Ts'o 	TP_fast_assign(
9739bffad1eSTheodore Ts'o 		__entry->dev		= inode->i_sb->s_dev;
9749bffad1eSTheodore Ts'o 		__entry->ino		= inode->i_ino;
9759bffad1eSTheodore Ts'o 		__entry->ret		= ret;
9760562e0baSJiaying Zhang 	),
9779bffad1eSTheodore Ts'o 
9789bffad1eSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu ret %d",
9799bffad1eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
9809bffad1eSTheodore Ts'o 		  (unsigned long) __entry->ino,
9819bffad1eSTheodore Ts'o 		  __entry->ret)
9820562e0baSJiaying Zhang );
9839bffad1eSTheodore Ts'o 
9849bffad1eSTheodore Ts'o TRACE_EVENT(ext4_sync_fs,
9859bffad1eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, int wait),
9860562e0baSJiaying Zhang 
9870562e0baSJiaying Zhang 	TP_ARGS(sb, wait),
9880562e0baSJiaying Zhang 
9899bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
9909bffad1eSTheodore Ts'o 		__field(	dev_t,	dev			)
991fb40ba0dSTheodore Ts'o 		__field(	int,	wait			)
992fb40ba0dSTheodore Ts'o 
993fb40ba0dSTheodore Ts'o 	),
994fb40ba0dSTheodore Ts'o 
995fb40ba0dSTheodore Ts'o 	TP_fast_assign(
996fb40ba0dSTheodore Ts'o 		__entry->dev	= sb->s_dev;
9970562e0baSJiaying Zhang 		__entry->wait	= wait;
998fb40ba0dSTheodore Ts'o 	),
999fb40ba0dSTheodore Ts'o 
1000fb40ba0dSTheodore Ts'o 	TP_printk("dev %d,%d wait %d",
1001fb40ba0dSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1002fb40ba0dSTheodore Ts'o 		  __entry->wait)
10030562e0baSJiaying Zhang );
1004fb40ba0dSTheodore Ts'o 
1005fb40ba0dSTheodore Ts'o TRACE_EVENT(ext4_alloc_da_blocks,
1006fb40ba0dSTheodore Ts'o 	TP_PROTO(struct inode *inode),
1007fb40ba0dSTheodore Ts'o 
1008a627b0a7SEric Whitney 	TP_ARGS(inode),
10090562e0baSJiaying Zhang 
1010a269029dSTheodore Ts'o 	TP_STRUCT__entry(
1011a627b0a7SEric Whitney 		__field(	dev_t,	dev			)
1012fb40ba0dSTheodore Ts'o 		__field(	ino_t,	ino			)
1013fb40ba0dSTheodore Ts'o 		__field( unsigned int,	data_blocks		)
1014296c355cSTheodore Ts'o 	),
1015296c355cSTheodore Ts'o 
1016296c355cSTheodore Ts'o 	TP_fast_assign(
1017296c355cSTheodore Ts'o 		__entry->dev	= inode->i_sb->s_dev;
1018296c355cSTheodore Ts'o 		__entry->ino	= inode->i_ino;
1019296c355cSTheodore Ts'o 		__entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
10200562e0baSJiaying Zhang 	),
1021296c355cSTheodore Ts'o 
1022296c355cSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu reserved_data_blocks %u",
1023296c355cSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1024296c355cSTheodore Ts'o 		  (unsigned long) __entry->ino,
1025296c355cSTheodore Ts'o 		  __entry->data_blocks)
1026296c355cSTheodore Ts'o );
1027296c355cSTheodore Ts'o 
1028296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_alloc,
1029296c355cSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_context *ac),
1030296c355cSTheodore Ts'o 
1031296c355cSTheodore Ts'o 	TP_ARGS(ac),
1032296c355cSTheodore Ts'o 
1033296c355cSTheodore Ts'o 	TP_STRUCT__entry(
1034210c0526SAnatol Pomozov 		__field(	dev_t,	dev			)
1035210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
1036210c0526SAnatol Pomozov 		__field(	__u32, 	orig_logical		)
1037210c0526SAnatol Pomozov 		__field(	  int,	orig_start		)
1038210c0526SAnatol Pomozov 		__field(	__u32, 	orig_group		)
1039210c0526SAnatol Pomozov 		__field(	  int,	orig_len		)
1040296c355cSTheodore Ts'o 		__field(	__u32, 	goal_logical		)
1041296c355cSTheodore Ts'o 		__field(	  int,	goal_start		)
1042296c355cSTheodore Ts'o 		__field(	__u32, 	goal_group		)
10430562e0baSJiaying Zhang 		__field(	  int,	goal_len		)
1044296c355cSTheodore Ts'o 		__field(	__u32, 	result_logical		)
1045296c355cSTheodore Ts'o 		__field(	  int,	result_start		)
1046296c355cSTheodore Ts'o 		__field(	__u32, 	result_group		)
1047296c355cSTheodore Ts'o 		__field(	  int,	result_len		)
1048296c355cSTheodore Ts'o 		__field(	__u16,	found			)
1049296c355cSTheodore Ts'o 		__field(	__u16,	groups			)
1050296c355cSTheodore Ts'o 		__field(	__u16,	buddy			)
1051296c355cSTheodore Ts'o 		__field(	__u16,	flags			)
1052296c355cSTheodore Ts'o 		__field(	__u16,	tail			)
1053296c355cSTheodore Ts'o 		__field(	__u8,	cr			)
1054296c355cSTheodore Ts'o 	),
1055296c355cSTheodore Ts'o 
1056296c355cSTheodore Ts'o 	TP_fast_assign(
1057210c0526SAnatol Pomozov 		__entry->dev		= ac->ac_inode->i_sb->s_dev;
1058210c0526SAnatol Pomozov 		__entry->ino		= ac->ac_inode->i_ino;
1059210c0526SAnatol Pomozov 		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
1060210c0526SAnatol Pomozov 		__entry->orig_start	= ac->ac_o_ex.fe_start;
1061210c0526SAnatol Pomozov 		__entry->orig_group	= ac->ac_o_ex.fe_group;
1062210c0526SAnatol Pomozov 		__entry->orig_len	= ac->ac_o_ex.fe_len;
1063296c355cSTheodore Ts'o 		__entry->goal_logical	= ac->ac_g_ex.fe_logical;
1064296c355cSTheodore Ts'o 		__entry->goal_start	= ac->ac_g_ex.fe_start;
1065a269029dSTheodore Ts'o 		__entry->goal_group	= ac->ac_g_ex.fe_group;
106621ddd568STheodore Ts'o 		__entry->goal_len	= ac->ac_g_ex.fe_len;
1067296c355cSTheodore Ts'o 		__entry->result_logical	= ac->ac_f_ex.fe_logical;
10680562e0baSJiaying Zhang 		__entry->result_start	= ac->ac_f_ex.fe_start;
1069a269029dSTheodore Ts'o 		__entry->result_group	= ac->ac_f_ex.fe_group;
1070296c355cSTheodore Ts'o 		__entry->result_len	= ac->ac_f_ex.fe_len;
1071296c355cSTheodore Ts'o 		__entry->found		= ac->ac_found;
1072296c355cSTheodore Ts'o 		__entry->flags		= ac->ac_flags;
1073296c355cSTheodore Ts'o 		__entry->groups		= ac->ac_groups_scanned;
1074296c355cSTheodore Ts'o 		__entry->buddy		= ac->ac_buddy;
1075296c355cSTheodore Ts'o 		__entry->tail		= ac->ac_tail;
1076296c355cSTheodore Ts'o 		__entry->cr		= ac->ac_criteria;
107721ddd568STheodore Ts'o 	),
1078296c355cSTheodore Ts'o 
1079296c355cSTheodore Ts'o 	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u "
1080296c355cSTheodore Ts'o 		  "result %u/%d/%u@%u blks %u grps %u cr %s flags %s "
1081296c355cSTheodore Ts'o 		  "tail %u broken %u",
1082296c355cSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1083296c355cSTheodore Ts'o 		  (unsigned long) __entry->ino,
1084296c355cSTheodore Ts'o 		  __entry->orig_group, __entry->orig_start,
1085296c355cSTheodore Ts'o 		  __entry->orig_len, __entry->orig_logical,
1086296c355cSTheodore Ts'o 		  __entry->goal_group, __entry->goal_start,
10870562e0baSJiaying Zhang 		  __entry->goal_len, __entry->goal_logical,
1088296c355cSTheodore Ts'o 		  __entry->result_group, __entry->result_start,
1089296c355cSTheodore Ts'o 		  __entry->result_len, __entry->result_logical,
1090296c355cSTheodore Ts'o 		  __entry->found, __entry->groups, show_criteria(__entry->cr),
1091296c355cSTheodore Ts'o 		  show_mballoc_flags(__entry->flags), __entry->tail,
1092296c355cSTheodore Ts'o 		  __entry->buddy ? 1 << __entry->buddy : 0)
1093296c355cSTheodore Ts'o );
1094296c355cSTheodore Ts'o 
1095296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_prealloc,
1096296c355cSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_context *ac),
1097296c355cSTheodore Ts'o 
1098296c355cSTheodore Ts'o 	TP_ARGS(ac),
1099296c355cSTheodore Ts'o 
11000562e0baSJiaying Zhang 	TP_STRUCT__entry(
1101296c355cSTheodore Ts'o 		__field(	dev_t,	dev			)
1102296c355cSTheodore Ts'o 		__field(	ino_t,	ino			)
1103296c355cSTheodore Ts'o 		__field(	__u32, 	orig_logical		)
1104296c355cSTheodore Ts'o 		__field(	  int,	orig_start		)
1105296c355cSTheodore Ts'o 		__field(	__u32, 	orig_group		)
1106296c355cSTheodore Ts'o 		__field(	  int,	orig_len		)
1107296c355cSTheodore Ts'o 		__field(	__u32, 	result_logical		)
1108296c355cSTheodore Ts'o 		__field(	  int,	result_start		)
1109296c355cSTheodore Ts'o 		__field(	__u32, 	result_group		)
1110296c355cSTheodore Ts'o 		__field(	  int,	result_len		)
1111296c355cSTheodore Ts'o 	),
1112a269029dSTheodore Ts'o 
11130562e0baSJiaying Zhang 	TP_fast_assign(
1114a269029dSTheodore Ts'o 		__entry->dev		= ac->ac_inode->i_sb->s_dev;
1115296c355cSTheodore Ts'o 		__entry->ino		= ac->ac_inode->i_ino;
1116296c355cSTheodore Ts'o 		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
1117296c355cSTheodore Ts'o 		__entry->orig_start	= ac->ac_o_ex.fe_start;
1118296c355cSTheodore Ts'o 		__entry->orig_group	= ac->ac_o_ex.fe_group;
1119296c355cSTheodore Ts'o 		__entry->orig_len	= ac->ac_o_ex.fe_len;
1120296c355cSTheodore Ts'o 		__entry->result_logical	= ac->ac_b_ex.fe_logical;
1121f084db93SLi Zefan 		__entry->result_start	= ac->ac_b_ex.fe_start;
11223e1e5f50SEric Sandeen 		__entry->result_group	= ac->ac_b_ex.fe_group;
11233e1e5f50SEric Sandeen 		__entry->result_len	= ac->ac_b_ex.fe_len;
11243e1e5f50SEric Sandeen 	),
11253e1e5f50SEric Sandeen 
11263e1e5f50SEric Sandeen 	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u",
1127296c355cSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
11283e1e5f50SEric Sandeen 		  (unsigned long) __entry->ino,
1129296c355cSTheodore Ts'o 		  __entry->orig_group, __entry->orig_start,
1130296c355cSTheodore Ts'o 		  __entry->orig_len, __entry->orig_logical,
11310562e0baSJiaying Zhang 		  __entry->result_group, __entry->result_start,
1132296c355cSTheodore Ts'o 		  __entry->result_len, __entry->result_logical)
1133296c355cSTheodore Ts'o );
1134296c355cSTheodore Ts'o 
1135296c355cSTheodore Ts'o DECLARE_EVENT_CLASS(ext4__mballoc,
1136296c355cSTheodore Ts'o 	TP_PROTO(struct super_block *sb,
1137296c355cSTheodore Ts'o 		 struct inode *inode,
1138296c355cSTheodore Ts'o 		 ext4_group_t group,
11390562e0baSJiaying Zhang 		 ext4_grpblk_t start,
11403e1e5f50SEric Sandeen 		 ext4_grpblk_t len),
11413e1e5f50SEric Sandeen 
11423e1e5f50SEric Sandeen 	TP_ARGS(sb, inode, group, start, len),
11433e1e5f50SEric Sandeen 
1144296c355cSTheodore Ts'o 	TP_STRUCT__entry(
1145296c355cSTheodore Ts'o 		__field(	dev_t,	dev			)
1146a9c667f8SLukas Czerner 		__field(	ino_t,	ino			)
11470562e0baSJiaying Zhang 		__field(	  int,	result_start		)
1148a269029dSTheodore Ts'o 		__field(	__u32, 	result_group		)
1149296c355cSTheodore Ts'o 		__field(	  int,	result_len		)
11503e1e5f50SEric Sandeen 	),
1151296c355cSTheodore Ts'o 
1152296c355cSTheodore Ts'o 	TP_fast_assign(
1153f084db93SLi Zefan 		__entry->dev		= sb->s_dev;
1154f084db93SLi Zefan 		__entry->ino		= inode ? inode->i_ino : 0;
11553e1e5f50SEric Sandeen 		__entry->result_start	= start;
11563e1e5f50SEric Sandeen 		__entry->result_group	= group;
11573e1e5f50SEric Sandeen 		__entry->result_len	= len;
11583e1e5f50SEric Sandeen 	),
11593e1e5f50SEric Sandeen 
1160296c355cSTheodore Ts'o 	TP_printk("dev %d,%d inode %lu extent %u/%d/%d ",
11613e1e5f50SEric Sandeen 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1162f084db93SLi Zefan 		  (unsigned long) __entry->ino,
1163296c355cSTheodore Ts'o 		  __entry->result_group, __entry->result_start,
1164f084db93SLi Zefan 		  __entry->result_len)
1165296c355cSTheodore Ts'o );
11663e1e5f50SEric Sandeen 
11673e1e5f50SEric Sandeen DEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard,
11683e1e5f50SEric Sandeen 
11693e1e5f50SEric Sandeen 	TP_PROTO(struct super_block *sb,
11703e1e5f50SEric Sandeen 		 struct inode *inode,
1171296c355cSTheodore Ts'o 		 ext4_group_t group,
11723e1e5f50SEric Sandeen 		 ext4_grpblk_t start,
1173296c355cSTheodore Ts'o 		 ext4_grpblk_t len),
1174296c355cSTheodore Ts'o 
1175beac2da7STheodore Ts'o 	TP_ARGS(sb, inode, group, start, len)
1176beac2da7STheodore Ts'o );
1177beac2da7STheodore Ts'o 
1178beac2da7STheodore Ts'o DEFINE_EVENT(ext4__mballoc, ext4_mballoc_free,
1179beac2da7STheodore Ts'o 
1180beac2da7STheodore Ts'o 	TP_PROTO(struct super_block *sb,
11810562e0baSJiaying Zhang 		 struct inode *inode,
1182beac2da7STheodore Ts'o 		 ext4_group_t group,
1183beac2da7STheodore Ts'o 		 ext4_grpblk_t start,
1184210c0526SAnatol Pomozov 		 ext4_grpblk_t len),
1185210c0526SAnatol Pomozov 
1186beac2da7STheodore Ts'o 	TP_ARGS(sb, inode, group, start, len)
1187beac2da7STheodore Ts'o );
1188beac2da7STheodore Ts'o 
11890562e0baSJiaying Zhang TRACE_EVENT(ext4_forget,
1190beac2da7STheodore Ts'o 	TP_PROTO(struct inode *inode, int is_metadata, __u64 block),
1191beac2da7STheodore Ts'o 
1192210c0526SAnatol Pomozov 	TP_ARGS(inode, is_metadata, block),
1193210c0526SAnatol Pomozov 
1194beac2da7STheodore Ts'o 	TP_STRUCT__entry(
1195beac2da7STheodore Ts'o 		__field(	dev_t,	dev			)
1196a269029dSTheodore Ts'o 		__field(	ino_t,	ino			)
11970562e0baSJiaying Zhang 		__field(	__u64,	block			)
11980562e0baSJiaying Zhang 		__field(	int,	is_metadata		)
11990562e0baSJiaying Zhang 		__field(	__u16,	mode			)
1200beac2da7STheodore Ts'o 	),
1201beac2da7STheodore Ts'o 
1202f8ec9d68STheodore Ts'o 	TP_fast_assign(
1203d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
1204f8ec9d68STheodore Ts'o 		__entry->ino	= inode->i_ino;
1205d8990240SAditya Kali 		__entry->block	= block;
1206f8ec9d68STheodore Ts'o 		__entry->is_metadata = is_metadata;
1207f8ec9d68STheodore Ts'o 		__entry->mode	= inode->i_mode;
12080562e0baSJiaying Zhang 	),
1209f8ec9d68STheodore Ts'o 
1210f8ec9d68STheodore Ts'o 	TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %llu",
1211f8ec9d68STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1212f8ec9d68STheodore Ts'o 		  (unsigned long) __entry->ino,
1213d8990240SAditya Kali 		  __entry->mode, __entry->is_metadata, __entry->block)
1214210c0526SAnatol Pomozov );
1215f8ec9d68STheodore Ts'o 
1216f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_update_reserve_space,
1217f8ec9d68STheodore Ts'o 	TP_PROTO(struct inode *inode, int used_blocks, int quota_claim),
12180562e0baSJiaying Zhang 
1219f8ec9d68STheodore Ts'o 	TP_ARGS(inode, used_blocks, quota_claim),
1220f8ec9d68STheodore Ts'o 
1221f8ec9d68STheodore Ts'o 	TP_STRUCT__entry(
1222d8990240SAditya Kali 		__field(	dev_t,	dev			)
1223d8990240SAditya Kali 		__field(	ino_t,	ino			)
1224d8990240SAditya Kali 		__field(	__u64,	i_blocks		)
1225210c0526SAnatol Pomozov 		__field(	int,	used_blocks		)
1226f8ec9d68STheodore Ts'o 		__field(	int,	reserved_data_blocks	)
1227f8ec9d68STheodore Ts'o 		__field(	int,	quota_claim		)
12280562e0baSJiaying Zhang 		__field(	__u16,	mode			)
1229a627b0a7SEric Whitney 	),
12300562e0baSJiaying Zhang 
12310562e0baSJiaying Zhang 	TP_fast_assign(
1232a9c667f8SLukas Czerner 		__entry->dev	= inode->i_sb->s_dev;
1233f8ec9d68STheodore Ts'o 		__entry->ino	= inode->i_ino;
1234d8990240SAditya Kali 		__entry->i_blocks = inode->i_blocks;
1235f8ec9d68STheodore Ts'o 		__entry->used_blocks = used_blocks;
1236f8ec9d68STheodore Ts'o 		__entry->reserved_data_blocks =
1237f8ec9d68STheodore Ts'o 				EXT4_I(inode)->i_reserved_data_blocks;
1238c27e43a1SEric Whitney 		__entry->quota_claim = quota_claim;
1239f8ec9d68STheodore Ts'o 		__entry->mode	= inode->i_mode;
1240c27e43a1SEric Whitney 	),
1241f8ec9d68STheodore Ts'o 
1242f8ec9d68STheodore Ts'o 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d "
12430562e0baSJiaying Zhang 		  "reserved_data_blocks %d quota_claim %d",
1244f8ec9d68STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1245f8ec9d68STheodore Ts'o 		  (unsigned long) __entry->ino,
1246f8ec9d68STheodore Ts'o 		  __entry->mode, __entry->i_blocks,
1247210c0526SAnatol Pomozov 		  __entry->used_blocks, __entry->reserved_data_blocks,
1248f8ec9d68STheodore Ts'o 		  __entry->quota_claim)
1249f8ec9d68STheodore Ts'o );
1250f8ec9d68STheodore Ts'o 
12510562e0baSJiaying Zhang TRACE_EVENT(ext4_da_reserve_space,
1252f8ec9d68STheodore Ts'o 	TP_PROTO(struct inode *inode),
1253f8ec9d68STheodore Ts'o 
1254f8ec9d68STheodore Ts'o 	TP_ARGS(inode),
1255210c0526SAnatol Pomozov 
1256f8ec9d68STheodore Ts'o 	TP_STRUCT__entry(
1257f8ec9d68STheodore Ts'o 		__field(	dev_t,	dev			)
1258c27e43a1SEric Whitney 		__field(	ino_t,	ino			)
1259a627b0a7SEric Whitney 		__field(	__u64,	i_blocks		)
12600562e0baSJiaying Zhang 		__field(	int,	reserved_data_blocks	)
1261a269029dSTheodore Ts'o 		__field(	__u16,  mode			)
1262a9c667f8SLukas Czerner 	),
1263a627b0a7SEric Whitney 
1264f8ec9d68STheodore Ts'o 	TP_fast_assign(
1265f8ec9d68STheodore Ts'o 		__entry->dev	= inode->i_sb->s_dev;
1266f8ec9d68STheodore Ts'o 		__entry->ino	= inode->i_ino;
1267f8ec9d68STheodore Ts'o 		__entry->i_blocks = inode->i_blocks;
1268f8ec9d68STheodore Ts'o 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1269f8ec9d68STheodore Ts'o 		__entry->mode	= inode->i_mode;
1270f8ec9d68STheodore Ts'o 	),
1271f8ec9d68STheodore Ts'o 
12720562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu "
1273f8ec9d68STheodore Ts'o 		  "reserved_data_blocks %d",
1274f8ec9d68STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1275f8ec9d68STheodore Ts'o 		  (unsigned long) __entry->ino,
1276f8ec9d68STheodore Ts'o 		  __entry->mode, __entry->i_blocks,
1277210c0526SAnatol Pomozov 		  __entry->reserved_data_blocks)
1278f8ec9d68STheodore Ts'o );
1279f8ec9d68STheodore Ts'o 
1280f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_release_space,
12810562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, int freed_blocks),
1282f8ec9d68STheodore Ts'o 
1283f8ec9d68STheodore Ts'o 	TP_ARGS(inode, freed_blocks),
1284f8ec9d68STheodore Ts'o 
1285f8ec9d68STheodore Ts'o 	TP_STRUCT__entry(
1286210c0526SAnatol Pomozov 		__field(	dev_t,	dev			)
1287f8ec9d68STheodore Ts'o 		__field(	ino_t,	ino			)
1288f8ec9d68STheodore Ts'o 		__field(	__u64,	i_blocks		)
12890562e0baSJiaying Zhang 		__field(	int,	freed_blocks		)
1290a627b0a7SEric Whitney 		__field(	int,	reserved_data_blocks	)
12910562e0baSJiaying Zhang 		__field(	__u16,  mode			)
1292a269029dSTheodore Ts'o 	),
1293a9c667f8SLukas Czerner 
1294a627b0a7SEric Whitney 	TP_fast_assign(
1295f8ec9d68STheodore Ts'o 		__entry->dev	= inode->i_sb->s_dev;
1296f8ec9d68STheodore Ts'o 		__entry->ino	= inode->i_ino;
1297f307333eSTheodore Ts'o 		__entry->i_blocks = inode->i_blocks;
1298f307333eSTheodore Ts'o 		__entry->freed_blocks = freed_blocks;
1299f307333eSTheodore Ts'o 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1300f307333eSTheodore Ts'o 		__entry->mode	= inode->i_mode;
1301f307333eSTheodore Ts'o 	),
1302f307333eSTheodore Ts'o 
13030562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d "
1304f307333eSTheodore Ts'o 		  "reserved_data_blocks %d",
1305f307333eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1306f307333eSTheodore Ts'o 		  (unsigned long) __entry->ino,
1307f307333eSTheodore Ts'o 		  __entry->mode, __entry->i_blocks,
1308f307333eSTheodore Ts'o 		  __entry->freed_blocks, __entry->reserved_data_blocks)
13090562e0baSJiaying Zhang );
1310f307333eSTheodore Ts'o 
1311f307333eSTheodore Ts'o DECLARE_EVENT_CLASS(ext4__bitmap_load,
1312f307333eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, unsigned long group),
1313a269029dSTheodore Ts'o 
13140562e0baSJiaying Zhang 	TP_ARGS(sb, group),
13150562e0baSJiaying Zhang 
1316f307333eSTheodore Ts'o 	TP_STRUCT__entry(
1317f307333eSTheodore Ts'o 		__field(	dev_t,	dev			)
1318f307333eSTheodore Ts'o 		__field(	__u32,	group			)
1319f307333eSTheodore Ts'o 
1320f307333eSTheodore Ts'o 	),
1321f307333eSTheodore Ts'o 
1322f307333eSTheodore Ts'o 	TP_fast_assign(
1323f307333eSTheodore Ts'o 		__entry->dev	= sb->s_dev;
1324f307333eSTheodore Ts'o 		__entry->group	= group;
1325f307333eSTheodore Ts'o 	),
1326f307333eSTheodore Ts'o 
1327f307333eSTheodore Ts'o 	TP_printk("dev %d,%d group %u",
1328f307333eSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1329f307333eSTheodore Ts'o 		  __entry->group)
1330f307333eSTheodore Ts'o );
1331f8ec9d68STheodore Ts'o 
1332ab74c7b2STheodore Ts'o DEFINE_EVENT(ext4__bitmap_load, ext4_mb_bitmap_load,
13330562e0baSJiaying Zhang 
13340562e0baSJiaying Zhang 	TP_PROTO(struct super_block *sb, unsigned long group),
13350562e0baSJiaying Zhang 
13360562e0baSJiaying Zhang 	TP_ARGS(sb, group)
13370562e0baSJiaying Zhang );
13380562e0baSJiaying Zhang 
1339ab74c7b2STheodore Ts'o DEFINE_EVENT(ext4__bitmap_load, ext4_mb_buddy_bitmap_load,
1340ab74c7b2STheodore Ts'o 
13410562e0baSJiaying Zhang 	TP_PROTO(struct super_block *sb, unsigned long group),
1342ab74c7b2STheodore Ts'o 
13430562e0baSJiaying Zhang 	TP_ARGS(sb, group)
1344ab74c7b2STheodore Ts'o );
1345ab74c7b2STheodore Ts'o 
1346ab74c7b2STheodore Ts'o DEFINE_EVENT(ext4__bitmap_load, ext4_load_inode_bitmap,
1347ab74c7b2STheodore Ts'o 
1348ab74c7b2STheodore Ts'o 	TP_PROTO(struct super_block *sb, unsigned long group),
1349ab74c7b2STheodore Ts'o 
1350ab74c7b2STheodore Ts'o 	TP_ARGS(sb, group)
1351ab74c7b2STheodore Ts'o );
1352ab74c7b2STheodore Ts'o 
1353ab74c7b2STheodore Ts'o TRACE_EVENT(ext4_read_block_bitmap_load,
1354ab74c7b2STheodore Ts'o 	TP_PROTO(struct super_block *sb, unsigned long group, bool prefetch),
1355ab74c7b2STheodore Ts'o 
1356ab74c7b2STheodore Ts'o 	TP_ARGS(sb, group, prefetch),
1357ab74c7b2STheodore Ts'o 
1358ab74c7b2STheodore Ts'o 	TP_STRUCT__entry(
1359ab74c7b2STheodore Ts'o 		__field(	dev_t,	dev			)
13600562e0baSJiaying Zhang 		__field(	__u32,	group			)
13610562e0baSJiaying Zhang 		__field(	bool,	prefetch		)
1362b8a86845SLukas Czerner 
13630562e0baSJiaying Zhang 	),
13640562e0baSJiaying Zhang 
13650562e0baSJiaying Zhang 	TP_fast_assign(
13660562e0baSJiaying Zhang 		__entry->dev	= sb->s_dev;
13670562e0baSJiaying Zhang 		__entry->group	= group;
13680562e0baSJiaying Zhang 		__entry->prefetch = prefetch;
1369210c0526SAnatol Pomozov 	),
1370b8a86845SLukas Czerner 
13710562e0baSJiaying Zhang 	TP_printk("dev %d,%d group %u prefetch %d",
13720562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
13730562e0baSJiaying Zhang 		  __entry->group, __entry->prefetch)
13740562e0baSJiaying Zhang );
13750562e0baSJiaying Zhang 
13760562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__fallocate_mode,
1377210c0526SAnatol Pomozov 	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
1378b8a86845SLukas Czerner 
13790562e0baSJiaying Zhang 	TP_ARGS(inode, offset, len, mode),
13800562e0baSJiaying Zhang 
13810562e0baSJiaying Zhang 	TP_STRUCT__entry(
13820562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1383b8a86845SLukas Czerner 		__field(	ino_t,	ino			)
13840562e0baSJiaying Zhang 		__field(	loff_t,	offset			)
1385b8a86845SLukas Czerner 		__field(	loff_t, len			)
1386b8a86845SLukas Czerner 		__field(	int,	mode			)
1387b8a86845SLukas Czerner 	),
1388b8a86845SLukas Czerner 
1389b8a86845SLukas Czerner 	TP_fast_assign(
1390b8a86845SLukas Czerner 		__entry->dev	= inode->i_sb->s_dev;
1391b8a86845SLukas Czerner 		__entry->ino	= inode->i_ino;
1392b8a86845SLukas Czerner 		__entry->offset	= offset;
1393b8a86845SLukas Czerner 		__entry->len	= len;
1394b8a86845SLukas Czerner 		__entry->mode	= mode;
1395b8a86845SLukas Czerner 	),
1396b8a86845SLukas Czerner 
1397b8a86845SLukas Czerner 	TP_printk("dev %d,%d ino %lu offset %lld len %lld mode %s",
1398b8a86845SLukas Czerner 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1399b8a86845SLukas Czerner 		  (unsigned long) __entry->ino,
1400b8a86845SLukas Czerner 		  __entry->offset, __entry->len,
1401b8a86845SLukas Czerner 		  show_falloc_mode(__entry->mode))
1402b8a86845SLukas Czerner );
1403b8a86845SLukas Czerner 
1404b8a86845SLukas Czerner DEFINE_EVENT(ext4__fallocate_mode, ext4_fallocate_enter,
1405b8a86845SLukas Czerner 
1406b8a86845SLukas Czerner 	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
1407b8a86845SLukas Czerner 
1408b8a86845SLukas Czerner 	TP_ARGS(inode, offset, len, mode)
14090562e0baSJiaying Zhang );
14100562e0baSJiaying Zhang 
14110562e0baSJiaying Zhang DEFINE_EVENT(ext4__fallocate_mode, ext4_punch_hole,
1412a9c667f8SLukas Czerner 
1413a9c667f8SLukas Czerner 	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
14140562e0baSJiaying Zhang 
14150562e0baSJiaying Zhang 	TP_ARGS(inode, offset, len, mode)
14160562e0baSJiaying Zhang );
14170562e0baSJiaying Zhang 
14180562e0baSJiaying Zhang DEFINE_EVENT(ext4__fallocate_mode, ext4_zero_range,
1419210c0526SAnatol Pomozov 
14200562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
1421a9c667f8SLukas Czerner 
14220562e0baSJiaying Zhang 	TP_ARGS(inode, offset, len, mode)
14230562e0baSJiaying Zhang );
14240562e0baSJiaying Zhang 
14250562e0baSJiaying Zhang TRACE_EVENT(ext4_fallocate_exit,
14260562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, loff_t offset,
1427210c0526SAnatol Pomozov 		 unsigned int max_blocks, int ret),
14280562e0baSJiaying Zhang 
14290562e0baSJiaying Zhang 	TP_ARGS(inode, offset, max_blocks, ret),
14300562e0baSJiaying Zhang 
14310562e0baSJiaying Zhang 	TP_STRUCT__entry(
14320562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1433a9c667f8SLukas Czerner 		__field(	ino_t,	ino			)
14340562e0baSJiaying Zhang 		__field(	loff_t,	pos			)
14350562e0baSJiaying Zhang 		__field(	unsigned int,	blocks		)
1436a9c667f8SLukas Czerner 		__field(	int, 	ret			)
14370562e0baSJiaying Zhang 	),
14380562e0baSJiaying Zhang 
14390562e0baSJiaying Zhang 	TP_fast_assign(
14400562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
14410562e0baSJiaying Zhang 		__entry->ino	= inode->i_ino;
14420562e0baSJiaying Zhang 		__entry->pos	= offset;
14430562e0baSJiaying Zhang 		__entry->blocks	= max_blocks;
14440562e0baSJiaying Zhang 		__entry->ret	= ret;
14450562e0baSJiaying Zhang 	),
14460562e0baSJiaying Zhang 
1447210c0526SAnatol Pomozov 	TP_printk("dev %d,%d ino %lu pos %lld blocks %u ret %d",
1448210c0526SAnatol Pomozov 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1449210c0526SAnatol Pomozov 		  (unsigned long) __entry->ino,
14500562e0baSJiaying Zhang 		  __entry->pos, __entry->blocks,
14510562e0baSJiaying Zhang 		  __entry->ret)
14520562e0baSJiaying Zhang );
1453fc64005cSAl Viro 
14542b0143b5SDavid Howells TRACE_EVENT(ext4_unlink_enter,
1455210c0526SAnatol Pomozov 	TP_PROTO(struct inode *parent, struct dentry *dentry),
14562b0143b5SDavid Howells 
14570562e0baSJiaying Zhang 	TP_ARGS(parent, dentry),
14580562e0baSJiaying Zhang 
1459a9c667f8SLukas Czerner 	TP_STRUCT__entry(
14600562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
14610562e0baSJiaying Zhang 		__field(	ino_t,	ino			)
14620562e0baSJiaying Zhang 		__field(	ino_t,	parent			)
14630562e0baSJiaying Zhang 		__field(	loff_t,	size			)
14640562e0baSJiaying Zhang 	),
14650562e0baSJiaying Zhang 
14660562e0baSJiaying Zhang 	TP_fast_assign(
14670562e0baSJiaying Zhang 		__entry->dev		= dentry->d_sb->s_dev;
14680562e0baSJiaying Zhang 		__entry->ino		= d_inode(dentry)->i_ino;
14690562e0baSJiaying Zhang 		__entry->parent		= parent->i_ino;
14700562e0baSJiaying Zhang 		__entry->size		= d_inode(dentry)->i_size;
14710562e0baSJiaying Zhang 	),
1472210c0526SAnatol Pomozov 
14730562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu size %lld parent %lu",
14740562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
14750562e0baSJiaying Zhang 		  (unsigned long) __entry->ino, __entry->size,
14760562e0baSJiaying Zhang 		  (unsigned long) __entry->parent)
1477fc64005cSAl Viro );
14782b0143b5SDavid Howells 
14790562e0baSJiaying Zhang TRACE_EVENT(ext4_unlink_exit,
14800562e0baSJiaying Zhang 	TP_PROTO(struct dentry *dentry, int ret),
14810562e0baSJiaying Zhang 
1482a9c667f8SLukas Czerner 	TP_ARGS(dentry, ret),
14830562e0baSJiaying Zhang 
14840562e0baSJiaying Zhang 	TP_STRUCT__entry(
14850562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
14860562e0baSJiaying Zhang 		__field(	ino_t,	ino			)
14870562e0baSJiaying Zhang 		__field(	int,	ret			)
14880562e0baSJiaying Zhang 	),
14890562e0baSJiaying Zhang 
14900562e0baSJiaying Zhang 	TP_fast_assign(
14910562e0baSJiaying Zhang 		__entry->dev		= dentry->d_sb->s_dev;
14920562e0baSJiaying Zhang 		__entry->ino		= d_inode(dentry)->i_ino;
14930562e0baSJiaying Zhang 		__entry->ret		= ret;
14940562e0baSJiaying Zhang 	),
1495210c0526SAnatol Pomozov 
1496a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu ret %d",
14970562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
14980562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
14990562e0baSJiaying Zhang 		  __entry->ret)
15000562e0baSJiaying Zhang );
1501210c0526SAnatol Pomozov 
15020562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__truncate,
15030562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode),
15040562e0baSJiaying Zhang 
1505a9c667f8SLukas Czerner 	TP_ARGS(inode),
15060562e0baSJiaying Zhang 
1507a9c667f8SLukas Czerner 	TP_STRUCT__entry(
15080562e0baSJiaying Zhang 		__field(	dev_t,		dev		)
15090562e0baSJiaying Zhang 		__field(	ino_t,		ino		)
15100562e0baSJiaying Zhang 		__field(	__u64,		blocks		)
15110562e0baSJiaying Zhang 	),
15120562e0baSJiaying Zhang 
15130562e0baSJiaying Zhang 	TP_fast_assign(
15140562e0baSJiaying Zhang 		__entry->dev    = inode->i_sb->s_dev;
15150562e0baSJiaying Zhang 		__entry->ino    = inode->i_ino;
15160562e0baSJiaying Zhang 		__entry->blocks	= inode->i_blocks;
15170562e0baSJiaying Zhang 	),
15180562e0baSJiaying Zhang 
15190562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu blocks %llu",
15200562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
15210562e0baSJiaying Zhang 		  (unsigned long) __entry->ino, __entry->blocks)
15220562e0baSJiaying Zhang );
15230562e0baSJiaying Zhang 
1524556615dcSLukas Czerner DEFINE_EVENT(ext4__truncate, ext4_truncate_enter,
15256f91bc5fSEric Gouriou 
15266f91bc5fSEric Gouriou 	TP_PROTO(struct inode *inode),
15276f91bc5fSEric Gouriou 
15286f91bc5fSEric Gouriou 	TP_ARGS(inode)
15296f91bc5fSEric Gouriou );
15306f91bc5fSEric Gouriou 
15316f91bc5fSEric Gouriou DEFINE_EVENT(ext4__truncate, ext4_truncate_exit,
15326f91bc5fSEric Gouriou 
1533210c0526SAnatol Pomozov 	TP_PROTO(struct inode *inode),
15346f91bc5fSEric Gouriou 
15356f91bc5fSEric Gouriou 	TP_ARGS(inode)
15366f91bc5fSEric Gouriou );
15376f91bc5fSEric Gouriou 
15386f91bc5fSEric Gouriou /* 'ux' is the unwritten extent. */
15396f91bc5fSEric Gouriou TRACE_EVENT(ext4_ext_convert_to_initialized_enter,
15406f91bc5fSEric Gouriou 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
15416f91bc5fSEric Gouriou 		 struct ext4_extent *ux),
15426f91bc5fSEric Gouriou 
1543210c0526SAnatol Pomozov 	TP_ARGS(inode, map, ux),
15446f91bc5fSEric Gouriou 
15456f91bc5fSEric Gouriou 	TP_STRUCT__entry(
15466f91bc5fSEric Gouriou 		__field(	dev_t,		dev	)
15476f91bc5fSEric Gouriou 		__field(	ino_t,		ino	)
15486f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	m_lblk	)
15496f91bc5fSEric Gouriou 		__field(	unsigned,	m_len	)
15506f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	u_lblk	)
15516f91bc5fSEric Gouriou 		__field(	unsigned,	u_len	)
15526f91bc5fSEric Gouriou 		__field(	ext4_fsblk_t,	u_pblk	)
15536f91bc5fSEric Gouriou 	),
15546f91bc5fSEric Gouriou 
15556f91bc5fSEric Gouriou 	TP_fast_assign(
15566f91bc5fSEric Gouriou 		__entry->dev		= inode->i_sb->s_dev;
15576f91bc5fSEric Gouriou 		__entry->ino		= inode->i_ino;
15586f91bc5fSEric Gouriou 		__entry->m_lblk		= map->m_lblk;
15596f91bc5fSEric Gouriou 		__entry->m_len		= map->m_len;
1560556615dcSLukas Czerner 		__entry->u_lblk		= le32_to_cpu(ux->ee_block);
15616f91bc5fSEric Gouriou 		__entry->u_len		= ext4_ext_get_actual_len(ux);
15626f91bc5fSEric Gouriou 		__entry->u_pblk		= ext4_ext_pblock(ux);
15636f91bc5fSEric Gouriou 	),
15646f91bc5fSEric Gouriou 
15656f91bc5fSEric Gouriou 	TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u u_lblk %u u_len %u "
15666f91bc5fSEric Gouriou 		  "u_pblk %llu",
15676f91bc5fSEric Gouriou 		  MAJOR(__entry->dev), MINOR(__entry->dev),
15686f91bc5fSEric Gouriou 		  (unsigned long) __entry->ino,
15696f91bc5fSEric Gouriou 		  __entry->m_lblk, __entry->m_len,
15706f91bc5fSEric Gouriou 		  __entry->u_lblk, __entry->u_len, __entry->u_pblk)
1571210c0526SAnatol Pomozov );
15726f91bc5fSEric Gouriou 
15736f91bc5fSEric Gouriou /*
15746f91bc5fSEric Gouriou  * 'ux' is the unwritten extent.
15756f91bc5fSEric Gouriou  * 'ix' is the initialized extent to which blocks are transferred.
15766f91bc5fSEric Gouriou  */
15776f91bc5fSEric Gouriou TRACE_EVENT(ext4_ext_convert_to_initialized_fastpath,
15786f91bc5fSEric Gouriou 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
15796f91bc5fSEric Gouriou 		 struct ext4_extent *ux, struct ext4_extent *ix),
15806f91bc5fSEric Gouriou 
15816f91bc5fSEric Gouriou 	TP_ARGS(inode, map, ux, ix),
15826f91bc5fSEric Gouriou 
15836f91bc5fSEric Gouriou 	TP_STRUCT__entry(
1584210c0526SAnatol Pomozov 		__field(	dev_t,		dev	)
15856f91bc5fSEric Gouriou 		__field(	ino_t,		ino	)
15866f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	m_lblk	)
15876f91bc5fSEric Gouriou 		__field(	unsigned,	m_len	)
15886f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	u_lblk	)
15896f91bc5fSEric Gouriou 		__field(	unsigned,	u_len	)
15906f91bc5fSEric Gouriou 		__field(	ext4_fsblk_t,	u_pblk	)
15916f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	i_lblk	)
15926f91bc5fSEric Gouriou 		__field(	unsigned,	i_len	)
15936f91bc5fSEric Gouriou 		__field(	ext4_fsblk_t,	i_pblk	)
15946f91bc5fSEric Gouriou 	),
15956f91bc5fSEric Gouriou 
15966f91bc5fSEric Gouriou 	TP_fast_assign(
15976f91bc5fSEric Gouriou 		__entry->dev		= inode->i_sb->s_dev;
15986f91bc5fSEric Gouriou 		__entry->ino		= inode->i_ino;
15996f91bc5fSEric Gouriou 		__entry->m_lblk		= map->m_lblk;
16006f91bc5fSEric Gouriou 		__entry->m_len		= map->m_len;
16016f91bc5fSEric Gouriou 		__entry->u_lblk		= le32_to_cpu(ux->ee_block);
16026f91bc5fSEric Gouriou 		__entry->u_len		= ext4_ext_get_actual_len(ux);
16036f91bc5fSEric Gouriou 		__entry->u_pblk		= ext4_ext_pblock(ux);
16046f91bc5fSEric Gouriou 		__entry->i_lblk		= le32_to_cpu(ix->ee_block);
16050562e0baSJiaying Zhang 		__entry->i_len		= ext4_ext_get_actual_len(ix);
16060562e0baSJiaying Zhang 		__entry->i_pblk		= ext4_ext_pblock(ix);
1607a9c667f8SLukas Czerner 	),
16080562e0baSJiaying Zhang 
16090562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u "
16100562e0baSJiaying Zhang 		  "u_lblk %u u_len %u u_pblk %llu "
16110562e0baSJiaying Zhang 		  "i_lblk %u i_len %u i_pblk %llu ",
16120562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1613210c0526SAnatol Pomozov 		  (unsigned long) __entry->ino,
16140562e0baSJiaying Zhang 		  __entry->m_lblk, __entry->m_len,
1615a9c667f8SLukas Czerner 		  __entry->u_lblk, __entry->u_len, __entry->u_pblk,
1616a9c667f8SLukas Czerner 		  __entry->i_lblk, __entry->i_len, __entry->i_pblk)
16170562e0baSJiaying Zhang );
16180562e0baSJiaying Zhang 
16190562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__map_blocks_enter,
16200562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1621210c0526SAnatol Pomozov 		 unsigned int len, unsigned int flags),
16220562e0baSJiaying Zhang 
16230562e0baSJiaying Zhang 	TP_ARGS(inode, lblk, len, flags),
16240562e0baSJiaying Zhang 
16250562e0baSJiaying Zhang 	TP_STRUCT__entry(
16260562e0baSJiaying Zhang 		__field(	dev_t,		dev		)
162721ddd568STheodore Ts'o 		__field(	ino_t,		ino		)
16280562e0baSJiaying Zhang 		__field(	ext4_lblk_t,	lblk		)
16290562e0baSJiaying Zhang 		__field(	unsigned int,	len		)
163021ddd568STheodore Ts'o 		__field(	unsigned int,	flags		)
16310562e0baSJiaying Zhang 	),
16320562e0baSJiaying Zhang 
16330562e0baSJiaying Zhang 	TP_fast_assign(
16340562e0baSJiaying Zhang 		__entry->dev    = inode->i_sb->s_dev;
16350562e0baSJiaying Zhang 		__entry->ino    = inode->i_ino;
16360562e0baSJiaying Zhang 		__entry->lblk	= lblk;
16370562e0baSJiaying Zhang 		__entry->len	= len;
16380562e0baSJiaying Zhang 		__entry->flags	= flags;
16390562e0baSJiaying Zhang 	),
16400562e0baSJiaying Zhang 
16410562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu lblk %u len %u flags %s",
16420562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
16430562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
16440562e0baSJiaying Zhang 		  __entry->lblk, __entry->len, show_map_flags(__entry->flags))
16450562e0baSJiaying Zhang );
16460562e0baSJiaying Zhang 
16470562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter,
164821ddd568STheodore Ts'o 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
164921ddd568STheodore Ts'o 		 unsigned len, unsigned flags),
16500562e0baSJiaying Zhang 
165121ddd568STheodore Ts'o 	TP_ARGS(inode, lblk, len, flags)
16520562e0baSJiaying Zhang );
16530562e0baSJiaying Zhang 
16540562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter,
1655210c0526SAnatol Pomozov 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
165621ddd568STheodore Ts'o 		 unsigned len, unsigned flags),
16570562e0baSJiaying Zhang 
1658210c0526SAnatol Pomozov 	TP_ARGS(inode, lblk, len, flags)
1659a9c667f8SLukas Czerner );
166021ddd568STheodore Ts'o 
16610562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
16620562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, unsigned flags, struct ext4_map_blocks *map,
16630562e0baSJiaying Zhang 		 int ret),
16640562e0baSJiaying Zhang 
16650562e0baSJiaying Zhang 	TP_ARGS(inode, flags, map, ret),
1666210c0526SAnatol Pomozov 
166721ddd568STheodore Ts'o 	TP_STRUCT__entry(
166819b303d8SZheng Liu 		__field(	dev_t,		dev		)
166919b303d8SZheng Liu 		__field(	ino_t,		ino		)
167019b303d8SZheng Liu 		__field(	unsigned int,	flags		)
167121ddd568STheodore Ts'o 		__field(	ext4_fsblk_t,	pblk		)
16720562e0baSJiaying Zhang 		__field(	ext4_lblk_t,	lblk		)
16730562e0baSJiaying Zhang 		__field(	unsigned int,	len		)
16740562e0baSJiaying Zhang 		__field(	unsigned int,	mflags		)
167521ddd568STheodore Ts'o 		__field(	int,		ret		)
167621ddd568STheodore Ts'o 	),
16770562e0baSJiaying Zhang 
16780562e0baSJiaying Zhang 	TP_fast_assign(
167921ddd568STheodore Ts'o 		__entry->dev    = inode->i_sb->s_dev;
168021ddd568STheodore Ts'o 		__entry->ino    = inode->i_ino;
16810562e0baSJiaying Zhang 		__entry->flags	= flags;
16820562e0baSJiaying Zhang 		__entry->pblk	= map->m_pblk;
16830562e0baSJiaying Zhang 		__entry->lblk	= map->m_lblk;
168421ddd568STheodore Ts'o 		__entry->len	= map->m_len;
168521ddd568STheodore Ts'o 		__entry->mflags	= map->m_flags;
16860562e0baSJiaying Zhang 		__entry->ret	= ret;
168721ddd568STheodore Ts'o 	),
16880562e0baSJiaying Zhang 
16890562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu flags %s lblk %u pblk %llu len %u "
16900562e0baSJiaying Zhang 		  "mflags %s ret %d",
169121ddd568STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
169221ddd568STheodore Ts'o 		  (unsigned long) __entry->ino,
16930562e0baSJiaying Zhang 		  show_map_flags(__entry->flags), __entry->lblk, __entry->pblk,
169421ddd568STheodore Ts'o 		  __entry->len, show_mflags(__entry->mflags), __entry->ret)
16950562e0baSJiaying Zhang );
16960562e0baSJiaying Zhang 
16970562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
16980562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, unsigned flags,
16990562e0baSJiaying Zhang 		 struct ext4_map_blocks *map, int ret),
17000562e0baSJiaying Zhang 
17010562e0baSJiaying Zhang 	TP_ARGS(inode, flags, map, ret)
17020562e0baSJiaying Zhang );
17030562e0baSJiaying Zhang 
1704210c0526SAnatol Pomozov DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
17050562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, unsigned flags,
1706210c0526SAnatol Pomozov 		 struct ext4_map_blocks *map, int ret),
17070562e0baSJiaying Zhang 
17080562e0baSJiaying Zhang 	TP_ARGS(inode, flags, map, ret)
17090562e0baSJiaying Zhang );
17100562e0baSJiaying Zhang 
1711210c0526SAnatol Pomozov TRACE_EVENT(ext4_ext_load_extent,
17120562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk),
1713210c0526SAnatol Pomozov 
17140562e0baSJiaying Zhang 	TP_ARGS(inode, lblk, pblk),
17150562e0baSJiaying Zhang 
17160562e0baSJiaying Zhang 	TP_STRUCT__entry(
17170562e0baSJiaying Zhang 		__field(	dev_t,		dev		)
17180562e0baSJiaying Zhang 		__field(	ino_t,		ino		)
1719a9c667f8SLukas Czerner 		__field(	ext4_fsblk_t,	pblk		)
17200562e0baSJiaying Zhang 		__field(	ext4_lblk_t,	lblk		)
17210562e0baSJiaying Zhang 	),
17220562e0baSJiaying Zhang 
17238016e29fSHarshad Shirwadkar 	TP_fast_assign(
17240562e0baSJiaying Zhang 		__entry->dev    = inode->i_sb->s_dev;
17258016e29fSHarshad Shirwadkar 		__entry->ino    = inode->i_ino;
17260562e0baSJiaying Zhang 		__entry->pblk	= pblk;
17270562e0baSJiaying Zhang 		__entry->lblk	= lblk;
17280562e0baSJiaying Zhang 	),
1729210c0526SAnatol Pomozov 
17300562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu",
17310562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
17320562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
17338016e29fSHarshad Shirwadkar 		  __entry->lblk, __entry->pblk)
17348016e29fSHarshad Shirwadkar );
17350562e0baSJiaying Zhang 
17360562e0baSJiaying Zhang TRACE_EVENT(ext4_load_inode,
17370562e0baSJiaying Zhang 	TP_PROTO(struct super_block *sb, unsigned long ino),
17380562e0baSJiaying Zhang 
17390562e0baSJiaying Zhang 	TP_ARGS(sb, ino),
17400562e0baSJiaying Zhang 
17410562e0baSJiaying Zhang 	TP_STRUCT__entry(
17425f3e2403Schangfengnan 		__field(	dev_t,	dev		)
17435fe2fe89SJan Kara 		__field(	ino_t,	ino		)
17445f3e2403Schangfengnan 	),
174512706394STheodore Ts'o 
17465f3e2403Schangfengnan 	TP_fast_assign(
174712706394STheodore Ts'o 		__entry->dev		= sb->s_dev;
174812706394STheodore Ts'o 		__entry->ino		= ino;
174912706394STheodore Ts'o 	),
175012706394STheodore Ts'o 
17515fe2fe89SJan Kara 	TP_printk("dev %d,%d ino %ld",
17525fe2fe89SJan Kara 		  MAJOR(__entry->dev), MINOR(__entry->dev),
175383448bdfSJan Kara 		  (unsigned long) __entry->ino)
17545f3e2403Schangfengnan );
175512706394STheodore Ts'o 
175612706394STheodore Ts'o TRACE_EVENT(ext4_journal_start_sb,
175712706394STheodore Ts'o 	TP_PROTO(struct super_block *sb, int blocks, int rsv_blocks,
175812706394STheodore Ts'o 		 int revoke_creds, int type, unsigned long IP),
175912706394STheodore Ts'o 
17605fe2fe89SJan Kara 	TP_ARGS(sb, blocks, rsv_blocks, revoke_creds, type, IP),
17615fe2fe89SJan Kara 
176283448bdfSJan Kara 	TP_STRUCT__entry(
17635f3e2403Schangfengnan 		__field(	dev_t,		dev		)
176412706394STheodore Ts'o 		__field(	unsigned long,	ip		)
176512706394STheodore Ts'o 		__field(	int,		blocks		)
176683448bdfSJan Kara 		__field(	int,		rsv_blocks	)
17675f3e2403Schangfengnan 		__field(	int,		revoke_creds	)
17685f3e2403Schangfengnan 		__field(	int,		type		)
17695f3e2403Schangfengnan 	),
17705f3e2403Schangfengnan 
17715f3e2403Schangfengnan 	TP_fast_assign(
17725f3e2403Schangfengnan 		__entry->dev		 = sb->s_dev;
17735f3e2403Schangfengnan 		__entry->ip		 = IP;
17745f3e2403Schangfengnan 		__entry->blocks		 = blocks;
17755f3e2403Schangfengnan 		__entry->rsv_blocks	 = rsv_blocks;
17765f3e2403Schangfengnan 		__entry->revoke_creds	 = revoke_creds;
17775f3e2403Schangfengnan 		__entry->type		 = type;
17785f3e2403Schangfengnan 	),
17795f3e2403Schangfengnan 
17805f3e2403Schangfengnan 	TP_printk("dev %d,%d blocks %d, rsv_blocks %d, revoke_creds %d,"
17815f3e2403Schangfengnan 		  " type %d, caller %pS", MAJOR(__entry->dev),
17825f3e2403Schangfengnan 		  MINOR(__entry->dev), __entry->blocks, __entry->rsv_blocks,
17835f3e2403Schangfengnan 		  __entry->revoke_creds, __entry->type, (void *)__entry->ip)
17845f3e2403Schangfengnan );
17855f3e2403Schangfengnan 
17865f3e2403Schangfengnan TRACE_EVENT(ext4_journal_start_inode,
17875f3e2403Schangfengnan 	TP_PROTO(struct inode *inode, int blocks, int rsv_blocks,
17885f3e2403Schangfengnan 		 int revoke_creds, int type, unsigned long IP),
17895f3e2403Schangfengnan 
17905f3e2403Schangfengnan 	TP_ARGS(inode, blocks, rsv_blocks, revoke_creds, type, IP),
17915f3e2403Schangfengnan 
17925f3e2403Schangfengnan 	TP_STRUCT__entry(
17935f3e2403Schangfengnan 		__field(	unsigned long,	ino		)
17945f3e2403Schangfengnan 		__field(	dev_t,		dev		)
17955f3e2403Schangfengnan 		__field(	unsigned long,	ip		)
17965f3e2403Schangfengnan 		__field(	int,		blocks		)
17975f3e2403Schangfengnan 		__field(	int,		rsv_blocks	)
17985f3e2403Schangfengnan 		__field(	int,		revoke_creds	)
17995f3e2403Schangfengnan 		__field(	int,		type		)
18005f3e2403Schangfengnan 	),
18015f3e2403Schangfengnan 
180283448bdfSJan Kara 	TP_fast_assign(
18035fe2fe89SJan Kara 		__entry->dev		 = inode->i_sb->s_dev;
18045fe2fe89SJan Kara 		__entry->ip		 = IP;
18055fe2fe89SJan Kara 		__entry->blocks		 = blocks;
18065fe2fe89SJan Kara 		__entry->rsv_blocks	 = rsv_blocks;
18075fe2fe89SJan Kara 		__entry->revoke_creds	 = revoke_creds;
18085fe2fe89SJan Kara 		__entry->type		 = type;
18095fe2fe89SJan Kara 		__entry->ino		 = inode->i_ino;
18105fe2fe89SJan Kara 	),
18115fe2fe89SJan Kara 
18125fe2fe89SJan Kara 	TP_printk("dev %d,%d blocks %d, rsv_blocks %d, revoke_creds %d,"
18135fe2fe89SJan Kara 		  " type %d, ino %lu, caller %pS", MAJOR(__entry->dev),
18145fe2fe89SJan Kara 		  MINOR(__entry->dev), __entry->blocks, __entry->rsv_blocks,
18155fe2fe89SJan Kara 		  __entry->revoke_creds, __entry->type, __entry->ino,
18165fe2fe89SJan Kara 		  (void *)__entry->ip)
18175fe2fe89SJan Kara );
18185fe2fe89SJan Kara 
18195fe2fe89SJan Kara TRACE_EVENT(ext4_journal_start_reserved,
18205fe2fe89SJan Kara 	TP_PROTO(struct super_block *sb, int blocks, unsigned long IP),
18215fe2fe89SJan Kara 
1822bbedb179SScott Wood 	TP_ARGS(sb, blocks, IP),
18235fe2fe89SJan Kara 
18245fe2fe89SJan Kara 	TP_STRUCT__entry(
182512706394STheodore Ts'o 		__field(	dev_t,	dev			)
182612706394STheodore Ts'o 		__field(unsigned long,	ip			)
1827b3d4c2b1STao Ma 		__field(	  int,	blocks			)
1828b3d4c2b1STao Ma 	),
1829b3d4c2b1STao Ma 
1830b3d4c2b1STao Ma 	TP_fast_assign(
1831b3d4c2b1STao Ma 		__entry->dev		 = sb->s_dev;
1832b3d4c2b1STao Ma 		__entry->ip		 = IP;
1833b3d4c2b1STao Ma 		__entry->blocks		 = blocks;
1834b3d4c2b1STao Ma 	),
1835b3d4c2b1STao Ma 
1836b3d4c2b1STao Ma 	TP_printk("dev %d,%d blocks, %d caller %pS",
1837b3d4c2b1STao Ma 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1838b3d4c2b1STao Ma 		  __entry->blocks, (void *)__entry->ip)
1839b3d4c2b1STao Ma );
1840b3d4c2b1STao Ma 
1841b3d4c2b1STao Ma DECLARE_EVENT_CLASS(ext4__trim,
1842b3d4c2b1STao Ma 	TP_PROTO(struct super_block *sb,
1843b3d4c2b1STao Ma 		 ext4_group_t group,
1844b3d4c2b1STao Ma 		 ext4_grpblk_t start,
1845b3d4c2b1STao Ma 		 ext4_grpblk_t len),
1846b3d4c2b1STao Ma 
1847b3d4c2b1STao Ma 	TP_ARGS(sb, group, start, len),
1848b3d4c2b1STao Ma 
1849b3d4c2b1STao Ma 	TP_STRUCT__entry(
1850b3d4c2b1STao Ma 		__field(	int,	dev_major		)
1851b3d4c2b1STao Ma 		__field(	int,	dev_minor		)
1852b3d4c2b1STao Ma 		__field(	__u32, 	group			)
1853b3d4c2b1STao Ma 		__field(	int,	start			)
1854b3d4c2b1STao Ma 		__field(	int,	len			)
1855b3d4c2b1STao Ma 	),
1856b3d4c2b1STao Ma 
1857b3d4c2b1STao Ma 	TP_fast_assign(
1858b3d4c2b1STao Ma 		__entry->dev_major	= MAJOR(sb->s_dev);
1859b3d4c2b1STao Ma 		__entry->dev_minor	= MINOR(sb->s_dev);
1860b3d4c2b1STao Ma 		__entry->group		= group;
1861b3d4c2b1STao Ma 		__entry->start		= start;
1862b3d4c2b1STao Ma 		__entry->len		= len;
1863b3d4c2b1STao Ma 	),
1864b3d4c2b1STao Ma 
1865b3d4c2b1STao Ma 	TP_printk("dev %d,%d group %u, start %d, len %d",
1866b3d4c2b1STao Ma 		  __entry->dev_major, __entry->dev_minor,
1867b3d4c2b1STao Ma 		  __entry->group, __entry->start, __entry->len)
1868b3d4c2b1STao Ma );
1869b3d4c2b1STao Ma 
1870b3d4c2b1STao Ma DEFINE_EVENT(ext4__trim, ext4_trim_extent,
1871b3d4c2b1STao Ma 
1872b3d4c2b1STao Ma 	TP_PROTO(struct super_block *sb,
1873b3d4c2b1STao Ma 		 ext4_group_t group,
1874b3d4c2b1STao Ma 		 ext4_grpblk_t start,
1875b3d4c2b1STao Ma 		 ext4_grpblk_t len),
1876556615dcSLukas Czerner 
1877b5645534SZheng Liu 	TP_ARGS(sb, group, start, len)
1878d8990240SAditya Kali );
1879d8990240SAditya Kali 
1880b5645534SZheng Liu DEFINE_EVENT(ext4__trim, ext4_trim_all_free,
1881d8990240SAditya Kali 
1882d8990240SAditya Kali 	TP_PROTO(struct super_block *sb,
1883d8990240SAditya Kali 		 ext4_group_t group,
1884210c0526SAnatol Pomozov 		 ext4_grpblk_t start,
1885210c0526SAnatol Pomozov 		 ext4_grpblk_t len),
1886d8990240SAditya Kali 
1887d8990240SAditya Kali 	TP_ARGS(sb, group, start, len)
1888d8990240SAditya Kali );
1889d8990240SAditya Kali 
1890d8990240SAditya Kali TRACE_EVENT(ext4_ext_handle_unwritten_extents,
1891d8990240SAditya Kali 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int flags,
1892d8990240SAditya Kali 		 unsigned int allocated, ext4_fsblk_t newblock),
1893d8990240SAditya Kali 
1894d8990240SAditya Kali 	TP_ARGS(inode, map, flags, allocated, newblock),
1895210c0526SAnatol Pomozov 
1896b5645534SZheng Liu 	TP_STRUCT__entry(
1897d8990240SAditya Kali 		__field(	dev_t,		dev		)
1898d8990240SAditya Kali 		__field(	ino_t,		ino		)
1899d8990240SAditya Kali 		__field(	int,		flags		)
1900d8990240SAditya Kali 		__field(	ext4_lblk_t,	lblk		)
1901d8990240SAditya Kali 		__field(	ext4_fsblk_t,	pblk		)
1902d8990240SAditya Kali 		__field(	unsigned int,	len		)
1903d8990240SAditya Kali 		__field(	unsigned int,	allocated	)
190421ddd568STheodore Ts'o 		__field(	ext4_fsblk_t,	newblk		)
1905d8990240SAditya Kali 	),
1906d8990240SAditya Kali 
1907d8990240SAditya Kali 	TP_fast_assign(
1908d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
190921ddd568STheodore Ts'o 		__entry->ino		= inode->i_ino;
1910d8990240SAditya Kali 		__entry->flags		= flags;
1911d8990240SAditya Kali 		__entry->lblk		= map->m_lblk;
1912d8990240SAditya Kali 		__entry->pblk		= map->m_pblk;
1913d8990240SAditya Kali 		__entry->len		= map->m_len;
1914d8990240SAditya Kali 		__entry->allocated	= allocated;
1915d8990240SAditya Kali 		__entry->newblk		= newblock;
1916d8990240SAditya Kali 	),
1917d8990240SAditya Kali 
1918d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %s "
1919d8990240SAditya Kali 		  "allocated %d newblock %llu",
1920d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1921210c0526SAnatol Pomozov 		  (unsigned long) __entry->ino,
1922d8990240SAditya Kali 		  (unsigned) __entry->lblk, (unsigned long long) __entry->pblk,
1923d8990240SAditya Kali 		  __entry->len, show_map_flags(__entry->flags),
1924d8990240SAditya Kali 		  (unsigned int) __entry->allocated,
1925d8990240SAditya Kali 		  (unsigned long long) __entry->newblk)
1926d8990240SAditya Kali );
1927d8990240SAditya Kali 
1928d8990240SAditya Kali TRACE_EVENT(ext4_get_implied_cluster_alloc_exit,
1929d8990240SAditya Kali 	TP_PROTO(struct super_block *sb, struct ext4_map_blocks *map, int ret),
1930210c0526SAnatol Pomozov 
1931d8990240SAditya Kali 	TP_ARGS(sb, map, ret),
1932d8990240SAditya Kali 
1933d8990240SAditya Kali 	TP_STRUCT__entry(
1934d8990240SAditya Kali 		__field(	dev_t,		dev	)
1935d8990240SAditya Kali 		__field(	unsigned int,	flags	)
1936d8990240SAditya Kali 		__field(	ext4_lblk_t,	lblk	)
193721ddd568STheodore Ts'o 		__field(	ext4_fsblk_t,	pblk	)
1938d8990240SAditya Kali 		__field(	unsigned int,	len	)
1939d8990240SAditya Kali 		__field(	int,		ret	)
194021ddd568STheodore Ts'o 	),
1941d8990240SAditya Kali 
1942d8990240SAditya Kali 	TP_fast_assign(
1943d8990240SAditya Kali 		__entry->dev	= sb->s_dev;
1944d8990240SAditya Kali 		__entry->flags	= map->m_flags;
1945d8990240SAditya Kali 		__entry->lblk	= map->m_lblk;
1946d8990240SAditya Kali 		__entry->pblk	= map->m_pblk;
1947d8990240SAditya Kali 		__entry->len	= map->m_len;
1948d8990240SAditya Kali 		__entry->ret	= ret;
1949d8990240SAditya Kali 	),
1950d8990240SAditya Kali 
1951210c0526SAnatol Pomozov 	TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %s ret %d",
1952d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1953210c0526SAnatol Pomozov 		  __entry->lblk, (unsigned long long) __entry->pblk,
1954d8990240SAditya Kali 		  __entry->len, show_mflags(__entry->flags), __entry->ret)
1955d8990240SAditya Kali );
1956d8990240SAditya Kali 
1957d8990240SAditya Kali TRACE_EVENT(ext4_ext_show_extent,
1958d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk,
1959210c0526SAnatol Pomozov 		 unsigned short len),
1960d8990240SAditya Kali 
1961210c0526SAnatol Pomozov 	TP_ARGS(inode, lblk, pblk, len),
1962d8990240SAditya Kali 
1963d8990240SAditya Kali 	TP_STRUCT__entry(
1964d8990240SAditya Kali 		__field(	dev_t,		dev	)
1965d8990240SAditya Kali 		__field(	ino_t,		ino	)
1966d8990240SAditya Kali 		__field(	ext4_fsblk_t,	pblk	)
1967d8990240SAditya Kali 		__field(	ext4_lblk_t,	lblk	)
1968d8990240SAditya Kali 		__field(	unsigned short,	len	)
1969d8990240SAditya Kali 	),
1970d8990240SAditya Kali 
1971d8990240SAditya Kali 	TP_fast_assign(
1972d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
1973d8990240SAditya Kali 		__entry->ino	= inode->i_ino;
1974d8990240SAditya Kali 		__entry->pblk	= pblk;
1975d8990240SAditya Kali 		__entry->lblk	= lblk;
19769fe67149SEric Whitney 		__entry->len	= len;
1977d8990240SAditya Kali 	),
19789fe67149SEric Whitney 
1979d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u",
1980d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1981d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1982210c0526SAnatol Pomozov 		  (unsigned) __entry->lblk,
1983d8990240SAditya Kali 		  (unsigned long long) __entry->pblk,
1984d8990240SAditya Kali 		  (unsigned short) __entry->len)
1985210c0526SAnatol Pomozov );
1986210c0526SAnatol Pomozov 
1987210c0526SAnatol Pomozov TRACE_EVENT(ext4_remove_blocks,
19889fe67149SEric Whitney 	TP_PROTO(struct inode *inode, struct ext4_extent *ex,
19899fe67149SEric Whitney 		 ext4_lblk_t from, ext4_fsblk_t to,
19909fe67149SEric Whitney 		 struct partial_cluster *pc),
1991d8990240SAditya Kali 
1992d8990240SAditya Kali 	TP_ARGS(inode, ex, from, to, pc),
1993d8990240SAditya Kali 
1994d8990240SAditya Kali 	TP_STRUCT__entry(
1995210c0526SAnatol Pomozov 		__field(	dev_t,		dev	)
1996d8990240SAditya Kali 		__field(	ino_t,		ino	)
1997d8990240SAditya Kali 		__field(	ext4_lblk_t,	from	)
1998210c0526SAnatol Pomozov 		__field(	ext4_lblk_t,	to	)
1999d6a77105STheodore Ts'o 		__field(	ext4_fsblk_t,	ee_pblk	)
2000210c0526SAnatol Pomozov 		__field(	ext4_lblk_t,	ee_lblk	)
20019fe67149SEric Whitney 		__field(	unsigned short,	ee_len	)
20029fe67149SEric Whitney 		__field(	ext4_fsblk_t,	pc_pclu	)
20039fe67149SEric Whitney 		__field(	ext4_lblk_t,	pc_lblk	)
2004d8990240SAditya Kali 		__field(	int,		pc_state)
2005d8990240SAditya Kali 	),
2006d8990240SAditya Kali 
20079fe67149SEric Whitney 	TP_fast_assign(
2008d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
2009d8990240SAditya Kali 		__entry->ino		= inode->i_ino;
2010d8990240SAditya Kali 		__entry->from		= from;
2011d8990240SAditya Kali 		__entry->to		= to;
2012d8990240SAditya Kali 		__entry->ee_pblk	= ext4_ext_pblock(ex);
2013d8990240SAditya Kali 		__entry->ee_lblk	= le32_to_cpu(ex->ee_block);
2014d8990240SAditya Kali 		__entry->ee_len		= ext4_ext_get_actual_len(ex);
20159fe67149SEric Whitney 		__entry->pc_pclu	= pc->pclu;
20169fe67149SEric Whitney 		__entry->pc_lblk	= pc->lblk;
20179fe67149SEric Whitney 		__entry->pc_state	= pc->state;
2018d8990240SAditya Kali 	),
2019d8990240SAditya Kali 
2020d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu extent [%u(%llu), %u]"
2021d8990240SAditya Kali 		  "from %u to %u partial [pclu %lld lblk %u state %d]",
2022d23142c6SLukas Czerner 		  MAJOR(__entry->dev), MINOR(__entry->dev),
20239fe67149SEric Whitney 		  (unsigned long) __entry->ino,
2024d8990240SAditya Kali 		  (unsigned) __entry->ee_lblk,
20259fe67149SEric Whitney 		  (unsigned long long) __entry->ee_pblk,
2026d8990240SAditya Kali 		  (unsigned short) __entry->ee_len,
2027d8990240SAditya Kali 		  (unsigned) __entry->from,
2028d8990240SAditya Kali 		  (unsigned) __entry->to,
2029210c0526SAnatol Pomozov 		  (long long) __entry->pc_pclu,
2030d8990240SAditya Kali 		  (unsigned int) __entry->pc_lblk,
2031d8990240SAditya Kali 		  (int) __entry->pc_state)
2032d8990240SAditya Kali );
2033d8990240SAditya Kali 
20349fe67149SEric Whitney TRACE_EVENT(ext4_ext_rm_leaf,
20359fe67149SEric Whitney 	TP_PROTO(struct inode *inode, ext4_lblk_t start,
20369fe67149SEric Whitney 		 struct ext4_extent *ex,
2037d8990240SAditya Kali 		 struct partial_cluster *pc),
2038d8990240SAditya Kali 
2039d8990240SAditya Kali 	TP_ARGS(inode, start, ex, pc),
2040d8990240SAditya Kali 
2041210c0526SAnatol Pomozov 	TP_STRUCT__entry(
2042d8990240SAditya Kali 		__field(	dev_t,		dev	)
2043d8990240SAditya Kali 		__field(	ino_t,		ino	)
2044d8990240SAditya Kali 		__field(	ext4_lblk_t,	start	)
2045d8990240SAditya Kali 		__field(	ext4_lblk_t,	ee_lblk	)
20469fe67149SEric Whitney 		__field(	ext4_fsblk_t,	ee_pblk	)
20479fe67149SEric Whitney 		__field(	short,		ee_len	)
20489fe67149SEric Whitney 		__field(	ext4_fsblk_t,	pc_pclu	)
2049d8990240SAditya Kali 		__field(	ext4_lblk_t,	pc_lblk	)
2050d8990240SAditya Kali 		__field(	int,		pc_state)
2051d8990240SAditya Kali 	),
20529fe67149SEric Whitney 
2053d8990240SAditya Kali 	TP_fast_assign(
2054d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
2055d8990240SAditya Kali 		__entry->ino		= inode->i_ino;
2056d8990240SAditya Kali 		__entry->start		= start;
2057d8990240SAditya Kali 		__entry->ee_lblk	= le32_to_cpu(ex->ee_block);
2058d8990240SAditya Kali 		__entry->ee_pblk	= ext4_ext_pblock(ex);
20599fe67149SEric Whitney 		__entry->ee_len		= ext4_ext_get_actual_len(ex);
20609fe67149SEric Whitney 		__entry->pc_pclu	= pc->pclu;
20619fe67149SEric Whitney 		__entry->pc_lblk	= pc->lblk;
2062d8990240SAditya Kali 		__entry->pc_state	= pc->state;
2063d8990240SAditya Kali 	),
2064d8990240SAditya Kali 
2065d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu start_lblk %u last_extent [%u(%llu), %u]"
2066d8990240SAditya Kali 		  "partial [pclu %lld lblk %u state %d]",
2067d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2068d8990240SAditya Kali 		  (unsigned long) __entry->ino,
2069d8990240SAditya Kali 		  (unsigned) __entry->start,
2070d8990240SAditya Kali 		  (unsigned) __entry->ee_lblk,
2071210c0526SAnatol Pomozov 		  (unsigned long long) __entry->ee_pblk,
2072d8990240SAditya Kali 		  (unsigned short) __entry->ee_len,
2073d8990240SAditya Kali 		  (long long) __entry->pc_pclu,
2074d8990240SAditya Kali 		  (unsigned int) __entry->pc_lblk,
2075d8990240SAditya Kali 		  (int) __entry->pc_state)
2076d8990240SAditya Kali );
2077210c0526SAnatol Pomozov 
2078d8990240SAditya Kali TRACE_EVENT(ext4_ext_rm_idx,
2079d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_fsblk_t pblk),
2080d8990240SAditya Kali 
2081d8990240SAditya Kali 	TP_ARGS(inode, pblk),
2082d8990240SAditya Kali 
2083d8990240SAditya Kali 	TP_STRUCT__entry(
2084d8990240SAditya Kali 		__field(	dev_t,		dev	)
2085d8990240SAditya Kali 		__field(	ino_t,		ino	)
2086d8990240SAditya Kali 		__field(	ext4_fsblk_t,	pblk	)
2087d8990240SAditya Kali 	),
208861801325SLukas Czerner 
208961801325SLukas Czerner 	TP_fast_assign(
2090d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
209161801325SLukas Czerner 		__entry->ino	= inode->i_ino;
2092d8990240SAditya Kali 		__entry->pblk	= pblk;
2093d8990240SAditya Kali 	),
2094d8990240SAditya Kali 
2095210c0526SAnatol Pomozov 	TP_printk("dev %d,%d ino %lu index_pblk %llu",
2096d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
209761801325SLukas Czerner 		  (unsigned long) __entry->ino,
2098d8990240SAditya Kali 		  (unsigned long long) __entry->pblk)
2099d8990240SAditya Kali );
2100d8990240SAditya Kali 
2101d8990240SAditya Kali TRACE_EVENT(ext4_ext_remove_space,
2102d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t start,
2103210c0526SAnatol Pomozov 		 ext4_lblk_t end, int depth),
2104d8990240SAditya Kali 
210561801325SLukas Czerner 	TP_ARGS(inode, start, end, depth),
2106d8990240SAditya Kali 
2107d8990240SAditya Kali 	TP_STRUCT__entry(
2108d8990240SAditya Kali 		__field(	dev_t,		dev	)
210961801325SLukas Czerner 		__field(	ino_t,		ino	)
2110d8990240SAditya Kali 		__field(	ext4_lblk_t,	start	)
2111d8990240SAditya Kali 		__field(	ext4_lblk_t,	end	)
2112d8990240SAditya Kali 		__field(	int,		depth	)
211361801325SLukas Czerner 	),
2114d8990240SAditya Kali 
2115d8990240SAditya Kali 	TP_fast_assign(
2116d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
2117d8990240SAditya Kali 		__entry->ino	= inode->i_ino;
211861801325SLukas Czerner 		__entry->start	= start;
21199fe67149SEric Whitney 		__entry->end	= end;
2120d8990240SAditya Kali 		__entry->depth	= depth;
21219fe67149SEric Whitney 	),
2122d8990240SAditya Kali 
2123d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu since %u end %u depth %d",
2124d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2125210c0526SAnatol Pomozov 		  (unsigned long) __entry->ino,
2126d8990240SAditya Kali 		  (unsigned) __entry->start,
212761801325SLukas Czerner 		  (unsigned) __entry->end,
2128d8990240SAditya Kali 		  __entry->depth)
21299fe67149SEric Whitney );
21309fe67149SEric Whitney 
21319fe67149SEric Whitney TRACE_EVENT(ext4_ext_remove_space_done,
2132d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end,
2133d8990240SAditya Kali 		 int depth, struct partial_cluster *pc, __le16 eh_entries),
2134d8990240SAditya Kali 
2135d8990240SAditya Kali 	TP_ARGS(inode, start, end, depth, pc, eh_entries),
2136d8990240SAditya Kali 
2137210c0526SAnatol Pomozov 	TP_STRUCT__entry(
2138d8990240SAditya Kali 		__field(	dev_t,		dev		)
213961801325SLukas Czerner 		__field(	ino_t,		ino		)
2140d8990240SAditya Kali 		__field(	ext4_lblk_t,	start		)
21419fe67149SEric Whitney 		__field(	ext4_lblk_t,	end		)
21429fe67149SEric Whitney 		__field(	int,		depth		)
21439fe67149SEric Whitney 		__field(	ext4_fsblk_t,	pc_pclu		)
2144d6a77105STheodore Ts'o 		__field(	ext4_lblk_t,	pc_lblk		)
2145d8990240SAditya Kali 		__field(	int,		pc_state	)
2146d8990240SAditya Kali 		__field(	unsigned short,	eh_entries	)
21479fe67149SEric Whitney 	),
21489fe67149SEric Whitney 
2149d8990240SAditya Kali 	TP_fast_assign(
2150d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
2151d8990240SAditya Kali 		__entry->ino		= inode->i_ino;
2152d8990240SAditya Kali 		__entry->start		= start;
215361801325SLukas Czerner 		__entry->end		= end;
2154d8990240SAditya Kali 		__entry->depth		= depth;
21559fe67149SEric Whitney 		__entry->pc_pclu	= pc->pclu;
21569fe67149SEric Whitney 		__entry->pc_lblk	= pc->lblk;
21579fe67149SEric Whitney 		__entry->pc_state	= pc->state;
2158d8990240SAditya Kali 		__entry->eh_entries	= le16_to_cpu(eh_entries);
2159d8990240SAditya Kali 	),
2160d8990240SAditya Kali 
2161107a7bd3STheodore Ts'o 	TP_printk("dev %d,%d ino %lu since %u end %u depth %d "
2162fdc0212eSZheng Liu 		  "partial [pclu %lld lblk %u state %d] "
2163992e9fddSZheng Liu 		  "remaining_entries %u",
2164fdc0212eSZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2165992e9fddSZheng Liu 		  (unsigned long) __entry->ino,
2166992e9fddSZheng Liu 		  (unsigned) __entry->start,
2167992e9fddSZheng Liu 		  (unsigned) __entry->end,
2168992e9fddSZheng Liu 		  __entry->depth,
2169fdc0212eSZheng Liu 		  (long long) __entry->pc_pclu,
2170fdc0212eSZheng Liu 		  (unsigned int) __entry->pc_lblk,
2171fdc0212eSZheng Liu 		  (int) __entry->pc_state,
217221ddd568STheodore Ts'o 		  (unsigned short) __entry->eh_entries)
2173992e9fddSZheng Liu );
2174992e9fddSZheng Liu 
2175992e9fddSZheng Liu DECLARE_EVENT_CLASS(ext4__es_extent,
2176992e9fddSZheng Liu 	TP_PROTO(struct inode *inode, struct extent_status *es),
2177992e9fddSZheng Liu 
2178fdc0212eSZheng Liu 	TP_ARGS(inode, es),
2179fdc0212eSZheng Liu 
218052144d89SDmitry Monakhov 	TP_STRUCT__entry(
21813be78c73STheodore Ts'o 		__field(	dev_t,		dev		)
2182992e9fddSZheng Liu 		__field(	ino_t,		ino		)
2183992e9fddSZheng Liu 		__field(	ext4_lblk_t,	lblk		)
218421ddd568STheodore Ts'o 		__field(	ext4_lblk_t,	len		)
2185992e9fddSZheng Liu 		__field(	ext4_fsblk_t,	pblk		)
2186992e9fddSZheng Liu 		__field(	char, status	)
2187fdc0212eSZheng Liu 	),
218821ddd568STheodore Ts'o 
2189992e9fddSZheng Liu 	TP_fast_assign(
2190992e9fddSZheng Liu 		__entry->dev	= inode->i_sb->s_dev;
2191107a7bd3STheodore Ts'o 		__entry->ino	= inode->i_ino;
2192107a7bd3STheodore Ts'o 		__entry->lblk	= es->es_lblk;
2193107a7bd3STheodore Ts'o 		__entry->len	= es->es_len;
2194107a7bd3STheodore Ts'o 		__entry->pblk	= ext4_es_show_pblock(es);
2195107a7bd3STheodore Ts'o 		__entry->status	= ext4_es_status(es);
2196107a7bd3STheodore Ts'o 	),
2197107a7bd3STheodore Ts'o 
2198107a7bd3STheodore Ts'o 	TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
2199107a7bd3STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2200107a7bd3STheodore Ts'o 		  (unsigned long) __entry->ino,
2201107a7bd3STheodore Ts'o 		  __entry->lblk, __entry->len,
2202107a7bd3STheodore Ts'o 		  __entry->pblk, show_extent_status(__entry->status))
2203992e9fddSZheng Liu );
220406b0c886SZheng Liu 
2205992e9fddSZheng Liu DEFINE_EVENT(ext4__es_extent, ext4_es_insert_extent,
220606b0c886SZheng Liu 	TP_PROTO(struct inode *inode, struct extent_status *es),
2207992e9fddSZheng Liu 
2208992e9fddSZheng Liu 	TP_ARGS(inode, es)
2209992e9fddSZheng Liu );
2210992e9fddSZheng Liu 
221106b0c886SZheng Liu DEFINE_EVENT(ext4__es_extent, ext4_es_cache_extent,
2212992e9fddSZheng Liu 	TP_PROTO(struct inode *inode, struct extent_status *es),
2213992e9fddSZheng Liu 
2214992e9fddSZheng Liu 	TP_ARGS(inode, es)
2215992e9fddSZheng Liu );
2216992e9fddSZheng Liu 
2217992e9fddSZheng Liu TRACE_EVENT(ext4_es_remove_extent,
221806b0c886SZheng Liu 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_lblk_t len),
2219992e9fddSZheng Liu 
2220992e9fddSZheng Liu 	TP_ARGS(inode, lblk, len),
2221992e9fddSZheng Liu 
2222992e9fddSZheng Liu 	TP_STRUCT__entry(
2223992e9fddSZheng Liu 		__field(	dev_t,	dev			)
2224992e9fddSZheng Liu 		__field(	ino_t,	ino			)
222506b0c886SZheng Liu 		__field(	loff_t,	lblk			)
2226992e9fddSZheng Liu 		__field(	loff_t,	len			)
2227992e9fddSZheng Liu 	),
2228ad431025SEric Whitney 
222906b0c886SZheng Liu 	TP_fast_assign(
2230992e9fddSZheng Liu 		__entry->dev	= inode->i_sb->s_dev;
223106b0c886SZheng Liu 		__entry->ino	= inode->i_ino;
2232992e9fddSZheng Liu 		__entry->lblk	= lblk;
2233992e9fddSZheng Liu 		__entry->len	= len;
2234992e9fddSZheng Liu 	),
2235992e9fddSZheng Liu 
223606b0c886SZheng Liu 	TP_printk("dev %d,%d ino %lu es [%lld/%lld)",
2237992e9fddSZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2238992e9fddSZheng Liu 		  (unsigned long) __entry->ino,
2239992e9fddSZheng Liu 		  __entry->lblk, __entry->len)
2240992e9fddSZheng Liu );
2241992e9fddSZheng Liu 
224206b0c886SZheng Liu TRACE_EVENT(ext4_es_find_extent_range_enter,
2243992e9fddSZheng Liu 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
2244992e9fddSZheng Liu 
224506b0c886SZheng Liu 	TP_ARGS(inode, lblk),
2246992e9fddSZheng Liu 
224706b0c886SZheng Liu 	TP_STRUCT__entry(
2248992e9fddSZheng Liu 		__field(	dev_t,		dev		)
2249992e9fddSZheng Liu 		__field(	ino_t,		ino		)
2250ad431025SEric Whitney 		__field(	ext4_lblk_t,	lblk		)
2251be401363SZheng Liu 	),
2252992e9fddSZheng Liu 
2253be401363SZheng Liu 	TP_fast_assign(
2254992e9fddSZheng Liu 		__entry->dev	= inode->i_sb->s_dev;
2255992e9fddSZheng Liu 		__entry->ino	= inode->i_ino;
2256992e9fddSZheng Liu 		__entry->lblk	= lblk;
2257992e9fddSZheng Liu 	),
225806b0c886SZheng Liu 
2259992e9fddSZheng Liu 	TP_printk("dev %d,%d ino %lu lblk %u",
2260fdc0212eSZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
226121ddd568STheodore Ts'o 		  (unsigned long) __entry->ino, __entry->lblk)
2262992e9fddSZheng Liu );
2263992e9fddSZheng Liu 
2264992e9fddSZheng Liu TRACE_EVENT(ext4_es_find_extent_range_exit,
2265992e9fddSZheng Liu 	TP_PROTO(struct inode *inode, struct extent_status *es),
2266992e9fddSZheng Liu 
226706b0c886SZheng Liu 	TP_ARGS(inode, es),
226806b0c886SZheng Liu 
226952144d89SDmitry Monakhov 	TP_STRUCT__entry(
22703be78c73STheodore Ts'o 		__field(	dev_t,		dev		)
2271992e9fddSZheng Liu 		__field(	ino_t,		ino		)
2272992e9fddSZheng Liu 		__field(	ext4_lblk_t,	lblk		)
227321ddd568STheodore Ts'o 		__field(	ext4_lblk_t,	len		)
2274992e9fddSZheng Liu 		__field(	ext4_fsblk_t,	pblk		)
2275992e9fddSZheng Liu 		__field(	char, status	)
2276fdc0212eSZheng Liu 	),
227721ddd568STheodore Ts'o 
2278992e9fddSZheng Liu 	TP_fast_assign(
2279992e9fddSZheng Liu 		__entry->dev	= inode->i_sb->s_dev;
2280d100eef2SZheng Liu 		__entry->ino	= inode->i_ino;
2281d100eef2SZheng Liu 		__entry->lblk	= es->es_lblk;
2282d100eef2SZheng Liu 		__entry->len	= es->es_len;
2283d100eef2SZheng Liu 		__entry->pblk	= ext4_es_show_pblock(es);
2284d100eef2SZheng Liu 		__entry->status	= ext4_es_status(es);
2285d100eef2SZheng Liu 	),
2286d100eef2SZheng Liu 
2287d100eef2SZheng Liu 	TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
2288d100eef2SZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2289d100eef2SZheng Liu 		  (unsigned long) __entry->ino,
2290d100eef2SZheng Liu 		  __entry->lblk, __entry->len,
2291d100eef2SZheng Liu 		  __entry->pblk, show_extent_status(__entry->status))
2292d100eef2SZheng Liu );
2293d100eef2SZheng Liu 
2294d100eef2SZheng Liu TRACE_EVENT(ext4_es_lookup_extent_enter,
2295d100eef2SZheng Liu 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
2296d100eef2SZheng Liu 
2297d100eef2SZheng Liu 	TP_ARGS(inode, lblk),
2298d100eef2SZheng Liu 
2299d100eef2SZheng Liu 	TP_STRUCT__entry(
2300d100eef2SZheng Liu 		__field(	dev_t,		dev		)
2301d100eef2SZheng Liu 		__field(	ino_t,		ino		)
2302d100eef2SZheng Liu 		__field(	ext4_lblk_t,	lblk		)
2303d100eef2SZheng Liu 	),
2304d100eef2SZheng Liu 
2305d100eef2SZheng Liu 	TP_fast_assign(
2306d100eef2SZheng Liu 		__entry->dev	= inode->i_sb->s_dev;
2307d100eef2SZheng Liu 		__entry->ino	= inode->i_ino;
2308d100eef2SZheng Liu 		__entry->lblk	= lblk;
2309d100eef2SZheng Liu 	),
2310d100eef2SZheng Liu 
2311d100eef2SZheng Liu 	TP_printk("dev %d,%d ino %lu lblk %u",
2312d100eef2SZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2313d100eef2SZheng Liu 		  (unsigned long) __entry->ino, __entry->lblk)
231421ddd568STheodore Ts'o );
2315d100eef2SZheng Liu 
2316d100eef2SZheng Liu TRACE_EVENT(ext4_es_lookup_extent_exit,
2317d100eef2SZheng Liu 	TP_PROTO(struct inode *inode, struct extent_status *es,
2318d100eef2SZheng Liu 		 int found),
2319d100eef2SZheng Liu 
2320d100eef2SZheng Liu 	TP_ARGS(inode, es, found),
2321d100eef2SZheng Liu 
2322d100eef2SZheng Liu 	TP_STRUCT__entry(
232352144d89SDmitry Monakhov 		__field(	dev_t,		dev		)
23243be78c73STheodore Ts'o 		__field(	ino_t,		ino		)
2325d100eef2SZheng Liu 		__field(	ext4_lblk_t,	lblk		)
2326d100eef2SZheng Liu 		__field(	ext4_lblk_t,	len		)
2327d100eef2SZheng Liu 		__field(	ext4_fsblk_t,	pblk		)
232821ddd568STheodore Ts'o 		__field(	char,		status		)
2329d100eef2SZheng Liu 		__field(	int,		found		)
2330d100eef2SZheng Liu 	),
2331d100eef2SZheng Liu 
2332d100eef2SZheng Liu 	TP_fast_assign(
233321ddd568STheodore Ts'o 		__entry->dev	= inode->i_sb->s_dev;
2334d100eef2SZheng Liu 		__entry->ino	= inode->i_ino;
2335d100eef2SZheng Liu 		__entry->lblk	= es->es_lblk;
2336e963bb1dSZheng Liu 		__entry->len	= es->es_len;
233724630774STheodore Ts'o 		__entry->pblk	= ext4_es_show_pblock(es);
233874cd15cdSZheng Liu 		__entry->status	= ext4_es_status(es);
233924630774STheodore Ts'o 		__entry->found	= found;
234074cd15cdSZheng Liu 	),
234174cd15cdSZheng Liu 
234274cd15cdSZheng Liu 	TP_printk("dev %d,%d ino %lu found %d [%u/%u) %llu %s",
234374cd15cdSZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
234424630774STheodore Ts'o 		  (unsigned long) __entry->ino, __entry->found,
234574cd15cdSZheng Liu 		  __entry->lblk, __entry->len,
234674cd15cdSZheng Liu 		  __entry->found ? __entry->pblk : 0,
234774cd15cdSZheng Liu 		  show_extent_status(__entry->found ? __entry->status : 0))
234874cd15cdSZheng Liu );
234974cd15cdSZheng Liu 
235024630774STheodore Ts'o DECLARE_EVENT_CLASS(ext4__es_shrink_enter,
235174cd15cdSZheng Liu 	TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
235274cd15cdSZheng Liu 
235324630774STheodore Ts'o 	TP_ARGS(sb, nr_to_scan, cache_cnt),
235474cd15cdSZheng Liu 
235524630774STheodore Ts'o 	TP_STRUCT__entry(
235674cd15cdSZheng Liu 		__field(	dev_t,	dev			)
235774cd15cdSZheng Liu 		__field(	int,	nr_to_scan		)
2358e963bb1dSZheng Liu 		__field(	int,	cache_cnt		)
2359e963bb1dSZheng Liu 	),
236074cd15cdSZheng Liu 
2361e963bb1dSZheng Liu 	TP_fast_assign(
2362e963bb1dSZheng Liu 		__entry->dev		= sb->s_dev;
2363e963bb1dSZheng Liu 		__entry->nr_to_scan	= nr_to_scan;
2364e963bb1dSZheng Liu 		__entry->cache_cnt	= cache_cnt;
2365e963bb1dSZheng Liu 	),
2366e963bb1dSZheng Liu 
2367e963bb1dSZheng Liu 	TP_printk("dev %d,%d nr_to_scan %d cache_cnt %d",
2368e963bb1dSZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2369e963bb1dSZheng Liu 		  __entry->nr_to_scan, __entry->cache_cnt)
2370e963bb1dSZheng Liu );
2371e963bb1dSZheng Liu 
2372e963bb1dSZheng Liu DEFINE_EVENT(ext4__es_shrink_enter, ext4_es_shrink_count,
2373e963bb1dSZheng Liu 	TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
237474cd15cdSZheng Liu 
237574cd15cdSZheng Liu 	TP_ARGS(sb, nr_to_scan, cache_cnt)
237674cd15cdSZheng Liu );
2377e963bb1dSZheng Liu 
237824630774STheodore Ts'o DEFINE_EVENT(ext4__es_shrink_enter, ext4_es_shrink_scan_enter,
237974cd15cdSZheng Liu 	TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
238074cd15cdSZheng Liu 
238174cd15cdSZheng Liu 	TP_ARGS(sb, nr_to_scan, cache_cnt)
238274cd15cdSZheng Liu );
2383e963bb1dSZheng Liu 
238424630774STheodore Ts'o TRACE_EVENT(ext4_es_shrink_scan_exit,
238574cd15cdSZheng Liu 	TP_PROTO(struct super_block *sb, int nr_shrunk, int cache_cnt),
238674cd15cdSZheng Liu 
2387e963bb1dSZheng Liu 	TP_ARGS(sb, nr_shrunk, cache_cnt),
238874cd15cdSZheng Liu 
2389e963bb1dSZheng Liu 	TP_STRUCT__entry(
239074cd15cdSZheng Liu 		__field(	dev_t,	dev			)
239174cd15cdSZheng Liu 		__field(	int,	nr_shrunk		)
23929eb79482SNamjae Jeon 		__field(	int,	cache_cnt		)
23939eb79482SNamjae Jeon 	),
23949eb79482SNamjae Jeon 
23959eb79482SNamjae Jeon 	TP_fast_assign(
23969eb79482SNamjae Jeon 		__entry->dev		= sb->s_dev;
23979eb79482SNamjae Jeon 		__entry->nr_shrunk	= nr_shrunk;
23989eb79482SNamjae Jeon 		__entry->cache_cnt	= cache_cnt;
23999eb79482SNamjae Jeon 	),
24009eb79482SNamjae Jeon 
24019eb79482SNamjae Jeon 	TP_printk("dev %d,%d nr_shrunk %d cache_cnt %d",
24029eb79482SNamjae Jeon 		  MAJOR(__entry->dev), MINOR(__entry->dev),
24039eb79482SNamjae Jeon 		  __entry->nr_shrunk, __entry->cache_cnt)
24049eb79482SNamjae Jeon );
24059eb79482SNamjae Jeon 
24069eb79482SNamjae Jeon TRACE_EVENT(ext4_collapse_range,
24079eb79482SNamjae Jeon 	TP_PROTO(struct inode *inode, loff_t offset, loff_t len),
24089eb79482SNamjae Jeon 
24099eb79482SNamjae Jeon 	TP_ARGS(inode, offset, len),
24109eb79482SNamjae Jeon 
24119eb79482SNamjae Jeon 	TP_STRUCT__entry(
24129eb79482SNamjae Jeon 		__field(dev_t,	dev)
24139eb79482SNamjae Jeon 		__field(ino_t,	ino)
24149eb79482SNamjae Jeon 		__field(loff_t,	offset)
24159eb79482SNamjae Jeon 		__field(loff_t, len)
24169eb79482SNamjae Jeon 	),
2417331573feSNamjae Jeon 
2418331573feSNamjae Jeon 	TP_fast_assign(
2419331573feSNamjae Jeon 		__entry->dev	= inode->i_sb->s_dev;
2420331573feSNamjae Jeon 		__entry->ino	= inode->i_ino;
2421331573feSNamjae Jeon 		__entry->offset	= offset;
2422331573feSNamjae Jeon 		__entry->len	= len;
2423331573feSNamjae Jeon 	),
2424331573feSNamjae Jeon 
2425331573feSNamjae Jeon 	TP_printk("dev %d,%d ino %lu offset %lld len %lld",
2426331573feSNamjae Jeon 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2427331573feSNamjae Jeon 		  (unsigned long) __entry->ino,
2428331573feSNamjae Jeon 		  __entry->offset, __entry->len)
2429331573feSNamjae Jeon );
2430331573feSNamjae Jeon 
2431331573feSNamjae Jeon TRACE_EVENT(ext4_insert_range,
2432331573feSNamjae Jeon 	TP_PROTO(struct inode *inode, loff_t offset, loff_t len),
2433331573feSNamjae Jeon 
2434331573feSNamjae Jeon 	TP_ARGS(inode, offset, len),
2435331573feSNamjae Jeon 
2436331573feSNamjae Jeon 	TP_STRUCT__entry(
2437331573feSNamjae Jeon 		__field(dev_t,	dev)
2438331573feSNamjae Jeon 		__field(ino_t,	ino)
2439331573feSNamjae Jeon 		__field(loff_t,	offset)
2440331573feSNamjae Jeon 		__field(loff_t, len)
2441331573feSNamjae Jeon 	),
2442eb68d0e2SZheng Liu 
2443eb68d0e2SZheng Liu 	TP_fast_assign(
2444edaa53caSZheng Liu 		__entry->dev	= inode->i_sb->s_dev;
2445eb68d0e2SZheng Liu 		__entry->ino	= inode->i_ino;
2446edaa53caSZheng Liu 		__entry->offset	= offset;
2447eb68d0e2SZheng Liu 		__entry->len	= len;
2448eb68d0e2SZheng Liu 	),
2449eb68d0e2SZheng Liu 
2450eb68d0e2SZheng Liu 	TP_printk("dev %d,%d ino %lu offset %lld len %lld",
2451eb68d0e2SZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2452eb68d0e2SZheng Liu 		  (unsigned long) __entry->ino,
2453eb68d0e2SZheng Liu 		  __entry->offset, __entry->len)
2454eb68d0e2SZheng Liu );
2455eb68d0e2SZheng Liu 
2456eb68d0e2SZheng Liu TRACE_EVENT(ext4_es_shrink,
2457eb68d0e2SZheng Liu 	TP_PROTO(struct super_block *sb, int nr_shrunk, u64 scan_time,
2458eb68d0e2SZheng Liu 		 int nr_skipped, int retried),
2459eb68d0e2SZheng Liu 
2460eb68d0e2SZheng Liu 	TP_ARGS(sb, nr_shrunk, scan_time, nr_skipped, retried),
2461eb68d0e2SZheng Liu 
2462eb68d0e2SZheng Liu 	TP_STRUCT__entry(
2463eb68d0e2SZheng Liu 		__field(	dev_t,		dev		)
2464edaa53caSZheng Liu 		__field(	int,		nr_shrunk	)
2465eb68d0e2SZheng Liu 		__field(	unsigned long long, scan_time	)
2466eb68d0e2SZheng Liu 		__field(	int,		nr_skipped	)
2467edaa53caSZheng Liu 		__field(	int,		retried		)
2468eb68d0e2SZheng Liu 	),
2469eb68d0e2SZheng Liu 
24700b02f4c0SEric Whitney 	TP_fast_assign(
24710b02f4c0SEric Whitney 		__entry->dev		= sb->s_dev;
24720b02f4c0SEric Whitney 		__entry->nr_shrunk	= nr_shrunk;
24730b02f4c0SEric Whitney 		__entry->scan_time	= div_u64(scan_time, 1000);
24740b02f4c0SEric Whitney 		__entry->nr_skipped	= nr_skipped;
24750b02f4c0SEric Whitney 		__entry->retried	= retried;
24760b02f4c0SEric Whitney 	),
24770b02f4c0SEric Whitney 
24780b02f4c0SEric Whitney 	TP_printk("dev %d,%d nr_shrunk %d, scan_time %llu "
24790b02f4c0SEric Whitney 		  "nr_skipped %d retried %d",
24800b02f4c0SEric Whitney 		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->nr_shrunk,
24810b02f4c0SEric Whitney 		  __entry->scan_time, __entry->nr_skipped, __entry->retried)
24820b02f4c0SEric Whitney );
24830b02f4c0SEric Whitney 
24840b02f4c0SEric Whitney TRACE_EVENT(ext4_es_insert_delayed_block,
24850b02f4c0SEric Whitney 	TP_PROTO(struct inode *inode, struct extent_status *es,
24860b02f4c0SEric Whitney 		 bool allocated),
24870b02f4c0SEric Whitney 
24880b02f4c0SEric Whitney 	TP_ARGS(inode, es, allocated),
24890b02f4c0SEric Whitney 
24900b02f4c0SEric Whitney 	TP_STRUCT__entry(
249152144d89SDmitry Monakhov 		__field(	dev_t,		dev		)
24920b02f4c0SEric Whitney 		__field(	ino_t,		ino		)
24930b02f4c0SEric Whitney 		__field(	ext4_lblk_t,	lblk		)
24940b02f4c0SEric Whitney 		__field(	ext4_lblk_t,	len		)
24950b02f4c0SEric Whitney 		__field(	ext4_fsblk_t,	pblk		)
24960b02f4c0SEric Whitney 		__field(	char,		status		)
24970b02f4c0SEric Whitney 		__field(	bool,		allocated	)
24980b02f4c0SEric Whitney 	),
24990b02f4c0SEric Whitney 
25000b02f4c0SEric Whitney 	TP_fast_assign(
25010b02f4c0SEric Whitney 		__entry->dev		= inode->i_sb->s_dev;
25020b02f4c0SEric Whitney 		__entry->ino		= inode->i_ino;
25030b02f4c0SEric Whitney 		__entry->lblk		= es->es_lblk;
25040b02f4c0SEric Whitney 		__entry->len		= es->es_len;
25050c9ec4beSDarrick J. Wong 		__entry->pblk		= ext4_es_show_pblock(es);
25060c9ec4beSDarrick J. Wong 		__entry->status		= ext4_es_status(es);
25070c9ec4beSDarrick J. Wong 		__entry->allocated	= allocated;
25080c9ec4beSDarrick J. Wong 	),
25090c9ec4beSDarrick J. Wong 
25100c9ec4beSDarrick J. Wong 	TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s "
25110c9ec4beSDarrick J. Wong 		  "allocated %d",
25120c9ec4beSDarrick J. Wong 		  MAJOR(__entry->dev), MINOR(__entry->dev),
25130c9ec4beSDarrick J. Wong 		  (unsigned long) __entry->ino,
25140c9ec4beSDarrick J. Wong 		  __entry->lblk, __entry->len,
25150c9ec4beSDarrick J. Wong 		  __entry->pblk, show_extent_status(__entry->status),
25160c9ec4beSDarrick J. Wong 		  __entry->allocated)
25170c9ec4beSDarrick J. Wong );
25180c9ec4beSDarrick J. Wong 
25190c9ec4beSDarrick J. Wong /* fsmap traces */
25200c9ec4beSDarrick J. Wong DECLARE_EVENT_CLASS(ext4_fsmap_class,
25210c9ec4beSDarrick J. Wong 	TP_PROTO(struct super_block *sb, u32 keydev, u32 agno, u64 bno, u64 len,
25220c9ec4beSDarrick J. Wong 		 u64 owner),
25230c9ec4beSDarrick J. Wong 	TP_ARGS(sb, keydev, agno, bno, len, owner),
25240c9ec4beSDarrick J. Wong 	TP_STRUCT__entry(
25250c9ec4beSDarrick J. Wong 		__field(dev_t, dev)
25260c9ec4beSDarrick J. Wong 		__field(dev_t, keydev)
25270c9ec4beSDarrick J. Wong 		__field(u32, agno)
25280c9ec4beSDarrick J. Wong 		__field(u64, bno)
25290c9ec4beSDarrick J. Wong 		__field(u64, len)
25300c9ec4beSDarrick J. Wong 		__field(u64, owner)
25310c9ec4beSDarrick J. Wong 	),
25320c9ec4beSDarrick J. Wong 	TP_fast_assign(
25330c9ec4beSDarrick J. Wong 		__entry->dev = sb->s_bdev->bd_dev;
25340c9ec4beSDarrick J. Wong 		__entry->keydev = new_decode_dev(keydev);
25350c9ec4beSDarrick J. Wong 		__entry->agno = agno;
25360c9ec4beSDarrick J. Wong 		__entry->bno = bno;
25370c9ec4beSDarrick J. Wong 		__entry->len = len;
25380c9ec4beSDarrick J. Wong 		__entry->owner = owner;
25390c9ec4beSDarrick J. Wong 	),
25400c9ec4beSDarrick J. Wong 	TP_printk("dev %d:%d keydev %d:%d agno %u bno %llu len %llu owner %lld\n",
25410c9ec4beSDarrick J. Wong 		  MAJOR(__entry->dev), MINOR(__entry->dev),
25420c9ec4beSDarrick J. Wong 		  MAJOR(__entry->keydev), MINOR(__entry->keydev),
25430c9ec4beSDarrick J. Wong 		  __entry->agno,
25440c9ec4beSDarrick J. Wong 		  __entry->bno,
25450c9ec4beSDarrick J. Wong 		  __entry->len,
25460c9ec4beSDarrick J. Wong 		  __entry->owner)
25470c9ec4beSDarrick J. Wong )
25480c9ec4beSDarrick J. Wong #define DEFINE_FSMAP_EVENT(name) \
25490c9ec4beSDarrick J. Wong DEFINE_EVENT(ext4_fsmap_class, name, \
25500c9ec4beSDarrick J. Wong 	TP_PROTO(struct super_block *sb, u32 keydev, u32 agno, u64 bno, u64 len, \
25510c9ec4beSDarrick J. Wong 		 u64 owner), \
25520c9ec4beSDarrick J. Wong 	TP_ARGS(sb, keydev, agno, bno, len, owner))
25530c9ec4beSDarrick J. Wong DEFINE_FSMAP_EVENT(ext4_fsmap_low_key);
25540c9ec4beSDarrick J. Wong DEFINE_FSMAP_EVENT(ext4_fsmap_high_key);
25550c9ec4beSDarrick J. Wong DEFINE_FSMAP_EVENT(ext4_fsmap_mapping);
25560c9ec4beSDarrick J. Wong 
25570c9ec4beSDarrick J. Wong DECLARE_EVENT_CLASS(ext4_getfsmap_class,
25580c9ec4beSDarrick J. Wong 	TP_PROTO(struct super_block *sb, struct ext4_fsmap *fsmap),
25590c9ec4beSDarrick J. Wong 	TP_ARGS(sb, fsmap),
25600c9ec4beSDarrick J. Wong 	TP_STRUCT__entry(
25610c9ec4beSDarrick J. Wong 		__field(dev_t, dev)
25620c9ec4beSDarrick J. Wong 		__field(dev_t, keydev)
25630c9ec4beSDarrick J. Wong 		__field(u64, block)
25640c9ec4beSDarrick J. Wong 		__field(u64, len)
25650c9ec4beSDarrick J. Wong 		__field(u64, owner)
25660c9ec4beSDarrick J. Wong 		__field(u64, flags)
25670c9ec4beSDarrick J. Wong 	),
25680c9ec4beSDarrick J. Wong 	TP_fast_assign(
25690c9ec4beSDarrick J. Wong 		__entry->dev = sb->s_bdev->bd_dev;
25700c9ec4beSDarrick J. Wong 		__entry->keydev = new_decode_dev(fsmap->fmr_device);
25710c9ec4beSDarrick J. Wong 		__entry->block = fsmap->fmr_physical;
25720c9ec4beSDarrick J. Wong 		__entry->len = fsmap->fmr_length;
25730c9ec4beSDarrick J. Wong 		__entry->owner = fsmap->fmr_owner;
25740c9ec4beSDarrick J. Wong 		__entry->flags = fsmap->fmr_flags;
25750c9ec4beSDarrick J. Wong 	),
25760c9ec4beSDarrick J. Wong 	TP_printk("dev %d:%d keydev %d:%d block %llu len %llu owner %lld flags 0x%llx\n",
25770c9ec4beSDarrick J. Wong 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2578ccf0f32aSTheodore Ts'o 		  MAJOR(__entry->keydev), MINOR(__entry->keydev),
2579ccf0f32aSTheodore Ts'o 		  __entry->block,
2580ccf0f32aSTheodore Ts'o 		  __entry->len,
2581ccf0f32aSTheodore Ts'o 		  __entry->owner,
2582ccf0f32aSTheodore Ts'o 		  __entry->flags)
2583ccf0f32aSTheodore Ts'o )
2584ccf0f32aSTheodore Ts'o #define DEFINE_GETFSMAP_EVENT(name) \
2585ccf0f32aSTheodore Ts'o DEFINE_EVENT(ext4_getfsmap_class, name, \
2586ccf0f32aSTheodore Ts'o 	TP_PROTO(struct super_block *sb, struct ext4_fsmap *fsmap), \
2587ccf0f32aSTheodore Ts'o 	TP_ARGS(sb, fsmap))
2588ccf0f32aSTheodore Ts'o DEFINE_GETFSMAP_EVENT(ext4_getfsmap_low_key);
2589ccf0f32aSTheodore Ts'o DEFINE_GETFSMAP_EVENT(ext4_getfsmap_high_key);
2590ccf0f32aSTheodore Ts'o DEFINE_GETFSMAP_EVENT(ext4_getfsmap_mapping);
2591ccf0f32aSTheodore Ts'o 
2592ccf0f32aSTheodore Ts'o TRACE_EVENT(ext4_shutdown,
2593ccf0f32aSTheodore Ts'o 	TP_PROTO(struct super_block *sb, unsigned long flags),
2594ccf0f32aSTheodore Ts'o 
2595ccf0f32aSTheodore Ts'o 	TP_ARGS(sb, flags),
2596ccf0f32aSTheodore Ts'o 
2597ccf0f32aSTheodore Ts'o 	TP_STRUCT__entry(
2598ccf0f32aSTheodore Ts'o 		__field(	dev_t,	dev			)
2599ccf0f32aSTheodore Ts'o 		__field(     unsigned,	flags			)
2600ccf0f32aSTheodore Ts'o 	),
2601ccf0f32aSTheodore Ts'o 
2602ccf0f32aSTheodore Ts'o 	TP_fast_assign(
2603ccf0f32aSTheodore Ts'o 		__entry->dev	= sb->s_dev;
2604ccf0f32aSTheodore Ts'o 		__entry->flags	= flags;
2605ccf0f32aSTheodore Ts'o 	),
2606ccf0f32aSTheodore Ts'o 
2607ccf0f32aSTheodore Ts'o 	TP_printk("dev %d,%d flags %u",
2608ccf0f32aSTheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2609ccf0f32aSTheodore Ts'o 		  __entry->flags)
2610ccf0f32aSTheodore Ts'o );
2611ccf0f32aSTheodore Ts'o 
2612ccf0f32aSTheodore Ts'o TRACE_EVENT(ext4_error,
2613ccf0f32aSTheodore Ts'o 	TP_PROTO(struct super_block *sb, const char *function,
2614ccf0f32aSTheodore Ts'o 		 unsigned int line),
2615ccf0f32aSTheodore Ts'o 
2616ccf0f32aSTheodore Ts'o 	TP_ARGS(sb, function, line),
2617ccf0f32aSTheodore Ts'o 
2618ccf0f32aSTheodore Ts'o 	TP_STRUCT__entry(
2619ccf0f32aSTheodore Ts'o 		__field(	dev_t,	dev			)
2620ccf0f32aSTheodore Ts'o 		__field( const char *,	function		)
26213d392b26STheodore Ts'o 		__field(     unsigned,	line			)
26223d392b26STheodore Ts'o 	),
26233d392b26STheodore Ts'o 
26243d392b26STheodore Ts'o 	TP_fast_assign(
26253d392b26STheodore Ts'o 		__entry->dev	= sb->s_dev;
26263d392b26STheodore Ts'o 		__entry->function = function;
26273d392b26STheodore Ts'o 		__entry->line	= line;
26283d392b26STheodore Ts'o 	),
26293d392b26STheodore Ts'o 
26303d392b26STheodore Ts'o 	TP_printk("dev %d,%d function %s line %u",
26313d392b26STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
26323d392b26STheodore Ts'o 		  __entry->function, __entry->line)
26333d392b26STheodore Ts'o );
26343d392b26STheodore Ts'o 
26353d392b26STheodore Ts'o TRACE_EVENT(ext4_prefetch_bitmaps,
26363d392b26STheodore Ts'o 	    TP_PROTO(struct super_block *sb, ext4_group_t group,
26373d392b26STheodore Ts'o 		     ext4_group_t next, unsigned int prefetch_ios),
26383d392b26STheodore Ts'o 
26393d392b26STheodore Ts'o 	TP_ARGS(sb, group, next, prefetch_ios),
26403d392b26STheodore Ts'o 
26413d392b26STheodore Ts'o 	TP_STRUCT__entry(
26423d392b26STheodore Ts'o 		__field(	dev_t,	dev			)
26433d392b26STheodore Ts'o 		__field(	__u32,	group			)
26443d392b26STheodore Ts'o 		__field(	__u32,	next			)
26453d392b26STheodore Ts'o 		__field(	__u32,	ios			)
26463d392b26STheodore Ts'o 	),
26473d392b26STheodore Ts'o 
26483d392b26STheodore Ts'o 	TP_fast_assign(
26493d392b26STheodore Ts'o 		__entry->dev	= sb->s_dev;
26503d392b26STheodore Ts'o 		__entry->group	= group;
26513d392b26STheodore Ts'o 		__entry->next	= next;
26523d392b26STheodore Ts'o 		__entry->ios	= prefetch_ios;
26533d392b26STheodore Ts'o 	),
26543d392b26STheodore Ts'o 
26553d392b26STheodore Ts'o 	TP_printk("dev %d,%d group %u next %u ios %u",
26563d392b26STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
26573d392b26STheodore Ts'o 		  __entry->group, __entry->next, __entry->ios)
26583d392b26STheodore Ts'o );
26593d392b26STheodore Ts'o 
26603d392b26STheodore Ts'o TRACE_EVENT(ext4_lazy_itable_init,
26613d392b26STheodore Ts'o 	    TP_PROTO(struct super_block *sb, ext4_group_t group),
26623d392b26STheodore Ts'o 
26633d392b26STheodore Ts'o 	TP_ARGS(sb, group),
26643d392b26STheodore Ts'o 
26658016e29fSHarshad Shirwadkar 	TP_STRUCT__entry(
26668016e29fSHarshad Shirwadkar 		__field(	dev_t,	dev			)
26678016e29fSHarshad Shirwadkar 		__field(	__u32,	group			)
26688016e29fSHarshad Shirwadkar 	),
26698016e29fSHarshad Shirwadkar 
26708016e29fSHarshad Shirwadkar 	TP_fast_assign(
26718016e29fSHarshad Shirwadkar 		__entry->dev	= sb->s_dev;
26728016e29fSHarshad Shirwadkar 		__entry->group	= group;
26738016e29fSHarshad Shirwadkar 	),
26748016e29fSHarshad Shirwadkar 
26758016e29fSHarshad Shirwadkar 	TP_printk("dev %d,%d group %u",
26768016e29fSHarshad Shirwadkar 		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->group)
26778016e29fSHarshad Shirwadkar );
26788016e29fSHarshad Shirwadkar 
26798016e29fSHarshad Shirwadkar TRACE_EVENT(ext4_fc_replay_scan,
26808016e29fSHarshad Shirwadkar 	TP_PROTO(struct super_block *sb, int error, int off),
26818016e29fSHarshad Shirwadkar 
2682163f11b8SRitesh Harjani 	TP_ARGS(sb, error, off),
26838016e29fSHarshad Shirwadkar 
26848016e29fSHarshad Shirwadkar 	TP_STRUCT__entry(
26858016e29fSHarshad Shirwadkar 		__field(dev_t, dev)
26868016e29fSHarshad Shirwadkar 		__field(int, error)
26878016e29fSHarshad Shirwadkar 		__field(int, off)
26888016e29fSHarshad Shirwadkar 	),
26898016e29fSHarshad Shirwadkar 
26908016e29fSHarshad Shirwadkar 	TP_fast_assign(
26918016e29fSHarshad Shirwadkar 		__entry->dev = sb->s_dev;
26928016e29fSHarshad Shirwadkar 		__entry->error = error;
26938016e29fSHarshad Shirwadkar 		__entry->off = off;
26948016e29fSHarshad Shirwadkar 	),
26958016e29fSHarshad Shirwadkar 
26968016e29fSHarshad Shirwadkar 	TP_printk("dev %d,%d error %d, off %d",
26978016e29fSHarshad Shirwadkar 		  MAJOR(__entry->dev), MINOR(__entry->dev),
26988016e29fSHarshad Shirwadkar 		  __entry->error, __entry->off)
26998016e29fSHarshad Shirwadkar );
27008016e29fSHarshad Shirwadkar 
27018016e29fSHarshad Shirwadkar TRACE_EVENT(ext4_fc_replay,
27028016e29fSHarshad Shirwadkar 	TP_PROTO(struct super_block *sb, int tag, int ino, int priv1, int priv2),
27038016e29fSHarshad Shirwadkar 
27048016e29fSHarshad Shirwadkar 	TP_ARGS(sb, tag, ino, priv1, priv2),
27058016e29fSHarshad Shirwadkar 
27068016e29fSHarshad Shirwadkar 	TP_STRUCT__entry(
27078016e29fSHarshad Shirwadkar 		__field(dev_t, dev)
2708163f11b8SRitesh Harjani 		__field(int, tag)
27098016e29fSHarshad Shirwadkar 		__field(int, ino)
27108016e29fSHarshad Shirwadkar 		__field(int, priv1)
27118016e29fSHarshad Shirwadkar 		__field(int, priv2)
27128016e29fSHarshad Shirwadkar 	),
2713aa75f4d3SHarshad Shirwadkar 
27145641ace5SRitesh Harjani 	TP_fast_assign(
2715aa75f4d3SHarshad Shirwadkar 		__entry->dev = sb->s_dev;
27165641ace5SRitesh Harjani 		__entry->tag = tag;
2717aa75f4d3SHarshad Shirwadkar 		__entry->ino = ino;
2718aa75f4d3SHarshad Shirwadkar 		__entry->priv1 = priv1;
2719aa75f4d3SHarshad Shirwadkar 		__entry->priv2 = priv2;
27205641ace5SRitesh Harjani 	),
2721aa75f4d3SHarshad Shirwadkar 
2722aa75f4d3SHarshad Shirwadkar 	TP_printk("dev %d,%d: tag %d, ino %d, data1 %d, data2 %d",
2723aa75f4d3SHarshad Shirwadkar 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2724aa75f4d3SHarshad Shirwadkar 		  __entry->tag, __entry->ino, __entry->priv1, __entry->priv2)
27255641ace5SRitesh Harjani );
2726aa75f4d3SHarshad Shirwadkar 
2727aa75f4d3SHarshad Shirwadkar TRACE_EVENT(ext4_fc_commit_start,
27285641ace5SRitesh Harjani 	TP_PROTO(struct super_block *sb, tid_t commit_tid),
27295641ace5SRitesh Harjani 
2730aa75f4d3SHarshad Shirwadkar 	TP_ARGS(sb, commit_tid),
2731aa75f4d3SHarshad Shirwadkar 
2732aa75f4d3SHarshad Shirwadkar 	TP_STRUCT__entry(
27335641ace5SRitesh Harjani 		__field(dev_t, dev)
27345641ace5SRitesh Harjani 		__field(tid_t, tid)
2735aa75f4d3SHarshad Shirwadkar 	),
27365641ace5SRitesh Harjani 
2737aa75f4d3SHarshad Shirwadkar 	TP_fast_assign(
2738aa75f4d3SHarshad Shirwadkar 		__entry->dev = sb->s_dev;
2739aa75f4d3SHarshad Shirwadkar 		__entry->tid = commit_tid;
2740aa75f4d3SHarshad Shirwadkar 	),
2741aa75f4d3SHarshad Shirwadkar 
2742aa75f4d3SHarshad Shirwadkar 	TP_printk("dev %d,%d tid %u", MAJOR(__entry->dev), MINOR(__entry->dev),
2743aa75f4d3SHarshad Shirwadkar 		  __entry->tid)
2744aa75f4d3SHarshad Shirwadkar );
27455641ace5SRitesh Harjani 
2746aa75f4d3SHarshad Shirwadkar TRACE_EVENT(ext4_fc_commit_stop,
2747aa75f4d3SHarshad Shirwadkar 	    TP_PROTO(struct super_block *sb, int nblks, int reason,
2748aa75f4d3SHarshad Shirwadkar 		     tid_t commit_tid),
2749aa75f4d3SHarshad Shirwadkar 
2750aa75f4d3SHarshad Shirwadkar 	TP_ARGS(sb, nblks, reason, commit_tid),
2751aa75f4d3SHarshad Shirwadkar 
2752aa75f4d3SHarshad Shirwadkar 	TP_STRUCT__entry(
2753aa75f4d3SHarshad Shirwadkar 		__field(dev_t, dev)
2754aa75f4d3SHarshad Shirwadkar 		__field(int, nblks)
2755aa75f4d3SHarshad Shirwadkar 		__field(int, reason)
27565641ace5SRitesh Harjani 		__field(int, num_fc)
2757aa75f4d3SHarshad Shirwadkar 		__field(int, num_fc_ineligible)
2758aa75f4d3SHarshad Shirwadkar 		__field(int, nblks_agg)
27595641ace5SRitesh Harjani 		__field(tid_t, tid)
2760aa75f4d3SHarshad Shirwadkar 	),
2761aa75f4d3SHarshad Shirwadkar 
27625641ace5SRitesh Harjani 	TP_fast_assign(
2763aa75f4d3SHarshad Shirwadkar 		__entry->dev = sb->s_dev;
2764aa75f4d3SHarshad Shirwadkar 		__entry->nblks = nblks;
2765aa75f4d3SHarshad Shirwadkar 		__entry->reason = reason;
2766aa75f4d3SHarshad Shirwadkar 		__entry->num_fc = EXT4_SB(sb)->s_fc_stats.fc_num_commits;
27677af1974aSRitesh Harjani 		__entry->num_fc_ineligible =
2768aa75f4d3SHarshad Shirwadkar 			EXT4_SB(sb)->s_fc_stats.fc_ineligible_commits;
2769aa75f4d3SHarshad Shirwadkar 		__entry->nblks_agg = EXT4_SB(sb)->s_fc_stats.fc_numblks;
2770aa75f4d3SHarshad Shirwadkar 		__entry->tid = commit_tid;
2771aa75f4d3SHarshad Shirwadkar 	),
2772aa75f4d3SHarshad Shirwadkar 
2773aa75f4d3SHarshad Shirwadkar 	TP_printk("dev %d,%d nblks %d, reason %d, fc = %d, ineligible = %d, agg_nblks %d, tid %u",
2774aa75f4d3SHarshad Shirwadkar 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2775aa75f4d3SHarshad Shirwadkar 		  __entry->nblks, __entry->reason, __entry->num_fc,
27767af1974aSRitesh Harjani 		  __entry->num_fc_ineligible, __entry->nblks_agg, __entry->tid)
27777af1974aSRitesh Harjani );
27787af1974aSRitesh Harjani 
27797af1974aSRitesh Harjani #define FC_REASON_NAME_STAT(reason)					\
2780aa75f4d3SHarshad Shirwadkar 	show_fc_reason(reason),						\
2781aa75f4d3SHarshad Shirwadkar 	__entry->fc_ineligible_rc[reason]
2782aa75f4d3SHarshad Shirwadkar 
27837af1974aSRitesh Harjani TRACE_EVENT(ext4_fc_stats,
27847af1974aSRitesh Harjani 	TP_PROTO(struct super_block *sb),
2785aa75f4d3SHarshad Shirwadkar 
27867af1974aSRitesh Harjani 	TP_ARGS(sb),
27877af1974aSRitesh Harjani 
27887af1974aSRitesh Harjani 	TP_STRUCT__entry(
27897af1974aSRitesh Harjani 		__field(dev_t, dev)
27907af1974aSRitesh Harjani 		__array(unsigned int, fc_ineligible_rc, EXT4_FC_REASON_MAX)
27917af1974aSRitesh Harjani 		__field(unsigned long, fc_commits)
27927af1974aSRitesh Harjani 		__field(unsigned long, fc_ineligible_commits)
27937af1974aSRitesh Harjani 		__field(unsigned long, fc_numblks)
2794aa75f4d3SHarshad Shirwadkar 	),
2795aa75f4d3SHarshad Shirwadkar 
27967af1974aSRitesh Harjani 	TP_fast_assign(
2797*0fbcb525SEric Biggers 		int i;
27987af1974aSRitesh Harjani 
2799aa75f4d3SHarshad Shirwadkar 		__entry->dev = sb->s_dev;
2800aa75f4d3SHarshad Shirwadkar 		for (i = 0; i < EXT4_FC_REASON_MAX; i++) {
2801aa75f4d3SHarshad Shirwadkar 			__entry->fc_ineligible_rc[i] =
2802aa75f4d3SHarshad Shirwadkar 				EXT4_SB(sb)->s_fc_stats.fc_ineligible_reason_count[i];
2803b21ebf14SHarshad Shirwadkar 		}
2804aa75f4d3SHarshad Shirwadkar 		__entry->fc_commits = EXT4_SB(sb)->s_fc_stats.fc_num_commits;
2805aa75f4d3SHarshad Shirwadkar 		__entry->fc_ineligible_commits =
2806aa75f4d3SHarshad Shirwadkar 			EXT4_SB(sb)->s_fc_stats.fc_ineligible_commits;
2807aa75f4d3SHarshad Shirwadkar 		__entry->fc_numblks = EXT4_SB(sb)->s_fc_stats.fc_numblks;
2808556e0319SHarshad Shirwadkar 	),
2809*0fbcb525SEric Biggers 
28107af1974aSRitesh Harjani 	TP_printk("dev %d,%d fc ineligible reasons:\n"
28117af1974aSRitesh Harjani 		  "%s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u"
2812aa75f4d3SHarshad Shirwadkar 		  "num_commits:%lu, ineligible: %lu, numblks: %lu",
2813aa75f4d3SHarshad Shirwadkar 		  MAJOR(__entry->dev), MINOR(__entry->dev),
28148cb5a303SRitesh Harjani 		  FC_REASON_NAME_STAT(EXT4_FC_REASON_XATTR),
28158cb5a303SRitesh Harjani 		  FC_REASON_NAME_STAT(EXT4_FC_REASON_CROSS_RENAME),
28161d2e2440SRitesh Harjani 		  FC_REASON_NAME_STAT(EXT4_FC_REASON_JOURNAL_FLAG_CHANGE),
28171d2e2440SRitesh Harjani 		  FC_REASON_NAME_STAT(EXT4_FC_REASON_NOMEM),
28188cb5a303SRitesh Harjani 		  FC_REASON_NAME_STAT(EXT4_FC_REASON_SWAP_BOOT),
28191d2e2440SRitesh Harjani 		  FC_REASON_NAME_STAT(EXT4_FC_REASON_RESIZE),
28208cb5a303SRitesh Harjani 		  FC_REASON_NAME_STAT(EXT4_FC_REASON_RENAME_DIR),
28218cb5a303SRitesh Harjani 		  FC_REASON_NAME_STAT(EXT4_FC_REASON_FALLOC_RANGE),
28228cb5a303SRitesh Harjani 		  FC_REASON_NAME_STAT(EXT4_FC_REASON_INODE_JOURNAL_DATA),
28231d2e2440SRitesh Harjani 		  FC_REASON_NAME_STAT(EXT4_FC_REASON_ENCRYPTED_FILENAME),
28248cb5a303SRitesh Harjani 		  __entry->fc_commits, __entry->fc_ineligible_commits,
28251d2e2440SRitesh Harjani 		  __entry->fc_numblks)
28268cb5a303SRitesh Harjani );
28278cb5a303SRitesh Harjani 
28288cb5a303SRitesh Harjani DECLARE_EVENT_CLASS(ext4_fc_track_dentry,
28298cb5a303SRitesh Harjani 
28301d2e2440SRitesh Harjani 	TP_PROTO(handle_t *handle, struct inode *inode,
28311d2e2440SRitesh Harjani 		 struct dentry *dentry, int ret),
28328cb5a303SRitesh Harjani 
28331d2e2440SRitesh Harjani 	TP_ARGS(handle, inode, dentry, ret),
28348cb5a303SRitesh Harjani 
28351d2e2440SRitesh Harjani 	TP_STRUCT__entry(
28368cb5a303SRitesh Harjani 		__field(dev_t, dev)
28378cb5a303SRitesh Harjani 		__field(tid_t, t_tid)
28388cb5a303SRitesh Harjani 		__field(ino_t, i_ino)
28391d2e2440SRitesh Harjani 		__field(tid_t, i_sync_tid)
28408cb5a303SRitesh Harjani 		__field(int, error)
28411d2e2440SRitesh Harjani 	),
28421d2e2440SRitesh Harjani 
28438cb5a303SRitesh Harjani 	TP_fast_assign(
28448cb5a303SRitesh Harjani 		struct ext4_inode_info *ei = EXT4_I(inode);
28458cb5a303SRitesh Harjani 
28468cb5a303SRitesh Harjani 		__entry->dev = inode->i_sb->s_dev;
28478cb5a303SRitesh Harjani 		__entry->t_tid = handle->h_transaction->t_tid;
28481d2e2440SRitesh Harjani 		__entry->i_ino = inode->i_ino;
28491d2e2440SRitesh Harjani 		__entry->i_sync_tid = ei->i_sync_tid;
28501d2e2440SRitesh Harjani 		__entry->error = ret;
2851aa75f4d3SHarshad Shirwadkar 	),
2852aa75f4d3SHarshad Shirwadkar 
28538cb5a303SRitesh Harjani 	TP_printk("dev %d,%d, t_tid %u, ino %lu, i_sync_tid %u, error %d",
28548cb5a303SRitesh Harjani 		  MAJOR(__entry->dev), MINOR(__entry->dev),
28558cb5a303SRitesh Harjani 		  __entry->t_tid, __entry->i_ino, __entry->i_sync_tid,
2856aa75f4d3SHarshad Shirwadkar 		  __entry->error
2857aa75f4d3SHarshad Shirwadkar 	)
28581d2e2440SRitesh Harjani );
2859aa75f4d3SHarshad Shirwadkar 
28601d2e2440SRitesh Harjani #define DEFINE_EVENT_CLASS_DENTRY(__type)				\
2861aa75f4d3SHarshad Shirwadkar DEFINE_EVENT(ext4_fc_track_dentry, ext4_fc_track_##__type,		\
2862aa75f4d3SHarshad Shirwadkar 	TP_PROTO(handle_t *handle, struct inode *inode,			\
2863aa75f4d3SHarshad Shirwadkar 		 struct dentry *dentry, int ret),			\
28641d2e2440SRitesh Harjani 	TP_ARGS(handle, inode, dentry, ret)				\
28651d2e2440SRitesh Harjani )
28661d2e2440SRitesh Harjani 
2867aa75f4d3SHarshad Shirwadkar DEFINE_EVENT_CLASS_DENTRY(create);
2868aa75f4d3SHarshad Shirwadkar DEFINE_EVENT_CLASS_DENTRY(link);
2869aa75f4d3SHarshad Shirwadkar DEFINE_EVENT_CLASS_DENTRY(unlink);
2870aa75f4d3SHarshad Shirwadkar 
28711d2e2440SRitesh Harjani TRACE_EVENT(ext4_fc_track_inode,
28721d2e2440SRitesh Harjani 	TP_PROTO(handle_t *handle, struct inode *inode, int ret),
2873aa75f4d3SHarshad Shirwadkar 
28741d2e2440SRitesh Harjani 	TP_ARGS(handle, inode, ret),
28751d2e2440SRitesh Harjani 
28761d2e2440SRitesh Harjani 	TP_STRUCT__entry(
2877aa75f4d3SHarshad Shirwadkar 		__field(dev_t, dev)
2878aa75f4d3SHarshad Shirwadkar 		__field(tid_t, t_tid)
2879aa75f4d3SHarshad Shirwadkar 		__field(ino_t, i_ino)
28801d2e2440SRitesh Harjani 		__field(tid_t, i_sync_tid)
2881aa75f4d3SHarshad Shirwadkar 		__field(int, error)
28821d2e2440SRitesh Harjani 	),
28831d2e2440SRitesh Harjani 
2884aa75f4d3SHarshad Shirwadkar 	TP_fast_assign(
2885aa75f4d3SHarshad Shirwadkar 		struct ext4_inode_info *ei = EXT4_I(inode);
2886aa75f4d3SHarshad Shirwadkar 
28871d2e2440SRitesh Harjani 		__entry->dev = inode->i_sb->s_dev;
28881d2e2440SRitesh Harjani 		__entry->t_tid = handle->h_transaction->t_tid;
2889aa75f4d3SHarshad Shirwadkar 		__entry->i_ino = inode->i_ino;
28901d2e2440SRitesh Harjani 		__entry->i_sync_tid = ei->i_sync_tid;
2891aa75f4d3SHarshad Shirwadkar 		__entry->error = ret;
2892aa75f4d3SHarshad Shirwadkar 	),
2893aa75f4d3SHarshad Shirwadkar 
28941d2e2440SRitesh Harjani 	TP_printk("dev %d:%d, t_tid %u, inode %lu, i_sync_tid %u, error %d",
28951d2e2440SRitesh Harjani 		  MAJOR(__entry->dev), MINOR(__entry->dev),
28961d2e2440SRitesh Harjani 		  __entry->t_tid, __entry->i_ino, __entry->i_sync_tid,
2897aa75f4d3SHarshad Shirwadkar 		  __entry->error)
2898aa75f4d3SHarshad Shirwadkar 	);
2899aa75f4d3SHarshad Shirwadkar 
2900aa75f4d3SHarshad Shirwadkar TRACE_EVENT(ext4_fc_track_range,
2901aa75f4d3SHarshad Shirwadkar 	TP_PROTO(handle_t *handle, struct inode *inode,
2902aa75f4d3SHarshad Shirwadkar 		 long start, long end, int ret),
29031d2e2440SRitesh Harjani 
29041d2e2440SRitesh Harjani 	TP_ARGS(handle, inode, start, end, ret),
2905aa75f4d3SHarshad Shirwadkar 
29061d2e2440SRitesh Harjani 	TP_STRUCT__entry(
29071d2e2440SRitesh Harjani 		__field(dev_t, dev)
29081d2e2440SRitesh Harjani 		__field(tid_t, t_tid)
2909aa75f4d3SHarshad Shirwadkar 		__field(ino_t, i_ino)
2910aa75f4d3SHarshad Shirwadkar 		__field(tid_t, i_sync_tid)
2911aa75f4d3SHarshad Shirwadkar 		__field(long, start)
2912aa75f4d3SHarshad Shirwadkar 		__field(long, end)
2913aa75f4d3SHarshad Shirwadkar 		__field(int, error)
29141d2e2440SRitesh Harjani 	),
2915aa75f4d3SHarshad Shirwadkar 
29161d2e2440SRitesh Harjani 	TP_fast_assign(
29171d2e2440SRitesh Harjani 		struct ext4_inode_info *ei = EXT4_I(inode);
2918aa75f4d3SHarshad Shirwadkar 
2919aa75f4d3SHarshad Shirwadkar 		__entry->dev = inode->i_sb->s_dev;
292008f4c42aSRitesh Harjani 		__entry->t_tid = handle->h_transaction->t_tid;
292108f4c42aSRitesh Harjani 		__entry->i_ino = inode->i_ino;
292208f4c42aSRitesh Harjani 		__entry->i_sync_tid = ei->i_sync_tid;
292308f4c42aSRitesh Harjani 		__entry->start = start;
292408f4c42aSRitesh Harjani 		__entry->end = end;
292508f4c42aSRitesh Harjani 		__entry->error = ret;
292608f4c42aSRitesh Harjani 	),
292708f4c42aSRitesh Harjani 
292808f4c42aSRitesh Harjani 	TP_printk("dev %d:%d, t_tid %u, inode %lu, i_sync_tid %u, error %d, start %ld, end %ld",
292908f4c42aSRitesh Harjani 		  MAJOR(__entry->dev), MINOR(__entry->dev),
293008f4c42aSRitesh Harjani 		  __entry->t_tid, __entry->i_ino, __entry->i_sync_tid,
293108f4c42aSRitesh Harjani 		  __entry->error, __entry->start, __entry->end)
293208f4c42aSRitesh Harjani 	);
293308f4c42aSRitesh Harjani 
293408f4c42aSRitesh Harjani TRACE_EVENT(ext4_fc_cleanup,
293508f4c42aSRitesh Harjani 	TP_PROTO(journal_t *journal, int full, tid_t tid),
293608f4c42aSRitesh Harjani 
293708f4c42aSRitesh Harjani 	TP_ARGS(journal, full, tid),
293808f4c42aSRitesh Harjani 
293908f4c42aSRitesh Harjani 	TP_STRUCT__entry(
294008f4c42aSRitesh Harjani 		__field(dev_t, dev)
294108f4c42aSRitesh Harjani 		__field(int, j_fc_off)
294208f4c42aSRitesh Harjani 		__field(int, full)
294308f4c42aSRitesh Harjani 		__field(tid_t, tid)
294408f4c42aSRitesh Harjani 	),
294508f4c42aSRitesh Harjani 
2946bbc605cdSLukas Czerner 	TP_fast_assign(
2947bbc605cdSLukas Czerner 		struct super_block *sb = journal->j_private;
2948bbc605cdSLukas Czerner 
2949bbc605cdSLukas Czerner 		__entry->dev = sb->s_dev;
2950bbc605cdSLukas Czerner 		__entry->j_fc_off = journal->j_fc_off;
2951bbc605cdSLukas Czerner 		__entry->full = full;
2952bbc605cdSLukas Czerner 		__entry->tid = tid;
2953bbc605cdSLukas Czerner 	),
2954bbc605cdSLukas Czerner 
2955bbc605cdSLukas Czerner 	TP_printk("dev %d,%d, j_fc_off %d, full %d, tid %u",
2956bbc605cdSLukas Czerner 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2957bbc605cdSLukas Czerner 		  __entry->j_fc_off, __entry->full, __entry->tid)
2958bbc605cdSLukas Czerner 	);
2959bbc605cdSLukas Czerner 
2960bbc605cdSLukas Czerner TRACE_EVENT(ext4_update_sb,
2961bbc605cdSLukas Czerner 	TP_PROTO(struct super_block *sb, ext4_fsblk_t fsblk,
2962bbc605cdSLukas Czerner 		 unsigned int flags),
2963bbc605cdSLukas Czerner 
2964bbc605cdSLukas Czerner 	TP_ARGS(sb, fsblk, flags),
2965bbc605cdSLukas Czerner 
2966bbc605cdSLukas Czerner 	TP_STRUCT__entry(
2967bbc605cdSLukas Czerner 		__field(dev_t,		dev)
2968bbc605cdSLukas Czerner 		__field(ext4_fsblk_t,	fsblk)
29699bffad1eSTheodore Ts'o 		__field(unsigned int,	flags)
29709bffad1eSTheodore Ts'o 	),
29719bffad1eSTheodore Ts'o 
29729bffad1eSTheodore Ts'o 	TP_fast_assign(
2973 		__entry->dev	= sb->s_dev;
2974 		__entry->fsblk	= fsblk;
2975 		__entry->flags	= flags;
2976 	),
2977 
2978 	TP_printk("dev %d,%d fsblk %llu flags %u",
2979 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2980 		  __entry->fsblk, __entry->flags)
2981 );
2982 
2983 #endif /* _TRACE_EXT4_H */
2984 
2985 /* This part must be outside protection */
2986 #include <trace/define_trace.h>
2987