xref: /openbmc/linux/include/trace/events/ext4.h (revision 21ddd568)
19bffad1eSTheodore Ts'o #undef TRACE_SYSTEM
29bffad1eSTheodore Ts'o #define TRACE_SYSTEM ext4
39bffad1eSTheodore Ts'o 
4d0b6e04aSLi Zefan #if !defined(_TRACE_EXT4_H) || defined(TRACE_HEADER_MULTI_READ)
5d0b6e04aSLi Zefan #define _TRACE_EXT4_H
6d0b6e04aSLi Zefan 
79bffad1eSTheodore Ts'o #include <linux/writeback.h>
89bffad1eSTheodore Ts'o #include <linux/tracepoint.h>
99bffad1eSTheodore Ts'o 
103661d286STheodore Ts'o struct ext4_allocation_context;
113661d286STheodore Ts'o struct ext4_allocation_request;
126f91bc5fSEric Gouriou struct ext4_extent;
133661d286STheodore Ts'o struct ext4_prealloc_space;
14fb40ba0dSTheodore Ts'o struct ext4_inode_info;
150ef12249SJosh Stone struct mpage_da_data;
16d8990240SAditya Kali struct ext4_map_blocks;
17d8990240SAditya Kali struct ext4_extent;
18992e9fddSZheng Liu struct extent_status;
19fb40ba0dSTheodore Ts'o 
20fb40ba0dSTheodore Ts'o #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
213661d286STheodore Ts'o 
2221ddd568STheodore Ts'o #define show_mballoc_flags(flags) __print_flags(flags, "|",	\
2321ddd568STheodore Ts'o 	{ EXT4_MB_HINT_MERGE,		"HINT_MERGE" },		\
2421ddd568STheodore Ts'o 	{ EXT4_MB_HINT_RESERVED,	"HINT_RESV" },		\
2521ddd568STheodore Ts'o 	{ EXT4_MB_HINT_METADATA,	"HINT_MDATA" },		\
2621ddd568STheodore Ts'o 	{ EXT4_MB_HINT_FIRST,		"HINT_FIRST" },		\
2721ddd568STheodore Ts'o 	{ EXT4_MB_HINT_BEST,		"HINT_BEST" },		\
2821ddd568STheodore Ts'o 	{ EXT4_MB_HINT_DATA,		"HINT_DATA" },		\
2921ddd568STheodore Ts'o 	{ EXT4_MB_HINT_NOPREALLOC,	"HINT_NOPREALLOC" },	\
3021ddd568STheodore Ts'o 	{ EXT4_MB_HINT_GROUP_ALLOC,	"HINT_GRP_ALLOC" },	\
3121ddd568STheodore Ts'o 	{ EXT4_MB_HINT_GOAL_ONLY,	"HINT_GOAL_ONLY" },	\
3221ddd568STheodore Ts'o 	{ EXT4_MB_HINT_TRY_GOAL,	"HINT_TRY_GOAL" },	\
3321ddd568STheodore Ts'o 	{ EXT4_MB_DELALLOC_RESERVED,	"DELALLOC_RESV" },	\
3421ddd568STheodore Ts'o 	{ EXT4_MB_STREAM_ALLOC,		"STREAM_ALLOC" },	\
3521ddd568STheodore Ts'o 	{ EXT4_MB_USE_ROOT_BLOCKS,	"USE_ROOT_BLKS" },	\
3621ddd568STheodore Ts'o 	{ EXT4_MB_USE_RESERVED,		"USE_RESV" })
3721ddd568STheodore Ts'o 
3821ddd568STheodore Ts'o #define show_map_flags(flags) __print_flags(flags, "|",			\
3921ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_CREATE,		"CREATE" },		\
4021ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_UNINIT_EXT,		"UNINIT" },		\
4121ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_DELALLOC_RESERVE,	"DELALLOC" },		\
4221ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_PRE_IO,		"PRE_IO" },		\
4321ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_CONVERT,		"CONVERT" },		\
4421ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_METADATA_NOFAIL,	"METADATA_NOFAIL" },	\
4521ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_NO_NORMALIZE,		"NO_NORMALIZE" },	\
4621ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_KEEP_SIZE,		"KEEP_SIZE" },		\
4721ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_NO_LOCK,		"NO_LOCK" },		\
4821ddd568STheodore Ts'o 	{ EXT4_GET_BLOCKS_NO_PUT_HOLE,		"NO_PUT_HOLE" })
4921ddd568STheodore Ts'o 
5021ddd568STheodore Ts'o #define show_mflags(flags) __print_flags(flags, "",	\
5121ddd568STheodore Ts'o 	{ EXT4_MAP_NEW,		"N" },			\
5221ddd568STheodore Ts'o 	{ EXT4_MAP_MAPPED,	"M" },			\
5321ddd568STheodore Ts'o 	{ EXT4_MAP_UNWRITTEN,	"U" },			\
5421ddd568STheodore Ts'o 	{ EXT4_MAP_BOUNDARY,	"B" },			\
5521ddd568STheodore Ts'o 	{ EXT4_MAP_UNINIT,	"u" },			\
5621ddd568STheodore Ts'o 	{ EXT4_MAP_FROM_CLUSTER, "C" })
5721ddd568STheodore Ts'o 
5821ddd568STheodore Ts'o #define show_free_flags(flags) __print_flags(flags, "|",	\
5921ddd568STheodore Ts'o 	{ EXT4_FREE_BLOCKS_METADATA,		"METADATA" },	\
6021ddd568STheodore Ts'o 	{ EXT4_FREE_BLOCKS_FORGET,		"FORGET" },	\
6121ddd568STheodore Ts'o 	{ EXT4_FREE_BLOCKS_VALIDATED,		"VALIDATED" },	\
6221ddd568STheodore Ts'o 	{ EXT4_FREE_BLOCKS_NO_QUOT_UPDATE,	"NO_QUOTA" },	\
6321ddd568STheodore Ts'o 	{ EXT4_FREE_BLOCKS_NOFREE_FIRST_CLUSTER,"1ST_CLUSTER" },\
6421ddd568STheodore Ts'o 	{ EXT4_FREE_BLOCKS_NOFREE_LAST_CLUSTER,	"LAST_CLUSTER" })
6521ddd568STheodore Ts'o 
6621ddd568STheodore Ts'o #define show_extent_status(status) __print_flags(status, "",	\
6721ddd568STheodore Ts'o 	{ (1 << 3),	"W" }, 					\
6821ddd568STheodore Ts'o 	{ (1 << 2),	"U" },					\
6921ddd568STheodore Ts'o 	{ (1 << 1),	"D" },					\
7021ddd568STheodore Ts'o 	{ (1 << 0),	"H" })
7121ddd568STheodore Ts'o 
7221ddd568STheodore Ts'o 
739bffad1eSTheodore Ts'o TRACE_EVENT(ext4_free_inode,
749bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode),
759bffad1eSTheodore Ts'o 
769bffad1eSTheodore Ts'o 	TP_ARGS(inode),
779bffad1eSTheodore Ts'o 
789bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
790562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
809bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
819bffad1eSTheodore Ts'o 		__field(	uid_t,	uid			)
829bffad1eSTheodore Ts'o 		__field(	gid_t,	gid			)
83a9c667f8SLukas Czerner 		__field(	__u64, blocks			)
84210c0526SAnatol Pomozov 		__field(	__u16, mode			)
859bffad1eSTheodore Ts'o 	),
869bffad1eSTheodore Ts'o 
879bffad1eSTheodore Ts'o 	TP_fast_assign(
880562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
899bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
9008cefc7aSEric W. Biederman 		__entry->uid	= i_uid_read(inode);
9108cefc7aSEric W. Biederman 		__entry->gid	= i_gid_read(inode);
929bffad1eSTheodore Ts'o 		__entry->blocks	= inode->i_blocks;
93210c0526SAnatol Pomozov 		__entry->mode	= inode->i_mode;
949bffad1eSTheodore Ts'o 	),
959bffad1eSTheodore Ts'o 
96a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu mode 0%o uid %u gid %u blocks %llu",
970562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
98a9c667f8SLukas Czerner 		  (unsigned long) __entry->ino, __entry->mode,
99a9c667f8SLukas Czerner 		  __entry->uid, __entry->gid, __entry->blocks)
1009bffad1eSTheodore Ts'o );
1019bffad1eSTheodore Ts'o 
1029bffad1eSTheodore Ts'o TRACE_EVENT(ext4_request_inode,
1039bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *dir, int mode),
1049bffad1eSTheodore Ts'o 
1059bffad1eSTheodore Ts'o 	TP_ARGS(dir, mode),
1069bffad1eSTheodore Ts'o 
1079bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
1080562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1099bffad1eSTheodore Ts'o 		__field(	ino_t,	dir			)
11059be8e72STheodore Ts'o 		__field(	__u16, mode			)
1119bffad1eSTheodore Ts'o 	),
1129bffad1eSTheodore Ts'o 
1139bffad1eSTheodore Ts'o 	TP_fast_assign(
1140562e0baSJiaying Zhang 		__entry->dev	= dir->i_sb->s_dev;
1159bffad1eSTheodore Ts'o 		__entry->dir	= dir->i_ino;
1169bffad1eSTheodore Ts'o 		__entry->mode	= mode;
1179bffad1eSTheodore Ts'o 	),
1189bffad1eSTheodore Ts'o 
119a269029dSTheodore Ts'o 	TP_printk("dev %d,%d dir %lu mode 0%o",
1200562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
121a269029dSTheodore Ts'o 		  (unsigned long) __entry->dir, __entry->mode)
1229bffad1eSTheodore Ts'o );
1239bffad1eSTheodore Ts'o 
1249bffad1eSTheodore Ts'o TRACE_EVENT(ext4_allocate_inode,
1259bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, struct inode *dir, int mode),
1269bffad1eSTheodore Ts'o 
1279bffad1eSTheodore Ts'o 	TP_ARGS(inode, dir, mode),
1289bffad1eSTheodore Ts'o 
1299bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
1300562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1319bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
1329bffad1eSTheodore Ts'o 		__field(	ino_t,	dir			)
13359be8e72STheodore Ts'o 		__field(	__u16,	mode			)
1349bffad1eSTheodore Ts'o 	),
1359bffad1eSTheodore Ts'o 
1369bffad1eSTheodore Ts'o 	TP_fast_assign(
1370562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1389bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
1399bffad1eSTheodore Ts'o 		__entry->dir	= dir->i_ino;
1409bffad1eSTheodore Ts'o 		__entry->mode	= mode;
1419bffad1eSTheodore Ts'o 	),
1429bffad1eSTheodore Ts'o 
143a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu dir %lu mode 0%o",
1440562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
145a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
146a3710fd1STheodore Ts'o 		  (unsigned long) __entry->dir, __entry->mode)
1479bffad1eSTheodore Ts'o );
1489bffad1eSTheodore Ts'o 
1497ff9c073STheodore Ts'o TRACE_EVENT(ext4_evict_inode,
1507ff9c073STheodore Ts'o 	TP_PROTO(struct inode *inode),
1517ff9c073STheodore Ts'o 
1527ff9c073STheodore Ts'o 	TP_ARGS(inode),
1537ff9c073STheodore Ts'o 
1547ff9c073STheodore Ts'o 	TP_STRUCT__entry(
1550562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1567ff9c073STheodore Ts'o 		__field(	ino_t,	ino			)
1577ff9c073STheodore Ts'o 		__field(	int,	nlink			)
1587ff9c073STheodore Ts'o 	),
1597ff9c073STheodore Ts'o 
1607ff9c073STheodore Ts'o 	TP_fast_assign(
1610562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1627ff9c073STheodore Ts'o 		__entry->ino	= inode->i_ino;
1637ff9c073STheodore Ts'o 		__entry->nlink	= inode->i_nlink;
1647ff9c073STheodore Ts'o 	),
1657ff9c073STheodore Ts'o 
1667ff9c073STheodore Ts'o 	TP_printk("dev %d,%d ino %lu nlink %d",
1670562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1687ff9c073STheodore Ts'o 		  (unsigned long) __entry->ino, __entry->nlink)
1697ff9c073STheodore Ts'o );
1707ff9c073STheodore Ts'o 
1717ff9c073STheodore Ts'o TRACE_EVENT(ext4_drop_inode,
1727ff9c073STheodore Ts'o 	TP_PROTO(struct inode *inode, int drop),
1737ff9c073STheodore Ts'o 
1747ff9c073STheodore Ts'o 	TP_ARGS(inode, drop),
1757ff9c073STheodore Ts'o 
1767ff9c073STheodore Ts'o 	TP_STRUCT__entry(
1770562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1787ff9c073STheodore Ts'o 		__field(	ino_t,	ino			)
1797ff9c073STheodore Ts'o 		__field(	int,	drop			)
1807ff9c073STheodore Ts'o 	),
1817ff9c073STheodore Ts'o 
1827ff9c073STheodore Ts'o 	TP_fast_assign(
1830562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1847ff9c073STheodore Ts'o 		__entry->ino	= inode->i_ino;
1857ff9c073STheodore Ts'o 		__entry->drop	= drop;
1867ff9c073STheodore Ts'o 	),
1877ff9c073STheodore Ts'o 
1887ff9c073STheodore Ts'o 	TP_printk("dev %d,%d ino %lu drop %d",
1890562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1907ff9c073STheodore Ts'o 		  (unsigned long) __entry->ino, __entry->drop)
1917ff9c073STheodore Ts'o );
1927ff9c073STheodore Ts'o 
1937ff9c073STheodore Ts'o TRACE_EVENT(ext4_mark_inode_dirty,
1947ff9c073STheodore Ts'o 	TP_PROTO(struct inode *inode, unsigned long IP),
1957ff9c073STheodore Ts'o 
1967ff9c073STheodore Ts'o 	TP_ARGS(inode, IP),
1977ff9c073STheodore Ts'o 
1987ff9c073STheodore Ts'o 	TP_STRUCT__entry(
1990562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
2007ff9c073STheodore Ts'o 		__field(	ino_t,	ino			)
2017ff9c073STheodore Ts'o 		__field(unsigned long,	ip			)
2027ff9c073STheodore Ts'o 	),
2037ff9c073STheodore Ts'o 
2047ff9c073STheodore Ts'o 	TP_fast_assign(
2050562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
2067ff9c073STheodore Ts'o 		__entry->ino	= inode->i_ino;
2077ff9c073STheodore Ts'o 		__entry->ip	= IP;
2087ff9c073STheodore Ts'o 	),
2097ff9c073STheodore Ts'o 
2107ff9c073STheodore Ts'o 	TP_printk("dev %d,%d ino %lu caller %pF",
2110562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2127ff9c073STheodore Ts'o 		  (unsigned long) __entry->ino, (void *)__entry->ip)
2137ff9c073STheodore Ts'o );
2147ff9c073STheodore Ts'o 
2157ff9c073STheodore Ts'o TRACE_EVENT(ext4_begin_ordered_truncate,
2167ff9c073STheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t new_size),
2177ff9c073STheodore Ts'o 
2187ff9c073STheodore Ts'o 	TP_ARGS(inode, new_size),
2197ff9c073STheodore Ts'o 
2207ff9c073STheodore Ts'o 	TP_STRUCT__entry(
2210562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
2227ff9c073STheodore Ts'o 		__field(	ino_t,	ino			)
2237ff9c073STheodore Ts'o 		__field(	loff_t,	new_size		)
2247ff9c073STheodore Ts'o 	),
2257ff9c073STheodore Ts'o 
2267ff9c073STheodore Ts'o 	TP_fast_assign(
2270562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
2287ff9c073STheodore Ts'o 		__entry->ino		= inode->i_ino;
2297ff9c073STheodore Ts'o 		__entry->new_size	= new_size;
2307ff9c073STheodore Ts'o 	),
2317ff9c073STheodore Ts'o 
2327ff9c073STheodore Ts'o 	TP_printk("dev %d,%d ino %lu new_size %lld",
2330562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2347ff9c073STheodore Ts'o 		  (unsigned long) __entry->ino,
235a9c667f8SLukas Czerner 		  __entry->new_size)
2367ff9c073STheodore Ts'o );
2377ff9c073STheodore Ts'o 
238b5eb34c3SLi Zefan DECLARE_EVENT_CLASS(ext4__write_begin,
2399bffad1eSTheodore Ts'o 
2409bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
2419bffad1eSTheodore Ts'o 		 unsigned int flags),
2429bffad1eSTheodore Ts'o 
2439bffad1eSTheodore Ts'o 	TP_ARGS(inode, pos, len, flags),
2449bffad1eSTheodore Ts'o 
2459bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
2460562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
2479bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
2489bffad1eSTheodore Ts'o 		__field(	loff_t,	pos			)
2499bffad1eSTheodore Ts'o 		__field(	unsigned int, len		)
2509bffad1eSTheodore Ts'o 		__field(	unsigned int, flags		)
2519bffad1eSTheodore Ts'o 	),
2529bffad1eSTheodore Ts'o 
2539bffad1eSTheodore Ts'o 	TP_fast_assign(
2540562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
2559bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
2569bffad1eSTheodore Ts'o 		__entry->pos	= pos;
2579bffad1eSTheodore Ts'o 		__entry->len	= len;
2589bffad1eSTheodore Ts'o 		__entry->flags	= flags;
2599bffad1eSTheodore Ts'o 	),
2609bffad1eSTheodore Ts'o 
261a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu pos %lld len %u flags %u",
2620562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
263a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
264a3710fd1STheodore Ts'o 		  __entry->pos, __entry->len, __entry->flags)
2659bffad1eSTheodore Ts'o );
2669bffad1eSTheodore Ts'o 
267b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_begin, ext4_write_begin,
268b5eb34c3SLi Zefan 
269b5eb34c3SLi Zefan 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
270b5eb34c3SLi Zefan 		 unsigned int flags),
271b5eb34c3SLi Zefan 
272b5eb34c3SLi Zefan 	TP_ARGS(inode, pos, len, flags)
273b5eb34c3SLi Zefan );
274b5eb34c3SLi Zefan 
275b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_begin, ext4_da_write_begin,
276b5eb34c3SLi Zefan 
277b5eb34c3SLi Zefan 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
278b5eb34c3SLi Zefan 		 unsigned int flags),
279b5eb34c3SLi Zefan 
280b5eb34c3SLi Zefan 	TP_ARGS(inode, pos, len, flags)
281b5eb34c3SLi Zefan );
282b5eb34c3SLi Zefan 
283b5eb34c3SLi Zefan DECLARE_EVENT_CLASS(ext4__write_end,
2849bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
2859bffad1eSTheodore Ts'o 			unsigned int copied),
2869bffad1eSTheodore Ts'o 
2879bffad1eSTheodore Ts'o 	TP_ARGS(inode, pos, len, copied),
2889bffad1eSTheodore Ts'o 
2899bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
2900562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
2919bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
2929bffad1eSTheodore Ts'o 		__field(	loff_t,	pos			)
2939bffad1eSTheodore Ts'o 		__field(	unsigned int, len		)
2949bffad1eSTheodore Ts'o 		__field(	unsigned int, copied		)
2959bffad1eSTheodore Ts'o 	),
2969bffad1eSTheodore Ts'o 
2979bffad1eSTheodore Ts'o 	TP_fast_assign(
2980562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
2999bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
3009bffad1eSTheodore Ts'o 		__entry->pos	= pos;
3019bffad1eSTheodore Ts'o 		__entry->len	= len;
3029bffad1eSTheodore Ts'o 		__entry->copied	= copied;
3039bffad1eSTheodore Ts'o 	),
3049bffad1eSTheodore Ts'o 
305a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu pos %lld len %u copied %u",
3060562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
3070562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
3080562e0baSJiaying Zhang 		  __entry->pos, __entry->len, __entry->copied)
3099bffad1eSTheodore Ts'o );
3109bffad1eSTheodore Ts'o 
31174d553aaSTheodore Ts'o DEFINE_EVENT(ext4__write_end, ext4_write_end,
312b5eb34c3SLi Zefan 
3139bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
3149bffad1eSTheodore Ts'o 		 unsigned int copied),
3159bffad1eSTheodore Ts'o 
316b5eb34c3SLi Zefan 	TP_ARGS(inode, pos, len, copied)
317b5eb34c3SLi Zefan );
3189bffad1eSTheodore Ts'o 
319b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_end, ext4_journalled_write_end,
3209bffad1eSTheodore Ts'o 
321b5eb34c3SLi Zefan 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
322b5eb34c3SLi Zefan 		 unsigned int copied),
323b5eb34c3SLi Zefan 
324b5eb34c3SLi Zefan 	TP_ARGS(inode, pos, len, copied)
325b5eb34c3SLi Zefan );
326b5eb34c3SLi Zefan 
327b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_end, ext4_da_write_end,
328b5eb34c3SLi Zefan 
329b5eb34c3SLi Zefan 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
330b5eb34c3SLi Zefan 		 unsigned int copied),
331b5eb34c3SLi Zefan 
332b5eb34c3SLi Zefan 	TP_ARGS(inode, pos, len, copied)
3339bffad1eSTheodore Ts'o );
3349bffad1eSTheodore Ts'o 
33520970ba6STheodore Ts'o TRACE_EVENT(ext4_writepages,
3369bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, struct writeback_control *wbc),
3379bffad1eSTheodore Ts'o 
3389bffad1eSTheodore Ts'o 	TP_ARGS(inode, wbc),
3399bffad1eSTheodore Ts'o 
3409bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
3410562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
3429bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
3439bffad1eSTheodore Ts'o 		__field(	long,	nr_to_write		)
3449bffad1eSTheodore Ts'o 		__field(	long,	pages_skipped		)
3459bffad1eSTheodore Ts'o 		__field(	loff_t,	range_start		)
3469bffad1eSTheodore Ts'o 		__field(	loff_t,	range_end		)
347210c0526SAnatol Pomozov 		__field(       pgoff_t,	writeback_index		)
3480562e0baSJiaying Zhang 		__field(	int,	sync_mode		)
3499bffad1eSTheodore Ts'o 		__field(	char,	for_kupdate		)
3509bffad1eSTheodore Ts'o 		__field(	char,	range_cyclic		)
3519bffad1eSTheodore Ts'o 	),
3529bffad1eSTheodore Ts'o 
3539bffad1eSTheodore Ts'o 	TP_fast_assign(
3540562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
3559bffad1eSTheodore Ts'o 		__entry->ino		= inode->i_ino;
3569bffad1eSTheodore Ts'o 		__entry->nr_to_write	= wbc->nr_to_write;
3579bffad1eSTheodore Ts'o 		__entry->pages_skipped	= wbc->pages_skipped;
3589bffad1eSTheodore Ts'o 		__entry->range_start	= wbc->range_start;
3599bffad1eSTheodore Ts'o 		__entry->range_end	= wbc->range_end;
360210c0526SAnatol Pomozov 		__entry->writeback_index = inode->i_mapping->writeback_index;
3610562e0baSJiaying Zhang 		__entry->sync_mode	= wbc->sync_mode;
3629bffad1eSTheodore Ts'o 		__entry->for_kupdate	= wbc->for_kupdate;
3639bffad1eSTheodore Ts'o 		__entry->range_cyclic	= wbc->range_cyclic;
3649bffad1eSTheodore Ts'o 	),
3659bffad1eSTheodore Ts'o 
366a107e5a3STheodore Ts'o 	TP_printk("dev %d,%d ino %lu nr_to_write %ld pages_skipped %ld "
367a9c667f8SLukas Czerner 		  "range_start %lld range_end %lld sync_mode %d "
3680562e0baSJiaying Zhang 		  "for_kupdate %d range_cyclic %d writeback_index %lu",
3690562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
370a3710fd1STheodore Ts'o 		  (unsigned long) __entry->ino, __entry->nr_to_write,
3719bffad1eSTheodore Ts'o 		  __entry->pages_skipped, __entry->range_start,
3720562e0baSJiaying Zhang 		  __entry->range_end, __entry->sync_mode,
3730562e0baSJiaying Zhang 		  __entry->for_kupdate, __entry->range_cyclic,
37455138e0bSTheodore Ts'o 		  (unsigned long) __entry->writeback_index)
3759bffad1eSTheodore Ts'o );
3769bffad1eSTheodore Ts'o 
377b3a3ca8cSTheodore Ts'o TRACE_EVENT(ext4_da_write_pages,
3784e7ea81dSJan Kara 	TP_PROTO(struct inode *inode, pgoff_t first_page,
3794e7ea81dSJan Kara 		 struct writeback_control *wbc),
380b3a3ca8cSTheodore Ts'o 
3814e7ea81dSJan Kara 	TP_ARGS(inode, first_page, wbc),
382b3a3ca8cSTheodore Ts'o 
383b3a3ca8cSTheodore Ts'o 	TP_STRUCT__entry(
3840562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
385b3a3ca8cSTheodore Ts'o 		__field(	ino_t,	ino			)
3864e7ea81dSJan Kara 		__field(      pgoff_t,	first_page		)
3874e7ea81dSJan Kara 		__field(	 long,	nr_to_write		)
3880562e0baSJiaying Zhang 		__field(	  int,	sync_mode		)
389b3a3ca8cSTheodore Ts'o 	),
390b3a3ca8cSTheodore Ts'o 
391b3a3ca8cSTheodore Ts'o 	TP_fast_assign(
3920562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
393b3a3ca8cSTheodore Ts'o 		__entry->ino		= inode->i_ino;
3944e7ea81dSJan Kara 		__entry->first_page	= first_page;
3954e7ea81dSJan Kara 		__entry->nr_to_write	= wbc->nr_to_write;
3964e7ea81dSJan Kara 		__entry->sync_mode	= wbc->sync_mode;
397b3a3ca8cSTheodore Ts'o 	),
398b3a3ca8cSTheodore Ts'o 
3994e7ea81dSJan Kara 	TP_printk("dev %d,%d ino %lu first_page %lu nr_to_write %ld "
4004e7ea81dSJan Kara 		  "sync_mode %d",
4010562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
4024e7ea81dSJan Kara 		  (unsigned long) __entry->ino, __entry->first_page,
4034e7ea81dSJan Kara 		  __entry->nr_to_write, __entry->sync_mode)
4044e7ea81dSJan Kara );
4054e7ea81dSJan Kara 
4064e7ea81dSJan Kara TRACE_EVENT(ext4_da_write_pages_extent,
4074e7ea81dSJan Kara 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map),
4084e7ea81dSJan Kara 
4094e7ea81dSJan Kara 	TP_ARGS(inode, map),
4104e7ea81dSJan Kara 
4114e7ea81dSJan Kara 	TP_STRUCT__entry(
4124e7ea81dSJan Kara 		__field(	dev_t,	dev			)
4134e7ea81dSJan Kara 		__field(	ino_t,	ino			)
4144e7ea81dSJan Kara 		__field(	__u64,	lblk			)
4154e7ea81dSJan Kara 		__field(	__u32,	len			)
4164e7ea81dSJan Kara 		__field(	__u32,	flags			)
4174e7ea81dSJan Kara 	),
4184e7ea81dSJan Kara 
4194e7ea81dSJan Kara 	TP_fast_assign(
4204e7ea81dSJan Kara 		__entry->dev		= inode->i_sb->s_dev;
4214e7ea81dSJan Kara 		__entry->ino		= inode->i_ino;
4224e7ea81dSJan Kara 		__entry->lblk		= map->m_lblk;
4234e7ea81dSJan Kara 		__entry->len		= map->m_len;
4244e7ea81dSJan Kara 		__entry->flags		= map->m_flags;
4254e7ea81dSJan Kara 	),
4264e7ea81dSJan Kara 
42721ddd568STheodore Ts'o 	TP_printk("dev %d,%d ino %lu lblk %llu len %u flags %s",
4284e7ea81dSJan Kara 		  MAJOR(__entry->dev), MINOR(__entry->dev),
4294e7ea81dSJan Kara 		  (unsigned long) __entry->ino, __entry->lblk, __entry->len,
43021ddd568STheodore Ts'o 		  show_mflags(__entry->flags))
431b3a3ca8cSTheodore Ts'o );
432b3a3ca8cSTheodore Ts'o 
43320970ba6STheodore Ts'o TRACE_EVENT(ext4_writepages_result,
4349bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, struct writeback_control *wbc,
4359bffad1eSTheodore Ts'o 			int ret, int pages_written),
4369bffad1eSTheodore Ts'o 
4379bffad1eSTheodore Ts'o 	TP_ARGS(inode, wbc, ret, pages_written),
4389bffad1eSTheodore Ts'o 
4399bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
4400562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
4419bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
4429bffad1eSTheodore Ts'o 		__field(	int,	ret			)
4439bffad1eSTheodore Ts'o 		__field(	int,	pages_written		)
4449bffad1eSTheodore Ts'o 		__field(	long,	pages_skipped		)
44555138e0bSTheodore Ts'o 		__field(       pgoff_t,	writeback_index		)
446210c0526SAnatol Pomozov 		__field(	int,	sync_mode		)
4479bffad1eSTheodore Ts'o 	),
4489bffad1eSTheodore Ts'o 
4499bffad1eSTheodore Ts'o 	TP_fast_assign(
4500562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
4519bffad1eSTheodore Ts'o 		__entry->ino		= inode->i_ino;
4529bffad1eSTheodore Ts'o 		__entry->ret		= ret;
4539bffad1eSTheodore Ts'o 		__entry->pages_written	= pages_written;
4549bffad1eSTheodore Ts'o 		__entry->pages_skipped	= wbc->pages_skipped;
45555138e0bSTheodore Ts'o 		__entry->writeback_index = inode->i_mapping->writeback_index;
456210c0526SAnatol Pomozov 		__entry->sync_mode	= wbc->sync_mode;
4579bffad1eSTheodore Ts'o 	),
4589bffad1eSTheodore Ts'o 
4590562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld "
460b7a2441fSWu Fengguang 		  "sync_mode %d writeback_index %lu",
4610562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
462a3710fd1STheodore Ts'o 		  (unsigned long) __entry->ino, __entry->ret,
4639bffad1eSTheodore Ts'o 		  __entry->pages_written, __entry->pages_skipped,
464b7a2441fSWu Fengguang 		  __entry->sync_mode,
46555138e0bSTheodore Ts'o 		  (unsigned long) __entry->writeback_index)
4669bffad1eSTheodore Ts'o );
4679bffad1eSTheodore Ts'o 
4680562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__page_op,
4690562e0baSJiaying Zhang 	TP_PROTO(struct page *page),
4700562e0baSJiaying Zhang 
4710562e0baSJiaying Zhang 	TP_ARGS(page),
4720562e0baSJiaying Zhang 
4730562e0baSJiaying Zhang 	TP_STRUCT__entry(
4740562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
475210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
476210c0526SAnatol Pomozov 		__field(	pgoff_t, index			)
4770562e0baSJiaying Zhang 
4780562e0baSJiaying Zhang 	),
4790562e0baSJiaying Zhang 
4800562e0baSJiaying Zhang 	TP_fast_assign(
4810562e0baSJiaying Zhang 		__entry->dev	= page->mapping->host->i_sb->s_dev;
482210c0526SAnatol Pomozov 		__entry->ino	= page->mapping->host->i_ino;
483210c0526SAnatol Pomozov 		__entry->index	= page->index;
4840562e0baSJiaying Zhang 	),
4850562e0baSJiaying Zhang 
4860562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu page_index %lu",
4870562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
4880562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
489a9c667f8SLukas Czerner 		  (unsigned long) __entry->index)
490a9c667f8SLukas Czerner );
491a9c667f8SLukas Czerner 
492a9c667f8SLukas Czerner DEFINE_EVENT(ext4__page_op, ext4_writepage,
493a9c667f8SLukas Czerner 
494a9c667f8SLukas Czerner 	TP_PROTO(struct page *page),
495a9c667f8SLukas Czerner 
496a9c667f8SLukas Czerner 	TP_ARGS(page)
4970562e0baSJiaying Zhang );
4980562e0baSJiaying Zhang 
4990562e0baSJiaying Zhang DEFINE_EVENT(ext4__page_op, ext4_readpage,
5000562e0baSJiaying Zhang 
5010562e0baSJiaying Zhang 	TP_PROTO(struct page *page),
5020562e0baSJiaying Zhang 
5030562e0baSJiaying Zhang 	TP_ARGS(page)
5040562e0baSJiaying Zhang );
5050562e0baSJiaying Zhang 
5060562e0baSJiaying Zhang DEFINE_EVENT(ext4__page_op, ext4_releasepage,
5070562e0baSJiaying Zhang 
5080562e0baSJiaying Zhang 	TP_PROTO(struct page *page),
5090562e0baSJiaying Zhang 
5100562e0baSJiaying Zhang 	TP_ARGS(page)
5110562e0baSJiaying Zhang );
5120562e0baSJiaying Zhang 
5134520fb3cSJan Kara DECLARE_EVENT_CLASS(ext4_invalidatepage_op,
514ca99fdd2SLukas Czerner 	TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
5150562e0baSJiaying Zhang 
516ca99fdd2SLukas Czerner 	TP_ARGS(page, offset, length),
5170562e0baSJiaying Zhang 
5180562e0baSJiaying Zhang 	TP_STRUCT__entry(
519210c0526SAnatol Pomozov 		__field(	dev_t,	dev			)
520210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
5210562e0baSJiaying Zhang 		__field(	pgoff_t, index			)
522ca99fdd2SLukas Czerner 		__field(	unsigned int, offset		)
523ca99fdd2SLukas Czerner 		__field(	unsigned int, length		)
5240562e0baSJiaying Zhang 	),
5250562e0baSJiaying Zhang 
5260562e0baSJiaying Zhang 	TP_fast_assign(
527210c0526SAnatol Pomozov 		__entry->dev	= page->mapping->host->i_sb->s_dev;
528210c0526SAnatol Pomozov 		__entry->ino	= page->mapping->host->i_ino;
5290562e0baSJiaying Zhang 		__entry->index	= page->index;
5300562e0baSJiaying Zhang 		__entry->offset	= offset;
531ca99fdd2SLukas Czerner 		__entry->length	= length;
5320562e0baSJiaying Zhang 	),
5330562e0baSJiaying Zhang 
534ca99fdd2SLukas Czerner 	TP_printk("dev %d,%d ino %lu page_index %lu offset %u length %u",
5350562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
5360562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
537ca99fdd2SLukas Czerner 		  (unsigned long) __entry->index,
538ca99fdd2SLukas Czerner 		  __entry->offset, __entry->length)
5390562e0baSJiaying Zhang );
5400562e0baSJiaying Zhang 
5414520fb3cSJan Kara DEFINE_EVENT(ext4_invalidatepage_op, ext4_invalidatepage,
542ca99fdd2SLukas Czerner 	TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
5434520fb3cSJan Kara 
544ca99fdd2SLukas Czerner 	TP_ARGS(page, offset, length)
5454520fb3cSJan Kara );
5464520fb3cSJan Kara 
5474520fb3cSJan Kara DEFINE_EVENT(ext4_invalidatepage_op, ext4_journalled_invalidatepage,
548ca99fdd2SLukas Czerner 	TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
5494520fb3cSJan Kara 
550ca99fdd2SLukas Czerner 	TP_ARGS(page, offset, length)
5514520fb3cSJan Kara );
5524520fb3cSJan Kara 
5539bffad1eSTheodore Ts'o TRACE_EVENT(ext4_discard_blocks,
5549bffad1eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, unsigned long long blk,
5559bffad1eSTheodore Ts'o 			unsigned long long count),
5569bffad1eSTheodore Ts'o 
5579bffad1eSTheodore Ts'o 	TP_ARGS(sb, blk, count),
5589bffad1eSTheodore Ts'o 
5599bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
5600562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
5619bffad1eSTheodore Ts'o 		__field(	__u64,	blk			)
5629bffad1eSTheodore Ts'o 		__field(	__u64,	count			)
5639bffad1eSTheodore Ts'o 
5649bffad1eSTheodore Ts'o 	),
5659bffad1eSTheodore Ts'o 
5669bffad1eSTheodore Ts'o 	TP_fast_assign(
5670562e0baSJiaying Zhang 		__entry->dev	= sb->s_dev;
5689bffad1eSTheodore Ts'o 		__entry->blk	= blk;
5699bffad1eSTheodore Ts'o 		__entry->count	= count;
5709bffad1eSTheodore Ts'o 	),
5719bffad1eSTheodore Ts'o 
572a269029dSTheodore Ts'o 	TP_printk("dev %d,%d blk %llu count %llu",
5730562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
574a269029dSTheodore Ts'o 		  __entry->blk, __entry->count)
5759bffad1eSTheodore Ts'o );
5769bffad1eSTheodore Ts'o 
577f084db93SLi Zefan DECLARE_EVENT_CLASS(ext4__mb_new_pa,
5789bffad1eSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_context *ac,
5799bffad1eSTheodore Ts'o 		 struct ext4_prealloc_space *pa),
5809bffad1eSTheodore Ts'o 
5819bffad1eSTheodore Ts'o 	TP_ARGS(ac, pa),
5829bffad1eSTheodore Ts'o 
5839bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
5840562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
5859bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
5869bffad1eSTheodore Ts'o 		__field(	__u64,	pa_pstart		)
5879bffad1eSTheodore Ts'o 		__field(	__u64,	pa_lstart		)
588210c0526SAnatol Pomozov 		__field(	__u32,	pa_len			)
5899bffad1eSTheodore Ts'o 
5909bffad1eSTheodore Ts'o 	),
5919bffad1eSTheodore Ts'o 
5929bffad1eSTheodore Ts'o 	TP_fast_assign(
5930562e0baSJiaying Zhang 		__entry->dev		= ac->ac_sb->s_dev;
5949bffad1eSTheodore Ts'o 		__entry->ino		= ac->ac_inode->i_ino;
5959bffad1eSTheodore Ts'o 		__entry->pa_pstart	= pa->pa_pstart;
5969bffad1eSTheodore Ts'o 		__entry->pa_lstart	= pa->pa_lstart;
597210c0526SAnatol Pomozov 		__entry->pa_len		= pa->pa_len;
5989bffad1eSTheodore Ts'o 	),
5999bffad1eSTheodore Ts'o 
600a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu pstart %llu len %u lstart %llu",
6010562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
6020562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
6030562e0baSJiaying Zhang 		  __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart)
6049bffad1eSTheodore Ts'o );
6059bffad1eSTheodore Ts'o 
606f084db93SLi Zefan DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_inode_pa,
607f084db93SLi Zefan 
6089bffad1eSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_context *ac,
6099bffad1eSTheodore Ts'o 		 struct ext4_prealloc_space *pa),
6109bffad1eSTheodore Ts'o 
611f084db93SLi Zefan 	TP_ARGS(ac, pa)
612f084db93SLi Zefan );
6139bffad1eSTheodore Ts'o 
614f084db93SLi Zefan DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_group_pa,
6159bffad1eSTheodore Ts'o 
616f084db93SLi Zefan 	TP_PROTO(struct ext4_allocation_context *ac,
617f084db93SLi Zefan 		 struct ext4_prealloc_space *pa),
6189bffad1eSTheodore Ts'o 
619f084db93SLi Zefan 	TP_ARGS(ac, pa)
6209bffad1eSTheodore Ts'o );
6219bffad1eSTheodore Ts'o 
6229bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_release_inode_pa,
623a9c667f8SLukas Czerner 	TP_PROTO(struct ext4_prealloc_space *pa,
6249bffad1eSTheodore Ts'o 		 unsigned long long block, unsigned int count),
6259bffad1eSTheodore Ts'o 
626a9c667f8SLukas Czerner 	TP_ARGS(pa, block, count),
6279bffad1eSTheodore Ts'o 
6289bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
6290562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
6309bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
6319bffad1eSTheodore Ts'o 		__field(	__u64,	block			)
6329bffad1eSTheodore Ts'o 		__field(	__u32,	count			)
6339bffad1eSTheodore Ts'o 
6349bffad1eSTheodore Ts'o 	),
6359bffad1eSTheodore Ts'o 
6369bffad1eSTheodore Ts'o 	TP_fast_assign(
637a9c667f8SLukas Czerner 		__entry->dev		= pa->pa_inode->i_sb->s_dev;
638a9c667f8SLukas Czerner 		__entry->ino		= pa->pa_inode->i_ino;
6399bffad1eSTheodore Ts'o 		__entry->block		= block;
6409bffad1eSTheodore Ts'o 		__entry->count		= count;
6419bffad1eSTheodore Ts'o 	),
6429bffad1eSTheodore Ts'o 
643a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu block %llu count %u",
6440562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
6450562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
6460562e0baSJiaying Zhang 		  __entry->block, __entry->count)
6479bffad1eSTheodore Ts'o );
6489bffad1eSTheodore Ts'o 
6499bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_release_group_pa,
65060e07cf5SYongqiang Yang 	TP_PROTO(struct super_block *sb, struct ext4_prealloc_space *pa),
6519bffad1eSTheodore Ts'o 
65260e07cf5SYongqiang Yang 	TP_ARGS(sb, pa),
6539bffad1eSTheodore Ts'o 
6549bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
6550562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
6569bffad1eSTheodore Ts'o 		__field(	__u64,	pa_pstart		)
6579bffad1eSTheodore Ts'o 		__field(	__u32,	pa_len			)
6589bffad1eSTheodore Ts'o 
6599bffad1eSTheodore Ts'o 	),
6609bffad1eSTheodore Ts'o 
6619bffad1eSTheodore Ts'o 	TP_fast_assign(
66260e07cf5SYongqiang Yang 		__entry->dev		= sb->s_dev;
6639bffad1eSTheodore Ts'o 		__entry->pa_pstart	= pa->pa_pstart;
6649bffad1eSTheodore Ts'o 		__entry->pa_len		= pa->pa_len;
6659bffad1eSTheodore Ts'o 	),
6669bffad1eSTheodore Ts'o 
667a269029dSTheodore Ts'o 	TP_printk("dev %d,%d pstart %llu len %u",
6680562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
669a269029dSTheodore Ts'o 		  __entry->pa_pstart, __entry->pa_len)
6709bffad1eSTheodore Ts'o );
6719bffad1eSTheodore Ts'o 
6729bffad1eSTheodore Ts'o TRACE_EVENT(ext4_discard_preallocations,
6739bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode),
6749bffad1eSTheodore Ts'o 
6759bffad1eSTheodore Ts'o 	TP_ARGS(inode),
6769bffad1eSTheodore Ts'o 
6779bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
6780562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
6799bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
6809bffad1eSTheodore Ts'o 
6819bffad1eSTheodore Ts'o 	),
6829bffad1eSTheodore Ts'o 
6839bffad1eSTheodore Ts'o 	TP_fast_assign(
6840562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
6859bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
6869bffad1eSTheodore Ts'o 	),
6879bffad1eSTheodore Ts'o 
688a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu",
6890562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
690a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino)
6919bffad1eSTheodore Ts'o );
6929bffad1eSTheodore Ts'o 
6939bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_discard_preallocations,
6949bffad1eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, int needed),
6959bffad1eSTheodore Ts'o 
6969bffad1eSTheodore Ts'o 	TP_ARGS(sb, needed),
6979bffad1eSTheodore Ts'o 
6989bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
6990562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
7009bffad1eSTheodore Ts'o 		__field(	int,	needed			)
7019bffad1eSTheodore Ts'o 
7029bffad1eSTheodore Ts'o 	),
7039bffad1eSTheodore Ts'o 
7049bffad1eSTheodore Ts'o 	TP_fast_assign(
7050562e0baSJiaying Zhang 		__entry->dev	= sb->s_dev;
7069bffad1eSTheodore Ts'o 		__entry->needed	= needed;
7079bffad1eSTheodore Ts'o 	),
7089bffad1eSTheodore Ts'o 
709a269029dSTheodore Ts'o 	TP_printk("dev %d,%d needed %d",
7100562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
7110562e0baSJiaying Zhang 		  __entry->needed)
7129bffad1eSTheodore Ts'o );
7139bffad1eSTheodore Ts'o 
7149bffad1eSTheodore Ts'o TRACE_EVENT(ext4_request_blocks,
7159bffad1eSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_request *ar),
7169bffad1eSTheodore Ts'o 
7179bffad1eSTheodore Ts'o 	TP_ARGS(ar),
7189bffad1eSTheodore Ts'o 
7199bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
7200562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
7219bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
7229bffad1eSTheodore Ts'o 		__field(	unsigned int, len		)
723a9c667f8SLukas Czerner 		__field(	__u32,  logical			)
724a9c667f8SLukas Czerner 		__field(	__u32,	lleft			)
725a9c667f8SLukas Czerner 		__field(	__u32,	lright			)
7269bffad1eSTheodore Ts'o 		__field(	__u64,	goal			)
7279bffad1eSTheodore Ts'o 		__field(	__u64,	pleft			)
7289bffad1eSTheodore Ts'o 		__field(	__u64,	pright			)
729210c0526SAnatol Pomozov 		__field(	unsigned int, flags		)
7309bffad1eSTheodore Ts'o 	),
7319bffad1eSTheodore Ts'o 
7329bffad1eSTheodore Ts'o 	TP_fast_assign(
7330562e0baSJiaying Zhang 		__entry->dev	= ar->inode->i_sb->s_dev;
7349bffad1eSTheodore Ts'o 		__entry->ino	= ar->inode->i_ino;
7359bffad1eSTheodore Ts'o 		__entry->len	= ar->len;
7369bffad1eSTheodore Ts'o 		__entry->logical = ar->logical;
7379bffad1eSTheodore Ts'o 		__entry->goal	= ar->goal;
7389bffad1eSTheodore Ts'o 		__entry->lleft	= ar->lleft;
7399bffad1eSTheodore Ts'o 		__entry->lright	= ar->lright;
7409bffad1eSTheodore Ts'o 		__entry->pleft	= ar->pleft;
7419bffad1eSTheodore Ts'o 		__entry->pright	= ar->pright;
742210c0526SAnatol Pomozov 		__entry->flags	= ar->flags;
7439bffad1eSTheodore Ts'o 	),
7449bffad1eSTheodore Ts'o 
74521ddd568STheodore Ts'o 	TP_printk("dev %d,%d ino %lu flags %s len %u lblk %u goal %llu "
746a9c667f8SLukas Czerner 		  "lleft %u lright %u pleft %llu pright %llu ",
7470562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
74821ddd568STheodore Ts'o 		  (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
749a9c667f8SLukas Czerner 		  __entry->len, __entry->logical, __entry->goal,
750a9c667f8SLukas Czerner 		  __entry->lleft, __entry->lright, __entry->pleft,
751a9c667f8SLukas Czerner 		  __entry->pright)
7529bffad1eSTheodore Ts'o );
7539bffad1eSTheodore Ts'o 
7549bffad1eSTheodore Ts'o TRACE_EVENT(ext4_allocate_blocks,
7559bffad1eSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_request *ar, unsigned long long block),
7569bffad1eSTheodore Ts'o 
7579bffad1eSTheodore Ts'o 	TP_ARGS(ar, block),
7589bffad1eSTheodore Ts'o 
7599bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
7600562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
7619bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
7629bffad1eSTheodore Ts'o 		__field(	__u64,	block			)
7639bffad1eSTheodore Ts'o 		__field(	unsigned int, len		)
764a9c667f8SLukas Czerner 		__field(	__u32,  logical			)
765a9c667f8SLukas Czerner 		__field(	__u32,	lleft			)
766a9c667f8SLukas Czerner 		__field(	__u32,	lright			)
7679bffad1eSTheodore Ts'o 		__field(	__u64,	goal			)
7689bffad1eSTheodore Ts'o 		__field(	__u64,	pleft			)
7699bffad1eSTheodore Ts'o 		__field(	__u64,	pright			)
770210c0526SAnatol Pomozov 		__field(	unsigned int, flags		)
7719bffad1eSTheodore Ts'o 	),
7729bffad1eSTheodore Ts'o 
7739bffad1eSTheodore Ts'o 	TP_fast_assign(
7740562e0baSJiaying Zhang 		__entry->dev	= ar->inode->i_sb->s_dev;
7759bffad1eSTheodore Ts'o 		__entry->ino	= ar->inode->i_ino;
7769bffad1eSTheodore Ts'o 		__entry->block	= block;
7779bffad1eSTheodore Ts'o 		__entry->len	= ar->len;
7789bffad1eSTheodore Ts'o 		__entry->logical = ar->logical;
7799bffad1eSTheodore Ts'o 		__entry->goal	= ar->goal;
7809bffad1eSTheodore Ts'o 		__entry->lleft	= ar->lleft;
7819bffad1eSTheodore Ts'o 		__entry->lright	= ar->lright;
7829bffad1eSTheodore Ts'o 		__entry->pleft	= ar->pleft;
7839bffad1eSTheodore Ts'o 		__entry->pright	= ar->pright;
784210c0526SAnatol Pomozov 		__entry->flags	= ar->flags;
7859bffad1eSTheodore Ts'o 	),
7869bffad1eSTheodore Ts'o 
78721ddd568STheodore Ts'o 	TP_printk("dev %d,%d ino %lu flags %s len %u block %llu lblk %u "
788a9c667f8SLukas Czerner 		  "goal %llu lleft %u lright %u pleft %llu pright %llu",
7890562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
79021ddd568STheodore Ts'o 		  (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
791a9c667f8SLukas Czerner 		  __entry->len, __entry->block, __entry->logical,
792a9c667f8SLukas Czerner 		  __entry->goal,  __entry->lleft, __entry->lright,
793a9c667f8SLukas Czerner 		  __entry->pleft, __entry->pright)
7949bffad1eSTheodore Ts'o );
7959bffad1eSTheodore Ts'o 
7969bffad1eSTheodore Ts'o TRACE_EVENT(ext4_free_blocks,
7979bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, __u64 block, unsigned long count,
798e6362609STheodore Ts'o 		 int flags),
7999bffad1eSTheodore Ts'o 
800e6362609STheodore Ts'o 	TP_ARGS(inode, block, count, flags),
8019bffad1eSTheodore Ts'o 
8029bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
8030562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
8049bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
8059bffad1eSTheodore Ts'o 		__field(	__u64,	block			)
8069bffad1eSTheodore Ts'o 		__field(	unsigned long,	count		)
807e6362609STheodore Ts'o 		__field(	int,	flags			)
808210c0526SAnatol Pomozov 		__field(	__u16,	mode			)
8099bffad1eSTheodore Ts'o 	),
8109bffad1eSTheodore Ts'o 
8119bffad1eSTheodore Ts'o 	TP_fast_assign(
8120562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
8139bffad1eSTheodore Ts'o 		__entry->ino		= inode->i_ino;
8149bffad1eSTheodore Ts'o 		__entry->block		= block;
8159bffad1eSTheodore Ts'o 		__entry->count		= count;
816e6362609STheodore Ts'o 		__entry->flags		= flags;
817210c0526SAnatol Pomozov 		__entry->mode		= inode->i_mode;
8189bffad1eSTheodore Ts'o 	),
8199bffad1eSTheodore Ts'o 
82021ddd568STheodore Ts'o 	TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %s",
8210562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
822a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
823e6362609STheodore Ts'o 		  __entry->mode, __entry->block, __entry->count,
82421ddd568STheodore Ts'o 		  show_free_flags(__entry->flags))
8259bffad1eSTheodore Ts'o );
8269bffad1eSTheodore Ts'o 
8270562e0baSJiaying Zhang TRACE_EVENT(ext4_sync_file_enter,
8287ea80859SChristoph Hellwig 	TP_PROTO(struct file *file, int datasync),
8299bffad1eSTheodore Ts'o 
8307ea80859SChristoph Hellwig 	TP_ARGS(file, datasync),
8319bffad1eSTheodore Ts'o 
8329bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
8330562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
8349bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
8359bffad1eSTheodore Ts'o 		__field(	ino_t,	parent			)
8369bffad1eSTheodore Ts'o 		__field(	int,	datasync		)
8379bffad1eSTheodore Ts'o 	),
8389bffad1eSTheodore Ts'o 
8399bffad1eSTheodore Ts'o 	TP_fast_assign(
8407ea80859SChristoph Hellwig 		struct dentry *dentry = file->f_path.dentry;
8417ea80859SChristoph Hellwig 
8420562e0baSJiaying Zhang 		__entry->dev		= dentry->d_inode->i_sb->s_dev;
8439bffad1eSTheodore Ts'o 		__entry->ino		= dentry->d_inode->i_ino;
8449bffad1eSTheodore Ts'o 		__entry->datasync	= datasync;
8459bffad1eSTheodore Ts'o 		__entry->parent		= dentry->d_parent->d_inode->i_ino;
8469bffad1eSTheodore Ts'o 	),
8479bffad1eSTheodore Ts'o 
848a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu parent %lu datasync %d ",
8490562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
850a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
851a3710fd1STheodore Ts'o 		  (unsigned long) __entry->parent, __entry->datasync)
8529bffad1eSTheodore Ts'o );
8539bffad1eSTheodore Ts'o 
8540562e0baSJiaying Zhang TRACE_EVENT(ext4_sync_file_exit,
8550562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, int ret),
8560562e0baSJiaying Zhang 
8570562e0baSJiaying Zhang 	TP_ARGS(inode, ret),
8580562e0baSJiaying Zhang 
8590562e0baSJiaying Zhang 	TP_STRUCT__entry(
8600562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
861210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
862210c0526SAnatol Pomozov 		__field(	int,	ret			)
8630562e0baSJiaying Zhang 	),
8640562e0baSJiaying Zhang 
8650562e0baSJiaying Zhang 	TP_fast_assign(
8660562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
867210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
868210c0526SAnatol Pomozov 		__entry->ret		= ret;
8690562e0baSJiaying Zhang 	),
8700562e0baSJiaying Zhang 
871a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu ret %d",
8720562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
8730562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
8740562e0baSJiaying Zhang 		  __entry->ret)
8750562e0baSJiaying Zhang );
8760562e0baSJiaying Zhang 
8779bffad1eSTheodore Ts'o TRACE_EVENT(ext4_sync_fs,
8789bffad1eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, int wait),
8799bffad1eSTheodore Ts'o 
8809bffad1eSTheodore Ts'o 	TP_ARGS(sb, wait),
8819bffad1eSTheodore Ts'o 
8829bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
8830562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
8849bffad1eSTheodore Ts'o 		__field(	int,	wait			)
8859bffad1eSTheodore Ts'o 
8869bffad1eSTheodore Ts'o 	),
8879bffad1eSTheodore Ts'o 
8889bffad1eSTheodore Ts'o 	TP_fast_assign(
8890562e0baSJiaying Zhang 		__entry->dev	= sb->s_dev;
8909bffad1eSTheodore Ts'o 		__entry->wait	= wait;
8919bffad1eSTheodore Ts'o 	),
8929bffad1eSTheodore Ts'o 
8930562e0baSJiaying Zhang 	TP_printk("dev %d,%d wait %d",
8940562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
8950562e0baSJiaying Zhang 		  __entry->wait)
8969bffad1eSTheodore Ts'o );
8979bffad1eSTheodore Ts'o 
898fb40ba0dSTheodore Ts'o TRACE_EVENT(ext4_alloc_da_blocks,
899fb40ba0dSTheodore Ts'o 	TP_PROTO(struct inode *inode),
900fb40ba0dSTheodore Ts'o 
901fb40ba0dSTheodore Ts'o 	TP_ARGS(inode),
902fb40ba0dSTheodore Ts'o 
903fb40ba0dSTheodore Ts'o 	TP_STRUCT__entry(
9040562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
905fb40ba0dSTheodore Ts'o 		__field(	ino_t,	ino			)
906fb40ba0dSTheodore Ts'o 		__field( unsigned int,	data_blocks	)
907fb40ba0dSTheodore Ts'o 		__field( unsigned int,	meta_blocks	)
908fb40ba0dSTheodore Ts'o 	),
909fb40ba0dSTheodore Ts'o 
910fb40ba0dSTheodore Ts'o 	TP_fast_assign(
9110562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
912fb40ba0dSTheodore Ts'o 		__entry->ino	= inode->i_ino;
913fb40ba0dSTheodore Ts'o 		__entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
914fb40ba0dSTheodore Ts'o 		__entry->meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
915fb40ba0dSTheodore Ts'o 	),
916fb40ba0dSTheodore Ts'o 
917a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu data_blocks %u meta_blocks %u",
9180562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
919a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
920fb40ba0dSTheodore Ts'o 		  __entry->data_blocks, __entry->meta_blocks)
921fb40ba0dSTheodore Ts'o );
922fb40ba0dSTheodore Ts'o 
923296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_alloc,
924296c355cSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_context *ac),
925296c355cSTheodore Ts'o 
926296c355cSTheodore Ts'o 	TP_ARGS(ac),
927296c355cSTheodore Ts'o 
928296c355cSTheodore Ts'o 	TP_STRUCT__entry(
9290562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
930296c355cSTheodore Ts'o 		__field(	ino_t,	ino			)
931296c355cSTheodore Ts'o 		__field(	__u32, 	orig_logical		)
932296c355cSTheodore Ts'o 		__field(	  int,	orig_start		)
933296c355cSTheodore Ts'o 		__field(	__u32, 	orig_group		)
934296c355cSTheodore Ts'o 		__field(	  int,	orig_len		)
935296c355cSTheodore Ts'o 		__field(	__u32, 	goal_logical		)
936296c355cSTheodore Ts'o 		__field(	  int,	goal_start		)
937296c355cSTheodore Ts'o 		__field(	__u32, 	goal_group		)
938296c355cSTheodore Ts'o 		__field(	  int,	goal_len		)
939296c355cSTheodore Ts'o 		__field(	__u32, 	result_logical		)
940296c355cSTheodore Ts'o 		__field(	  int,	result_start		)
941296c355cSTheodore Ts'o 		__field(	__u32, 	result_group		)
942296c355cSTheodore Ts'o 		__field(	  int,	result_len		)
943210c0526SAnatol Pomozov 		__field(	__u16,	found			)
944210c0526SAnatol Pomozov 		__field(	__u16,	groups			)
945210c0526SAnatol Pomozov 		__field(	__u16,	buddy			)
946210c0526SAnatol Pomozov 		__field(	__u16,	flags			)
947210c0526SAnatol Pomozov 		__field(	__u16,	tail			)
948210c0526SAnatol Pomozov 		__field(	__u8,	cr			)
949296c355cSTheodore Ts'o 	),
950296c355cSTheodore Ts'o 
951296c355cSTheodore Ts'o 	TP_fast_assign(
9520562e0baSJiaying Zhang 		__entry->dev		= ac->ac_inode->i_sb->s_dev;
953296c355cSTheodore Ts'o 		__entry->ino		= ac->ac_inode->i_ino;
954296c355cSTheodore Ts'o 		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
955296c355cSTheodore Ts'o 		__entry->orig_start	= ac->ac_o_ex.fe_start;
956296c355cSTheodore Ts'o 		__entry->orig_group	= ac->ac_o_ex.fe_group;
957296c355cSTheodore Ts'o 		__entry->orig_len	= ac->ac_o_ex.fe_len;
958296c355cSTheodore Ts'o 		__entry->goal_logical	= ac->ac_g_ex.fe_logical;
959296c355cSTheodore Ts'o 		__entry->goal_start	= ac->ac_g_ex.fe_start;
960296c355cSTheodore Ts'o 		__entry->goal_group	= ac->ac_g_ex.fe_group;
961296c355cSTheodore Ts'o 		__entry->goal_len	= ac->ac_g_ex.fe_len;
962296c355cSTheodore Ts'o 		__entry->result_logical	= ac->ac_f_ex.fe_logical;
963296c355cSTheodore Ts'o 		__entry->result_start	= ac->ac_f_ex.fe_start;
964296c355cSTheodore Ts'o 		__entry->result_group	= ac->ac_f_ex.fe_group;
965296c355cSTheodore Ts'o 		__entry->result_len	= ac->ac_f_ex.fe_len;
966210c0526SAnatol Pomozov 		__entry->found		= ac->ac_found;
967210c0526SAnatol Pomozov 		__entry->flags		= ac->ac_flags;
968210c0526SAnatol Pomozov 		__entry->groups		= ac->ac_groups_scanned;
969210c0526SAnatol Pomozov 		__entry->buddy		= ac->ac_buddy;
970210c0526SAnatol Pomozov 		__entry->tail		= ac->ac_tail;
971210c0526SAnatol Pomozov 		__entry->cr		= ac->ac_criteria;
972296c355cSTheodore Ts'o 	),
973296c355cSTheodore Ts'o 
974a269029dSTheodore Ts'o 	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u "
97521ddd568STheodore Ts'o 		  "result %u/%d/%u@%u blks %u grps %u cr %u flags %s "
976296c355cSTheodore Ts'o 		  "tail %u broken %u",
9770562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
978a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
979296c355cSTheodore Ts'o 		  __entry->orig_group, __entry->orig_start,
980296c355cSTheodore Ts'o 		  __entry->orig_len, __entry->orig_logical,
981296c355cSTheodore Ts'o 		  __entry->goal_group, __entry->goal_start,
982296c355cSTheodore Ts'o 		  __entry->goal_len, __entry->goal_logical,
983296c355cSTheodore Ts'o 		  __entry->result_group, __entry->result_start,
984296c355cSTheodore Ts'o 		  __entry->result_len, __entry->result_logical,
985296c355cSTheodore Ts'o 		  __entry->found, __entry->groups, __entry->cr,
98621ddd568STheodore Ts'o 		  show_mballoc_flags(__entry->flags), __entry->tail,
987296c355cSTheodore Ts'o 		  __entry->buddy ? 1 << __entry->buddy : 0)
988296c355cSTheodore Ts'o );
989296c355cSTheodore Ts'o 
990296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_prealloc,
991296c355cSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_context *ac),
992296c355cSTheodore Ts'o 
993296c355cSTheodore Ts'o 	TP_ARGS(ac),
994296c355cSTheodore Ts'o 
995296c355cSTheodore Ts'o 	TP_STRUCT__entry(
9960562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
997296c355cSTheodore Ts'o 		__field(	ino_t,	ino			)
998296c355cSTheodore Ts'o 		__field(	__u32, 	orig_logical		)
999296c355cSTheodore Ts'o 		__field(	  int,	orig_start		)
1000296c355cSTheodore Ts'o 		__field(	__u32, 	orig_group		)
1001296c355cSTheodore Ts'o 		__field(	  int,	orig_len		)
1002296c355cSTheodore Ts'o 		__field(	__u32, 	result_logical		)
1003296c355cSTheodore Ts'o 		__field(	  int,	result_start		)
1004296c355cSTheodore Ts'o 		__field(	__u32, 	result_group		)
1005296c355cSTheodore Ts'o 		__field(	  int,	result_len		)
1006296c355cSTheodore Ts'o 	),
1007296c355cSTheodore Ts'o 
1008296c355cSTheodore Ts'o 	TP_fast_assign(
10090562e0baSJiaying Zhang 		__entry->dev		= ac->ac_inode->i_sb->s_dev;
1010296c355cSTheodore Ts'o 		__entry->ino		= ac->ac_inode->i_ino;
1011296c355cSTheodore Ts'o 		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
1012296c355cSTheodore Ts'o 		__entry->orig_start	= ac->ac_o_ex.fe_start;
1013296c355cSTheodore Ts'o 		__entry->orig_group	= ac->ac_o_ex.fe_group;
1014296c355cSTheodore Ts'o 		__entry->orig_len	= ac->ac_o_ex.fe_len;
1015296c355cSTheodore Ts'o 		__entry->result_logical	= ac->ac_b_ex.fe_logical;
1016296c355cSTheodore Ts'o 		__entry->result_start	= ac->ac_b_ex.fe_start;
1017296c355cSTheodore Ts'o 		__entry->result_group	= ac->ac_b_ex.fe_group;
1018296c355cSTheodore Ts'o 		__entry->result_len	= ac->ac_b_ex.fe_len;
1019296c355cSTheodore Ts'o 	),
1020296c355cSTheodore Ts'o 
1021a269029dSTheodore Ts'o 	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u",
10220562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1023a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
1024296c355cSTheodore Ts'o 		  __entry->orig_group, __entry->orig_start,
1025296c355cSTheodore Ts'o 		  __entry->orig_len, __entry->orig_logical,
1026296c355cSTheodore Ts'o 		  __entry->result_group, __entry->result_start,
1027296c355cSTheodore Ts'o 		  __entry->result_len, __entry->result_logical)
1028296c355cSTheodore Ts'o );
1029296c355cSTheodore Ts'o 
1030f084db93SLi Zefan DECLARE_EVENT_CLASS(ext4__mballoc,
10313e1e5f50SEric Sandeen 	TP_PROTO(struct super_block *sb,
10323e1e5f50SEric Sandeen 		 struct inode *inode,
10333e1e5f50SEric Sandeen 		 ext4_group_t group,
10343e1e5f50SEric Sandeen 		 ext4_grpblk_t start,
10353e1e5f50SEric Sandeen 		 ext4_grpblk_t len),
1036296c355cSTheodore Ts'o 
10373e1e5f50SEric Sandeen 	TP_ARGS(sb, inode, group, start, len),
1038296c355cSTheodore Ts'o 
1039296c355cSTheodore Ts'o 	TP_STRUCT__entry(
10400562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1041296c355cSTheodore Ts'o 		__field(	ino_t,	ino			)
1042296c355cSTheodore Ts'o 		__field(	  int,	result_start		)
1043296c355cSTheodore Ts'o 		__field(	__u32, 	result_group		)
1044296c355cSTheodore Ts'o 		__field(	  int,	result_len		)
1045296c355cSTheodore Ts'o 	),
1046296c355cSTheodore Ts'o 
1047296c355cSTheodore Ts'o 	TP_fast_assign(
10480562e0baSJiaying Zhang 		__entry->dev		= sb->s_dev;
10493e1e5f50SEric Sandeen 		__entry->ino		= inode ? inode->i_ino : 0;
10503e1e5f50SEric Sandeen 		__entry->result_start	= start;
10513e1e5f50SEric Sandeen 		__entry->result_group	= group;
10523e1e5f50SEric Sandeen 		__entry->result_len	= len;
1053296c355cSTheodore Ts'o 	),
1054296c355cSTheodore Ts'o 
1055a9c667f8SLukas Czerner 	TP_printk("dev %d,%d inode %lu extent %u/%d/%d ",
10560562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1057a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
1058296c355cSTheodore Ts'o 		  __entry->result_group, __entry->result_start,
10593e1e5f50SEric Sandeen 		  __entry->result_len)
1060296c355cSTheodore Ts'o );
1061296c355cSTheodore Ts'o 
1062f084db93SLi Zefan DEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard,
1063f084db93SLi Zefan 
10643e1e5f50SEric Sandeen 	TP_PROTO(struct super_block *sb,
10653e1e5f50SEric Sandeen 		 struct inode *inode,
10663e1e5f50SEric Sandeen 		 ext4_group_t group,
10673e1e5f50SEric Sandeen 		 ext4_grpblk_t start,
10683e1e5f50SEric Sandeen 		 ext4_grpblk_t len),
1069296c355cSTheodore Ts'o 
10703e1e5f50SEric Sandeen 	TP_ARGS(sb, inode, group, start, len)
1071f084db93SLi Zefan );
1072296c355cSTheodore Ts'o 
1073f084db93SLi Zefan DEFINE_EVENT(ext4__mballoc, ext4_mballoc_free,
1074296c355cSTheodore Ts'o 
10753e1e5f50SEric Sandeen 	TP_PROTO(struct super_block *sb,
10763e1e5f50SEric Sandeen 		 struct inode *inode,
10773e1e5f50SEric Sandeen 		 ext4_group_t group,
10783e1e5f50SEric Sandeen 		 ext4_grpblk_t start,
10793e1e5f50SEric Sandeen 		 ext4_grpblk_t len),
1080296c355cSTheodore Ts'o 
10813e1e5f50SEric Sandeen 	TP_ARGS(sb, inode, group, start, len)
1082296c355cSTheodore Ts'o );
1083296c355cSTheodore Ts'o 
1084beac2da7STheodore Ts'o TRACE_EVENT(ext4_forget,
1085beac2da7STheodore Ts'o 	TP_PROTO(struct inode *inode, int is_metadata, __u64 block),
1086beac2da7STheodore Ts'o 
1087beac2da7STheodore Ts'o 	TP_ARGS(inode, is_metadata, block),
1088beac2da7STheodore Ts'o 
1089beac2da7STheodore Ts'o 	TP_STRUCT__entry(
10900562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1091beac2da7STheodore Ts'o 		__field(	ino_t,	ino			)
1092beac2da7STheodore Ts'o 		__field(	__u64,	block			)
1093210c0526SAnatol Pomozov 		__field(	int,	is_metadata		)
1094210c0526SAnatol Pomozov 		__field(	__u16,	mode			)
1095beac2da7STheodore Ts'o 	),
1096beac2da7STheodore Ts'o 
1097beac2da7STheodore Ts'o 	TP_fast_assign(
10980562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1099beac2da7STheodore Ts'o 		__entry->ino	= inode->i_ino;
1100beac2da7STheodore Ts'o 		__entry->block	= block;
1101210c0526SAnatol Pomozov 		__entry->is_metadata = is_metadata;
1102210c0526SAnatol Pomozov 		__entry->mode	= inode->i_mode;
1103beac2da7STheodore Ts'o 	),
1104beac2da7STheodore Ts'o 
1105a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %llu",
11060562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
11070562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
11080562e0baSJiaying Zhang 		  __entry->mode, __entry->is_metadata, __entry->block)
1109beac2da7STheodore Ts'o );
1110beac2da7STheodore Ts'o 
1111f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_update_reserve_space,
1112d8990240SAditya Kali 	TP_PROTO(struct inode *inode, int used_blocks, int quota_claim),
1113f8ec9d68STheodore Ts'o 
1114d8990240SAditya Kali 	TP_ARGS(inode, used_blocks, quota_claim),
1115f8ec9d68STheodore Ts'o 
1116f8ec9d68STheodore Ts'o 	TP_STRUCT__entry(
11170562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1118f8ec9d68STheodore Ts'o 		__field(	ino_t,	ino			)
1119f8ec9d68STheodore Ts'o 		__field(	__u64,	i_blocks		)
1120f8ec9d68STheodore Ts'o 		__field(	int,	used_blocks		)
1121f8ec9d68STheodore Ts'o 		__field(	int,	reserved_data_blocks	)
1122f8ec9d68STheodore Ts'o 		__field(	int,	reserved_meta_blocks	)
1123f8ec9d68STheodore Ts'o 		__field(	int,	allocated_meta_blocks	)
1124d8990240SAditya Kali 		__field(	int,	quota_claim		)
1125210c0526SAnatol Pomozov 		__field(	__u16,	mode			)
1126f8ec9d68STheodore Ts'o 	),
1127f8ec9d68STheodore Ts'o 
1128f8ec9d68STheodore Ts'o 	TP_fast_assign(
11290562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1130f8ec9d68STheodore Ts'o 		__entry->ino	= inode->i_ino;
1131f8ec9d68STheodore Ts'o 		__entry->i_blocks = inode->i_blocks;
1132f8ec9d68STheodore Ts'o 		__entry->used_blocks = used_blocks;
1133d8990240SAditya Kali 		__entry->reserved_data_blocks =
1134d8990240SAditya Kali 				EXT4_I(inode)->i_reserved_data_blocks;
1135d8990240SAditya Kali 		__entry->reserved_meta_blocks =
1136d8990240SAditya Kali 				EXT4_I(inode)->i_reserved_meta_blocks;
1137d8990240SAditya Kali 		__entry->allocated_meta_blocks =
1138d8990240SAditya Kali 				EXT4_I(inode)->i_allocated_meta_blocks;
1139d8990240SAditya Kali 		__entry->quota_claim = quota_claim;
1140210c0526SAnatol Pomozov 		__entry->mode	= inode->i_mode;
1141f8ec9d68STheodore Ts'o 	),
1142f8ec9d68STheodore Ts'o 
11430562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d "
11440562e0baSJiaying Zhang 		  "reserved_data_blocks %d reserved_meta_blocks %d "
1145d8990240SAditya Kali 		  "allocated_meta_blocks %d quota_claim %d",
11460562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
11470562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
1148a9c667f8SLukas Czerner 		  __entry->mode, __entry->i_blocks,
1149f8ec9d68STheodore Ts'o 		  __entry->used_blocks, __entry->reserved_data_blocks,
1150d8990240SAditya Kali 		  __entry->reserved_meta_blocks, __entry->allocated_meta_blocks,
1151d8990240SAditya Kali 		  __entry->quota_claim)
1152f8ec9d68STheodore Ts'o );
1153f8ec9d68STheodore Ts'o 
1154f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_reserve_space,
1155f8ec9d68STheodore Ts'o 	TP_PROTO(struct inode *inode, int md_needed),
1156f8ec9d68STheodore Ts'o 
1157f8ec9d68STheodore Ts'o 	TP_ARGS(inode, md_needed),
1158f8ec9d68STheodore Ts'o 
1159f8ec9d68STheodore Ts'o 	TP_STRUCT__entry(
11600562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1161f8ec9d68STheodore Ts'o 		__field(	ino_t,	ino			)
1162f8ec9d68STheodore Ts'o 		__field(	__u64,	i_blocks		)
1163f8ec9d68STheodore Ts'o 		__field(	int,	md_needed		)
1164f8ec9d68STheodore Ts'o 		__field(	int,	reserved_data_blocks	)
1165f8ec9d68STheodore Ts'o 		__field(	int,	reserved_meta_blocks	)
1166210c0526SAnatol Pomozov 		__field(	__u16,  mode			)
1167f8ec9d68STheodore Ts'o 	),
1168f8ec9d68STheodore Ts'o 
1169f8ec9d68STheodore Ts'o 	TP_fast_assign(
11700562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1171f8ec9d68STheodore Ts'o 		__entry->ino	= inode->i_ino;
1172f8ec9d68STheodore Ts'o 		__entry->i_blocks = inode->i_blocks;
1173f8ec9d68STheodore Ts'o 		__entry->md_needed = md_needed;
1174f8ec9d68STheodore Ts'o 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1175f8ec9d68STheodore Ts'o 		__entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1176210c0526SAnatol Pomozov 		__entry->mode	= inode->i_mode;
1177f8ec9d68STheodore Ts'o 	),
1178f8ec9d68STheodore Ts'o 
11790562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu md_needed %d "
11800562e0baSJiaying Zhang 		  "reserved_data_blocks %d reserved_meta_blocks %d",
11810562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1182a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
1183a9c667f8SLukas Czerner 		  __entry->mode, __entry->i_blocks,
1184f8ec9d68STheodore Ts'o 		  __entry->md_needed, __entry->reserved_data_blocks,
1185f8ec9d68STheodore Ts'o 		  __entry->reserved_meta_blocks)
1186f8ec9d68STheodore Ts'o );
1187f8ec9d68STheodore Ts'o 
1188f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_release_space,
1189f8ec9d68STheodore Ts'o 	TP_PROTO(struct inode *inode, int freed_blocks),
1190f8ec9d68STheodore Ts'o 
1191f8ec9d68STheodore Ts'o 	TP_ARGS(inode, freed_blocks),
1192f8ec9d68STheodore Ts'o 
1193f8ec9d68STheodore Ts'o 	TP_STRUCT__entry(
11940562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1195f8ec9d68STheodore Ts'o 		__field(	ino_t,	ino			)
1196f8ec9d68STheodore Ts'o 		__field(	__u64,	i_blocks		)
1197f8ec9d68STheodore Ts'o 		__field(	int,	freed_blocks		)
1198f8ec9d68STheodore Ts'o 		__field(	int,	reserved_data_blocks	)
1199f8ec9d68STheodore Ts'o 		__field(	int,	reserved_meta_blocks	)
1200f8ec9d68STheodore Ts'o 		__field(	int,	allocated_meta_blocks	)
1201210c0526SAnatol Pomozov 		__field(	__u16,  mode			)
1202f8ec9d68STheodore Ts'o 	),
1203f8ec9d68STheodore Ts'o 
1204f8ec9d68STheodore Ts'o 	TP_fast_assign(
12050562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1206f8ec9d68STheodore Ts'o 		__entry->ino	= inode->i_ino;
1207f8ec9d68STheodore Ts'o 		__entry->i_blocks = inode->i_blocks;
1208f8ec9d68STheodore Ts'o 		__entry->freed_blocks = freed_blocks;
1209f8ec9d68STheodore Ts'o 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1210f8ec9d68STheodore Ts'o 		__entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1211f8ec9d68STheodore Ts'o 		__entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks;
1212210c0526SAnatol Pomozov 		__entry->mode	= inode->i_mode;
1213f8ec9d68STheodore Ts'o 	),
1214f8ec9d68STheodore Ts'o 
12150562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d "
12160562e0baSJiaying Zhang 		  "reserved_data_blocks %d reserved_meta_blocks %d "
12170562e0baSJiaying Zhang 		  "allocated_meta_blocks %d",
12180562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1219a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
1220a9c667f8SLukas Czerner 		  __entry->mode, __entry->i_blocks,
1221f8ec9d68STheodore Ts'o 		  __entry->freed_blocks, __entry->reserved_data_blocks,
1222f8ec9d68STheodore Ts'o 		  __entry->reserved_meta_blocks, __entry->allocated_meta_blocks)
1223f8ec9d68STheodore Ts'o );
1224f8ec9d68STheodore Ts'o 
1225f307333eSTheodore Ts'o DECLARE_EVENT_CLASS(ext4__bitmap_load,
1226f307333eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, unsigned long group),
1227f307333eSTheodore Ts'o 
1228f307333eSTheodore Ts'o 	TP_ARGS(sb, group),
1229f307333eSTheodore Ts'o 
1230f307333eSTheodore Ts'o 	TP_STRUCT__entry(
12310562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1232f307333eSTheodore Ts'o 		__field(	__u32,	group			)
1233f307333eSTheodore Ts'o 
1234f307333eSTheodore Ts'o 	),
1235f307333eSTheodore Ts'o 
1236f307333eSTheodore Ts'o 	TP_fast_assign(
12370562e0baSJiaying Zhang 		__entry->dev	= sb->s_dev;
1238f307333eSTheodore Ts'o 		__entry->group	= group;
1239f307333eSTheodore Ts'o 	),
1240f307333eSTheodore Ts'o 
1241a269029dSTheodore Ts'o 	TP_printk("dev %d,%d group %u",
12420562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
12430562e0baSJiaying Zhang 		  __entry->group)
1244f307333eSTheodore Ts'o );
1245f307333eSTheodore Ts'o 
1246f307333eSTheodore Ts'o DEFINE_EVENT(ext4__bitmap_load, ext4_mb_bitmap_load,
1247f307333eSTheodore Ts'o 
1248f307333eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, unsigned long group),
1249f307333eSTheodore Ts'o 
1250f307333eSTheodore Ts'o 	TP_ARGS(sb, group)
1251f307333eSTheodore Ts'o );
1252f307333eSTheodore Ts'o 
1253f307333eSTheodore Ts'o DEFINE_EVENT(ext4__bitmap_load, ext4_mb_buddy_bitmap_load,
1254f307333eSTheodore Ts'o 
1255f307333eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, unsigned long group),
1256f307333eSTheodore Ts'o 
1257f307333eSTheodore Ts'o 	TP_ARGS(sb, group)
1258f307333eSTheodore Ts'o );
1259f8ec9d68STheodore Ts'o 
12600562e0baSJiaying Zhang DEFINE_EVENT(ext4__bitmap_load, ext4_read_block_bitmap_load,
12610562e0baSJiaying Zhang 
12620562e0baSJiaying Zhang 	TP_PROTO(struct super_block *sb, unsigned long group),
12630562e0baSJiaying Zhang 
12640562e0baSJiaying Zhang 	TP_ARGS(sb, group)
12650562e0baSJiaying Zhang );
12660562e0baSJiaying Zhang 
12670562e0baSJiaying Zhang DEFINE_EVENT(ext4__bitmap_load, ext4_load_inode_bitmap,
12680562e0baSJiaying Zhang 
12690562e0baSJiaying Zhang 	TP_PROTO(struct super_block *sb, unsigned long group),
12700562e0baSJiaying Zhang 
12710562e0baSJiaying Zhang 	TP_ARGS(sb, group)
12720562e0baSJiaying Zhang );
12730562e0baSJiaying Zhang 
12740562e0baSJiaying Zhang TRACE_EVENT(ext4_direct_IO_enter,
12750562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw),
12760562e0baSJiaying Zhang 
12770562e0baSJiaying Zhang 	TP_ARGS(inode, offset, len, rw),
12780562e0baSJiaying Zhang 
12790562e0baSJiaying Zhang 	TP_STRUCT__entry(
12800562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1281210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
12820562e0baSJiaying Zhang 		__field(	loff_t,	pos			)
12830562e0baSJiaying Zhang 		__field(	unsigned long,	len		)
12840562e0baSJiaying Zhang 		__field(	int,	rw			)
12850562e0baSJiaying Zhang 	),
12860562e0baSJiaying Zhang 
12870562e0baSJiaying Zhang 	TP_fast_assign(
12880562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1289210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
12900562e0baSJiaying Zhang 		__entry->pos	= offset;
12910562e0baSJiaying Zhang 		__entry->len	= len;
12920562e0baSJiaying Zhang 		__entry->rw	= rw;
12930562e0baSJiaying Zhang 	),
12940562e0baSJiaying Zhang 
1295a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d",
12960562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
12970562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
1298a9c667f8SLukas Czerner 		  __entry->pos, __entry->len, __entry->rw)
12990562e0baSJiaying Zhang );
13000562e0baSJiaying Zhang 
13010562e0baSJiaying Zhang TRACE_EVENT(ext4_direct_IO_exit,
1302a9c667f8SLukas Czerner 	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len,
1303a9c667f8SLukas Czerner 		 int rw, int ret),
13040562e0baSJiaying Zhang 
13050562e0baSJiaying Zhang 	TP_ARGS(inode, offset, len, rw, ret),
13060562e0baSJiaying Zhang 
13070562e0baSJiaying Zhang 	TP_STRUCT__entry(
13080562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1309210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
13100562e0baSJiaying Zhang 		__field(	loff_t,	pos			)
13110562e0baSJiaying Zhang 		__field(	unsigned long,	len		)
13120562e0baSJiaying Zhang 		__field(	int,	rw			)
13130562e0baSJiaying Zhang 		__field(	int,	ret			)
13140562e0baSJiaying Zhang 	),
13150562e0baSJiaying Zhang 
13160562e0baSJiaying Zhang 	TP_fast_assign(
13170562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1318210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
13190562e0baSJiaying Zhang 		__entry->pos	= offset;
13200562e0baSJiaying Zhang 		__entry->len	= len;
13210562e0baSJiaying Zhang 		__entry->rw	= rw;
13220562e0baSJiaying Zhang 		__entry->ret	= ret;
13230562e0baSJiaying Zhang 	),
13240562e0baSJiaying Zhang 
1325a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d ret %d",
13260562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
13270562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
1328a9c667f8SLukas Czerner 		  __entry->pos, __entry->len,
13290562e0baSJiaying Zhang 		  __entry->rw, __entry->ret)
13300562e0baSJiaying Zhang );
13310562e0baSJiaying Zhang 
13320562e0baSJiaying Zhang TRACE_EVENT(ext4_fallocate_enter,
13330562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
13340562e0baSJiaying Zhang 
13350562e0baSJiaying Zhang 	TP_ARGS(inode, offset, len, mode),
13360562e0baSJiaying Zhang 
13370562e0baSJiaying Zhang 	TP_STRUCT__entry(
13380562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1339210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
13400562e0baSJiaying Zhang 		__field(	loff_t,	pos			)
13410562e0baSJiaying Zhang 		__field(	loff_t,	len			)
13420562e0baSJiaying Zhang 		__field(	int,	mode			)
13430562e0baSJiaying Zhang 	),
13440562e0baSJiaying Zhang 
13450562e0baSJiaying Zhang 	TP_fast_assign(
13460562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1347210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
13480562e0baSJiaying Zhang 		__entry->pos	= offset;
13490562e0baSJiaying Zhang 		__entry->len	= len;
13500562e0baSJiaying Zhang 		__entry->mode	= mode;
13510562e0baSJiaying Zhang 	),
13520562e0baSJiaying Zhang 
1353a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %d",
13540562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1355a9c667f8SLukas Czerner 		  (unsigned long) __entry->ino, __entry->pos,
1356a9c667f8SLukas Czerner 		  __entry->len, __entry->mode)
13570562e0baSJiaying Zhang );
13580562e0baSJiaying Zhang 
13590562e0baSJiaying Zhang TRACE_EVENT(ext4_fallocate_exit,
1360a9c667f8SLukas Czerner 	TP_PROTO(struct inode *inode, loff_t offset,
1361a9c667f8SLukas Czerner 		 unsigned int max_blocks, int ret),
13620562e0baSJiaying Zhang 
13630562e0baSJiaying Zhang 	TP_ARGS(inode, offset, max_blocks, ret),
13640562e0baSJiaying Zhang 
13650562e0baSJiaying Zhang 	TP_STRUCT__entry(
13660562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1367210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
13680562e0baSJiaying Zhang 		__field(	loff_t,	pos			)
1369a9c667f8SLukas Czerner 		__field(	unsigned int,	blocks		)
13700562e0baSJiaying Zhang 		__field(	int, 	ret			)
13710562e0baSJiaying Zhang 	),
13720562e0baSJiaying Zhang 
13730562e0baSJiaying Zhang 	TP_fast_assign(
13740562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1375210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
13760562e0baSJiaying Zhang 		__entry->pos	= offset;
13770562e0baSJiaying Zhang 		__entry->blocks	= max_blocks;
13780562e0baSJiaying Zhang 		__entry->ret	= ret;
13790562e0baSJiaying Zhang 	),
13800562e0baSJiaying Zhang 
1381a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu pos %lld blocks %u ret %d",
13820562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
13830562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
1384a9c667f8SLukas Czerner 		  __entry->pos, __entry->blocks,
13850562e0baSJiaying Zhang 		  __entry->ret)
13860562e0baSJiaying Zhang );
13870562e0baSJiaying Zhang 
1388aaddea81SZheng Liu TRACE_EVENT(ext4_punch_hole,
1389aaddea81SZheng Liu 	TP_PROTO(struct inode *inode, loff_t offset, loff_t len),
1390aaddea81SZheng Liu 
1391aaddea81SZheng Liu 	TP_ARGS(inode, offset, len),
1392aaddea81SZheng Liu 
1393aaddea81SZheng Liu 	TP_STRUCT__entry(
1394aaddea81SZheng Liu 		__field(	dev_t,	dev			)
1395aaddea81SZheng Liu 		__field(	ino_t,	ino			)
1396aaddea81SZheng Liu 		__field(	loff_t,	offset			)
1397aaddea81SZheng Liu 		__field(	loff_t, len			)
1398aaddea81SZheng Liu 	),
1399aaddea81SZheng Liu 
1400aaddea81SZheng Liu 	TP_fast_assign(
1401aaddea81SZheng Liu 		__entry->dev	= inode->i_sb->s_dev;
1402aaddea81SZheng Liu 		__entry->ino	= inode->i_ino;
1403aaddea81SZheng Liu 		__entry->offset	= offset;
1404aaddea81SZheng Liu 		__entry->len	= len;
1405aaddea81SZheng Liu 	),
1406aaddea81SZheng Liu 
1407aaddea81SZheng Liu 	TP_printk("dev %d,%d ino %lu offset %lld len %lld",
1408aaddea81SZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1409aaddea81SZheng Liu 		  (unsigned long) __entry->ino,
1410aaddea81SZheng Liu 		  __entry->offset, __entry->len)
1411aaddea81SZheng Liu );
1412aaddea81SZheng Liu 
14130562e0baSJiaying Zhang TRACE_EVENT(ext4_unlink_enter,
14140562e0baSJiaying Zhang 	TP_PROTO(struct inode *parent, struct dentry *dentry),
14150562e0baSJiaying Zhang 
14160562e0baSJiaying Zhang 	TP_ARGS(parent, dentry),
14170562e0baSJiaying Zhang 
14180562e0baSJiaying Zhang 	TP_STRUCT__entry(
14190562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1420210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
1421210c0526SAnatol Pomozov 		__field(	ino_t,	parent			)
1422210c0526SAnatol Pomozov 		__field(	loff_t,	size			)
14230562e0baSJiaying Zhang 	),
14240562e0baSJiaying Zhang 
14250562e0baSJiaying Zhang 	TP_fast_assign(
14260562e0baSJiaying Zhang 		__entry->dev		= dentry->d_inode->i_sb->s_dev;
1427210c0526SAnatol Pomozov 		__entry->ino		= dentry->d_inode->i_ino;
1428210c0526SAnatol Pomozov 		__entry->parent		= parent->i_ino;
1429210c0526SAnatol Pomozov 		__entry->size		= dentry->d_inode->i_size;
14300562e0baSJiaying Zhang 	),
14310562e0baSJiaying Zhang 
1432a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu size %lld parent %lu",
14330562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
14340562e0baSJiaying Zhang 		  (unsigned long) __entry->ino, __entry->size,
14350562e0baSJiaying Zhang 		  (unsigned long) __entry->parent)
14360562e0baSJiaying Zhang );
14370562e0baSJiaying Zhang 
14380562e0baSJiaying Zhang TRACE_EVENT(ext4_unlink_exit,
14390562e0baSJiaying Zhang 	TP_PROTO(struct dentry *dentry, int ret),
14400562e0baSJiaying Zhang 
14410562e0baSJiaying Zhang 	TP_ARGS(dentry, ret),
14420562e0baSJiaying Zhang 
14430562e0baSJiaying Zhang 	TP_STRUCT__entry(
14440562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1445210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
14460562e0baSJiaying Zhang 		__field(	int,	ret			)
14470562e0baSJiaying Zhang 	),
14480562e0baSJiaying Zhang 
14490562e0baSJiaying Zhang 	TP_fast_assign(
14500562e0baSJiaying Zhang 		__entry->dev		= dentry->d_inode->i_sb->s_dev;
1451210c0526SAnatol Pomozov 		__entry->ino		= dentry->d_inode->i_ino;
14520562e0baSJiaying Zhang 		__entry->ret		= ret;
14530562e0baSJiaying Zhang 	),
14540562e0baSJiaying Zhang 
1455a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu ret %d",
14560562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
14570562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
14580562e0baSJiaying Zhang 		  __entry->ret)
14590562e0baSJiaying Zhang );
14600562e0baSJiaying Zhang 
14610562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__truncate,
14620562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode),
14630562e0baSJiaying Zhang 
14640562e0baSJiaying Zhang 	TP_ARGS(inode),
14650562e0baSJiaying Zhang 
14660562e0baSJiaying Zhang 	TP_STRUCT__entry(
14670562e0baSJiaying Zhang 		__field(	dev_t,		dev		)
1468210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
1469a9c667f8SLukas Czerner 		__field(	__u64,		blocks		)
14700562e0baSJiaying Zhang 	),
14710562e0baSJiaying Zhang 
14720562e0baSJiaying Zhang 	TP_fast_assign(
14730562e0baSJiaying Zhang 		__entry->dev    = inode->i_sb->s_dev;
1474210c0526SAnatol Pomozov 		__entry->ino    = inode->i_ino;
14750562e0baSJiaying Zhang 		__entry->blocks	= inode->i_blocks;
14760562e0baSJiaying Zhang 	),
14770562e0baSJiaying Zhang 
1478a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu blocks %llu",
14790562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1480a9c667f8SLukas Czerner 		  (unsigned long) __entry->ino, __entry->blocks)
14810562e0baSJiaying Zhang );
14820562e0baSJiaying Zhang 
14830562e0baSJiaying Zhang DEFINE_EVENT(ext4__truncate, ext4_truncate_enter,
14840562e0baSJiaying Zhang 
14850562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode),
14860562e0baSJiaying Zhang 
14870562e0baSJiaying Zhang 	TP_ARGS(inode)
14880562e0baSJiaying Zhang );
14890562e0baSJiaying Zhang 
14900562e0baSJiaying Zhang DEFINE_EVENT(ext4__truncate, ext4_truncate_exit,
14910562e0baSJiaying Zhang 
14920562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode),
14930562e0baSJiaying Zhang 
14940562e0baSJiaying Zhang 	TP_ARGS(inode)
14950562e0baSJiaying Zhang );
14960562e0baSJiaying Zhang 
14976f91bc5fSEric Gouriou /* 'ux' is the uninitialized extent. */
14986f91bc5fSEric Gouriou TRACE_EVENT(ext4_ext_convert_to_initialized_enter,
14996f91bc5fSEric Gouriou 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
15006f91bc5fSEric Gouriou 		 struct ext4_extent *ux),
15016f91bc5fSEric Gouriou 
15026f91bc5fSEric Gouriou 	TP_ARGS(inode, map, ux),
15036f91bc5fSEric Gouriou 
15046f91bc5fSEric Gouriou 	TP_STRUCT__entry(
15056f91bc5fSEric Gouriou 		__field(	dev_t,		dev	)
1506210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
15076f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	m_lblk	)
15086f91bc5fSEric Gouriou 		__field(	unsigned,	m_len	)
15096f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	u_lblk	)
15106f91bc5fSEric Gouriou 		__field(	unsigned,	u_len	)
15116f91bc5fSEric Gouriou 		__field(	ext4_fsblk_t,	u_pblk	)
15126f91bc5fSEric Gouriou 	),
15136f91bc5fSEric Gouriou 
15146f91bc5fSEric Gouriou 	TP_fast_assign(
15156f91bc5fSEric Gouriou 		__entry->dev		= inode->i_sb->s_dev;
1516210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
15176f91bc5fSEric Gouriou 		__entry->m_lblk		= map->m_lblk;
15186f91bc5fSEric Gouriou 		__entry->m_len		= map->m_len;
15196f91bc5fSEric Gouriou 		__entry->u_lblk		= le32_to_cpu(ux->ee_block);
15206f91bc5fSEric Gouriou 		__entry->u_len		= ext4_ext_get_actual_len(ux);
15216f91bc5fSEric Gouriou 		__entry->u_pblk		= ext4_ext_pblock(ux);
15226f91bc5fSEric Gouriou 	),
15236f91bc5fSEric Gouriou 
15246f91bc5fSEric Gouriou 	TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u u_lblk %u u_len %u "
15256f91bc5fSEric Gouriou 		  "u_pblk %llu",
15266f91bc5fSEric Gouriou 		  MAJOR(__entry->dev), MINOR(__entry->dev),
15276f91bc5fSEric Gouriou 		  (unsigned long) __entry->ino,
15286f91bc5fSEric Gouriou 		  __entry->m_lblk, __entry->m_len,
15296f91bc5fSEric Gouriou 		  __entry->u_lblk, __entry->u_len, __entry->u_pblk)
15306f91bc5fSEric Gouriou );
15316f91bc5fSEric Gouriou 
15326f91bc5fSEric Gouriou /*
15336f91bc5fSEric Gouriou  * 'ux' is the uninitialized extent.
15346f91bc5fSEric Gouriou  * 'ix' is the initialized extent to which blocks are transferred.
15356f91bc5fSEric Gouriou  */
15366f91bc5fSEric Gouriou TRACE_EVENT(ext4_ext_convert_to_initialized_fastpath,
15376f91bc5fSEric Gouriou 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
15386f91bc5fSEric Gouriou 		 struct ext4_extent *ux, struct ext4_extent *ix),
15396f91bc5fSEric Gouriou 
15406f91bc5fSEric Gouriou 	TP_ARGS(inode, map, ux, ix),
15416f91bc5fSEric Gouriou 
15426f91bc5fSEric Gouriou 	TP_STRUCT__entry(
15436f91bc5fSEric Gouriou 		__field(	dev_t,		dev	)
1544210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
15456f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	m_lblk	)
15466f91bc5fSEric Gouriou 		__field(	unsigned,	m_len	)
15476f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	u_lblk	)
15486f91bc5fSEric Gouriou 		__field(	unsigned,	u_len	)
15496f91bc5fSEric Gouriou 		__field(	ext4_fsblk_t,	u_pblk	)
15506f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	i_lblk	)
15516f91bc5fSEric Gouriou 		__field(	unsigned,	i_len	)
15526f91bc5fSEric Gouriou 		__field(	ext4_fsblk_t,	i_pblk	)
15536f91bc5fSEric Gouriou 	),
15546f91bc5fSEric Gouriou 
15556f91bc5fSEric Gouriou 	TP_fast_assign(
15566f91bc5fSEric Gouriou 		__entry->dev		= inode->i_sb->s_dev;
1557210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
15586f91bc5fSEric Gouriou 		__entry->m_lblk		= map->m_lblk;
15596f91bc5fSEric Gouriou 		__entry->m_len		= map->m_len;
15606f91bc5fSEric Gouriou 		__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 		__entry->i_lblk		= le32_to_cpu(ix->ee_block);
15646f91bc5fSEric Gouriou 		__entry->i_len		= ext4_ext_get_actual_len(ix);
15656f91bc5fSEric Gouriou 		__entry->i_pblk		= ext4_ext_pblock(ix);
15666f91bc5fSEric Gouriou 	),
15676f91bc5fSEric Gouriou 
15686f91bc5fSEric Gouriou 	TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u "
15696f91bc5fSEric Gouriou 		  "u_lblk %u u_len %u u_pblk %llu "
15706f91bc5fSEric Gouriou 		  "i_lblk %u i_len %u i_pblk %llu ",
15716f91bc5fSEric Gouriou 		  MAJOR(__entry->dev), MINOR(__entry->dev),
15726f91bc5fSEric Gouriou 		  (unsigned long) __entry->ino,
15736f91bc5fSEric Gouriou 		  __entry->m_lblk, __entry->m_len,
15746f91bc5fSEric Gouriou 		  __entry->u_lblk, __entry->u_len, __entry->u_pblk,
15756f91bc5fSEric Gouriou 		  __entry->i_lblk, __entry->i_len, __entry->i_pblk)
15766f91bc5fSEric Gouriou );
15776f91bc5fSEric Gouriou 
15780562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__map_blocks_enter,
15790562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1580a9c667f8SLukas Czerner 		 unsigned int len, unsigned int flags),
15810562e0baSJiaying Zhang 
15820562e0baSJiaying Zhang 	TP_ARGS(inode, lblk, len, flags),
15830562e0baSJiaying Zhang 
15840562e0baSJiaying Zhang 	TP_STRUCT__entry(
15850562e0baSJiaying Zhang 		__field(	dev_t,		dev		)
1586210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
15870562e0baSJiaying Zhang 		__field(	ext4_lblk_t,	lblk		)
1588a9c667f8SLukas Czerner 		__field(	unsigned int,	len		)
1589a9c667f8SLukas Czerner 		__field(	unsigned int,	flags		)
15900562e0baSJiaying Zhang 	),
15910562e0baSJiaying Zhang 
15920562e0baSJiaying Zhang 	TP_fast_assign(
15930562e0baSJiaying Zhang 		__entry->dev    = inode->i_sb->s_dev;
1594210c0526SAnatol Pomozov 		__entry->ino    = inode->i_ino;
15950562e0baSJiaying Zhang 		__entry->lblk	= lblk;
15960562e0baSJiaying Zhang 		__entry->len	= len;
15970562e0baSJiaying Zhang 		__entry->flags	= flags;
15980562e0baSJiaying Zhang 	),
15990562e0baSJiaying Zhang 
160021ddd568STheodore Ts'o 	TP_printk("dev %d,%d ino %lu lblk %u len %u flags %s",
16010562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
16020562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
160321ddd568STheodore Ts'o 		  __entry->lblk, __entry->len, show_map_flags(__entry->flags))
16040562e0baSJiaying Zhang );
16050562e0baSJiaying Zhang 
16060562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter,
16070562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
16080562e0baSJiaying Zhang 		 unsigned len, unsigned flags),
16090562e0baSJiaying Zhang 
16100562e0baSJiaying Zhang 	TP_ARGS(inode, lblk, len, flags)
16110562e0baSJiaying Zhang );
16120562e0baSJiaying Zhang 
16130562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter,
16140562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
16150562e0baSJiaying Zhang 		 unsigned len, unsigned flags),
16160562e0baSJiaying Zhang 
16170562e0baSJiaying Zhang 	TP_ARGS(inode, lblk, len, flags)
16180562e0baSJiaying Zhang );
16190562e0baSJiaying Zhang 
16200562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
162121ddd568STheodore Ts'o 	TP_PROTO(struct inode *inode, unsigned flags, struct ext4_map_blocks *map,
162221ddd568STheodore Ts'o 		 int ret),
16230562e0baSJiaying Zhang 
162421ddd568STheodore Ts'o 	TP_ARGS(inode, flags, map, ret),
16250562e0baSJiaying Zhang 
16260562e0baSJiaying Zhang 	TP_STRUCT__entry(
16270562e0baSJiaying Zhang 		__field(	dev_t,		dev		)
1628210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
162921ddd568STheodore Ts'o 		__field(	unsigned int,	flags		)
16300562e0baSJiaying Zhang 		__field(	ext4_fsblk_t,	pblk		)
1631210c0526SAnatol Pomozov 		__field(	ext4_lblk_t,	lblk		)
1632a9c667f8SLukas Czerner 		__field(	unsigned int,	len		)
163321ddd568STheodore Ts'o 		__field(	unsigned int,	mflags		)
16340562e0baSJiaying Zhang 		__field(	int,		ret		)
16350562e0baSJiaying Zhang 	),
16360562e0baSJiaying Zhang 
16370562e0baSJiaying Zhang 	TP_fast_assign(
16380562e0baSJiaying Zhang 		__entry->dev    = inode->i_sb->s_dev;
1639210c0526SAnatol Pomozov 		__entry->ino    = inode->i_ino;
164021ddd568STheodore Ts'o 		__entry->flags	= flags;
164119b303d8SZheng Liu 		__entry->pblk	= map->m_pblk;
164219b303d8SZheng Liu 		__entry->lblk	= map->m_lblk;
164319b303d8SZheng Liu 		__entry->len	= map->m_len;
164421ddd568STheodore Ts'o 		__entry->mflags	= map->m_flags;
16450562e0baSJiaying Zhang 		__entry->ret	= ret;
16460562e0baSJiaying Zhang 	),
16470562e0baSJiaying Zhang 
164821ddd568STheodore Ts'o 	TP_printk("dev %d,%d ino %lu flags %s lblk %u pblk %llu len %u "
164921ddd568STheodore Ts'o 		  "mflags %s ret %d",
16500562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
16510562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
165221ddd568STheodore Ts'o 		  show_map_flags(__entry->flags), __entry->lblk, __entry->pblk,
165321ddd568STheodore Ts'o 		  __entry->len, show_mflags(__entry->mflags), __entry->ret)
16540562e0baSJiaying Zhang );
16550562e0baSJiaying Zhang 
16560562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
165721ddd568STheodore Ts'o 	TP_PROTO(struct inode *inode, unsigned flags,
165821ddd568STheodore Ts'o 		 struct ext4_map_blocks *map, int ret),
16590562e0baSJiaying Zhang 
166021ddd568STheodore Ts'o 	TP_ARGS(inode, flags, map, ret)
16610562e0baSJiaying Zhang );
16620562e0baSJiaying Zhang 
16630562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
166421ddd568STheodore Ts'o 	TP_PROTO(struct inode *inode, unsigned flags,
166521ddd568STheodore Ts'o 		 struct ext4_map_blocks *map, int ret),
16660562e0baSJiaying Zhang 
166721ddd568STheodore Ts'o 	TP_ARGS(inode, flags, map, ret)
16680562e0baSJiaying Zhang );
16690562e0baSJiaying Zhang 
16700562e0baSJiaying Zhang TRACE_EVENT(ext4_ext_load_extent,
16710562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk),
16720562e0baSJiaying Zhang 
16730562e0baSJiaying Zhang 	TP_ARGS(inode, lblk, pblk),
16740562e0baSJiaying Zhang 
16750562e0baSJiaying Zhang 	TP_STRUCT__entry(
16760562e0baSJiaying Zhang 		__field(	dev_t,		dev		)
1677210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
16780562e0baSJiaying Zhang 		__field(	ext4_fsblk_t,	pblk		)
1679210c0526SAnatol Pomozov 		__field(	ext4_lblk_t,	lblk		)
16800562e0baSJiaying Zhang 	),
16810562e0baSJiaying Zhang 
16820562e0baSJiaying Zhang 	TP_fast_assign(
16830562e0baSJiaying Zhang 		__entry->dev    = inode->i_sb->s_dev;
1684210c0526SAnatol Pomozov 		__entry->ino    = inode->i_ino;
16850562e0baSJiaying Zhang 		__entry->pblk	= pblk;
1686210c0526SAnatol Pomozov 		__entry->lblk	= lblk;
16870562e0baSJiaying Zhang 	),
16880562e0baSJiaying Zhang 
16890562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu",
16900562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
16910562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
1692a9c667f8SLukas Czerner 		  __entry->lblk, __entry->pblk)
16930562e0baSJiaying Zhang );
16940562e0baSJiaying Zhang 
16950562e0baSJiaying Zhang TRACE_EVENT(ext4_load_inode,
16960562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode),
16970562e0baSJiaying Zhang 
16980562e0baSJiaying Zhang 	TP_ARGS(inode),
16990562e0baSJiaying Zhang 
17000562e0baSJiaying Zhang 	TP_STRUCT__entry(
17010562e0baSJiaying Zhang 		__field(	dev_t,	dev		)
1702210c0526SAnatol Pomozov 		__field(	ino_t,	ino		)
17030562e0baSJiaying Zhang 	),
17040562e0baSJiaying Zhang 
17050562e0baSJiaying Zhang 	TP_fast_assign(
17060562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
1707210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
17080562e0baSJiaying Zhang 	),
17090562e0baSJiaying Zhang 
17100562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %ld",
17110562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
17120562e0baSJiaying Zhang 		  (unsigned long) __entry->ino)
17130562e0baSJiaying Zhang );
17140562e0baSJiaying Zhang 
171512706394STheodore Ts'o TRACE_EVENT(ext4_journal_start,
17165fe2fe89SJan Kara 	TP_PROTO(struct super_block *sb, int blocks, int rsv_blocks,
17175fe2fe89SJan Kara 		 unsigned long IP),
171812706394STheodore Ts'o 
17195fe2fe89SJan Kara 	TP_ARGS(sb, blocks, rsv_blocks, IP),
172012706394STheodore Ts'o 
172112706394STheodore Ts'o 	TP_STRUCT__entry(
172212706394STheodore Ts'o 		__field(	dev_t,	dev			)
172312706394STheodore Ts'o 		__field(unsigned long,	ip			)
17245fe2fe89SJan Kara 		__field(	  int,	blocks			)
17255fe2fe89SJan Kara 		__field(	  int,	rsv_blocks		)
172612706394STheodore Ts'o 	),
172712706394STheodore Ts'o 
172812706394STheodore Ts'o 	TP_fast_assign(
172912706394STheodore Ts'o 		__entry->dev		 = sb->s_dev;
173012706394STheodore Ts'o 		__entry->ip		 = IP;
17315fe2fe89SJan Kara 		__entry->blocks		 = blocks;
17325fe2fe89SJan Kara 		__entry->rsv_blocks	 = rsv_blocks;
173312706394STheodore Ts'o 	),
173412706394STheodore Ts'o 
17355fe2fe89SJan Kara 	TP_printk("dev %d,%d blocks, %d rsv_blocks, %d caller %pF",
173612706394STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
17375fe2fe89SJan Kara 		  __entry->blocks, __entry->rsv_blocks, (void *)__entry->ip)
17385fe2fe89SJan Kara );
17395fe2fe89SJan Kara 
17405fe2fe89SJan Kara TRACE_EVENT(ext4_journal_start_reserved,
17415fe2fe89SJan Kara 	TP_PROTO(struct super_block *sb, int blocks, unsigned long IP),
17425fe2fe89SJan Kara 
17435fe2fe89SJan Kara 	TP_ARGS(sb, blocks, IP),
17445fe2fe89SJan Kara 
17455fe2fe89SJan Kara 	TP_STRUCT__entry(
17465fe2fe89SJan Kara 		__field(	dev_t,	dev			)
17475fe2fe89SJan Kara 		__field(unsigned long,	ip			)
17485fe2fe89SJan Kara 		__field(	  int,	blocks			)
17495fe2fe89SJan Kara 	),
17505fe2fe89SJan Kara 
17515fe2fe89SJan Kara 	TP_fast_assign(
17525fe2fe89SJan Kara 		__entry->dev		 = sb->s_dev;
17535fe2fe89SJan Kara 		__entry->ip		 = IP;
17545fe2fe89SJan Kara 		__entry->blocks		 = blocks;
17555fe2fe89SJan Kara 	),
17565fe2fe89SJan Kara 
17575fe2fe89SJan Kara 	TP_printk("dev %d,%d blocks, %d caller %pF",
17585fe2fe89SJan Kara 		  MAJOR(__entry->dev), MINOR(__entry->dev),
17595fe2fe89SJan Kara 		  __entry->blocks, (void *)__entry->ip)
176012706394STheodore Ts'o );
176112706394STheodore Ts'o 
1762b3d4c2b1STao Ma DECLARE_EVENT_CLASS(ext4__trim,
1763b3d4c2b1STao Ma 	TP_PROTO(struct super_block *sb,
1764b3d4c2b1STao Ma 		 ext4_group_t group,
1765b3d4c2b1STao Ma 		 ext4_grpblk_t start,
1766b3d4c2b1STao Ma 		 ext4_grpblk_t len),
1767b3d4c2b1STao Ma 
1768b3d4c2b1STao Ma 	TP_ARGS(sb, group, start, len),
1769b3d4c2b1STao Ma 
1770b3d4c2b1STao Ma 	TP_STRUCT__entry(
1771b3d4c2b1STao Ma 		__field(	int,	dev_major		)
1772b3d4c2b1STao Ma 		__field(	int,	dev_minor		)
1773b3d4c2b1STao Ma 		__field(	__u32, 	group			)
1774b3d4c2b1STao Ma 		__field(	int,	start			)
1775b3d4c2b1STao Ma 		__field(	int,	len			)
1776b3d4c2b1STao Ma 	),
1777b3d4c2b1STao Ma 
1778b3d4c2b1STao Ma 	TP_fast_assign(
1779b3d4c2b1STao Ma 		__entry->dev_major	= MAJOR(sb->s_dev);
1780b3d4c2b1STao Ma 		__entry->dev_minor	= MINOR(sb->s_dev);
1781b3d4c2b1STao Ma 		__entry->group		= group;
1782b3d4c2b1STao Ma 		__entry->start		= start;
1783b3d4c2b1STao Ma 		__entry->len		= len;
1784b3d4c2b1STao Ma 	),
1785b3d4c2b1STao Ma 
1786b3d4c2b1STao Ma 	TP_printk("dev %d,%d group %u, start %d, len %d",
1787b3d4c2b1STao Ma 		  __entry->dev_major, __entry->dev_minor,
1788b3d4c2b1STao Ma 		  __entry->group, __entry->start, __entry->len)
1789b3d4c2b1STao Ma );
1790b3d4c2b1STao Ma 
1791b3d4c2b1STao Ma DEFINE_EVENT(ext4__trim, ext4_trim_extent,
1792b3d4c2b1STao Ma 
1793b3d4c2b1STao Ma 	TP_PROTO(struct super_block *sb,
1794b3d4c2b1STao Ma 		 ext4_group_t group,
1795b3d4c2b1STao Ma 		 ext4_grpblk_t start,
1796b3d4c2b1STao Ma 		 ext4_grpblk_t len),
1797b3d4c2b1STao Ma 
1798b3d4c2b1STao Ma 	TP_ARGS(sb, group, start, len)
1799b3d4c2b1STao Ma );
1800b3d4c2b1STao Ma 
1801b3d4c2b1STao Ma DEFINE_EVENT(ext4__trim, ext4_trim_all_free,
1802b3d4c2b1STao Ma 
1803b3d4c2b1STao Ma 	TP_PROTO(struct super_block *sb,
1804b3d4c2b1STao Ma 		 ext4_group_t group,
1805b3d4c2b1STao Ma 		 ext4_grpblk_t start,
1806b3d4c2b1STao Ma 		 ext4_grpblk_t len),
1807b3d4c2b1STao Ma 
1808b3d4c2b1STao Ma 	TP_ARGS(sb, group, start, len)
1809b3d4c2b1STao Ma );
1810b3d4c2b1STao Ma 
1811d8990240SAditya Kali TRACE_EVENT(ext4_ext_handle_uninitialized_extents,
1812b5645534SZheng Liu 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int flags,
1813d8990240SAditya Kali 		 unsigned int allocated, ext4_fsblk_t newblock),
1814d8990240SAditya Kali 
1815b5645534SZheng Liu 	TP_ARGS(inode, map, flags, allocated, newblock),
1816d8990240SAditya Kali 
1817d8990240SAditya Kali 	TP_STRUCT__entry(
1818d8990240SAditya Kali 		__field(	dev_t,		dev		)
1819210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
1820210c0526SAnatol Pomozov 		__field(	int,		flags		)
1821d8990240SAditya Kali 		__field(	ext4_lblk_t,	lblk		)
1822d8990240SAditya Kali 		__field(	ext4_fsblk_t,	pblk		)
1823d8990240SAditya Kali 		__field(	unsigned int,	len		)
1824d8990240SAditya Kali 		__field(	unsigned int,	allocated	)
1825d8990240SAditya Kali 		__field(	ext4_fsblk_t,	newblk		)
1826d8990240SAditya Kali 	),
1827d8990240SAditya Kali 
1828d8990240SAditya Kali 	TP_fast_assign(
1829d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
1830210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
1831b5645534SZheng Liu 		__entry->flags		= flags;
1832d8990240SAditya Kali 		__entry->lblk		= map->m_lblk;
1833d8990240SAditya Kali 		__entry->pblk		= map->m_pblk;
1834d8990240SAditya Kali 		__entry->len		= map->m_len;
1835d8990240SAditya Kali 		__entry->allocated	= allocated;
1836d8990240SAditya Kali 		__entry->newblk		= newblock;
1837d8990240SAditya Kali 	),
1838d8990240SAditya Kali 
183921ddd568STheodore Ts'o 	TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %s "
1840d8990240SAditya Kali 		  "allocated %d newblock %llu",
1841d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1842d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1843d8990240SAditya Kali 		  (unsigned) __entry->lblk, (unsigned long long) __entry->pblk,
184421ddd568STheodore Ts'o 		  __entry->len, show_map_flags(__entry->flags),
1845d8990240SAditya Kali 		  (unsigned int) __entry->allocated,
1846d8990240SAditya Kali 		  (unsigned long long) __entry->newblk)
1847d8990240SAditya Kali );
1848d8990240SAditya Kali 
1849d8990240SAditya Kali TRACE_EVENT(ext4_get_implied_cluster_alloc_exit,
1850d8990240SAditya Kali 	TP_PROTO(struct super_block *sb, struct ext4_map_blocks *map, int ret),
1851d8990240SAditya Kali 
1852d8990240SAditya Kali 	TP_ARGS(sb, map, ret),
1853d8990240SAditya Kali 
1854d8990240SAditya Kali 	TP_STRUCT__entry(
1855d8990240SAditya Kali 		__field(	dev_t,		dev	)
1856210c0526SAnatol Pomozov 		__field(	unsigned int,	flags	)
1857d8990240SAditya Kali 		__field(	ext4_lblk_t,	lblk	)
1858d8990240SAditya Kali 		__field(	ext4_fsblk_t,	pblk	)
1859d8990240SAditya Kali 		__field(	unsigned int,	len	)
1860d8990240SAditya Kali 		__field(	int,		ret	)
1861d8990240SAditya Kali 	),
1862d8990240SAditya Kali 
1863d8990240SAditya Kali 	TP_fast_assign(
1864d8990240SAditya Kali 		__entry->dev	= sb->s_dev;
1865210c0526SAnatol Pomozov 		__entry->flags	= map->m_flags;
1866d8990240SAditya Kali 		__entry->lblk	= map->m_lblk;
1867d8990240SAditya Kali 		__entry->pblk	= map->m_pblk;
1868d8990240SAditya Kali 		__entry->len	= map->m_len;
1869d8990240SAditya Kali 		__entry->ret	= ret;
1870d8990240SAditya Kali 	),
1871d8990240SAditya Kali 
187221ddd568STheodore Ts'o 	TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %s ret %d",
1873d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1874d8990240SAditya Kali 		  __entry->lblk, (unsigned long long) __entry->pblk,
187521ddd568STheodore Ts'o 		  __entry->len, show_mflags(__entry->flags), __entry->ret)
1876d8990240SAditya Kali );
1877d8990240SAditya Kali 
1878d8990240SAditya Kali TRACE_EVENT(ext4_ext_put_in_cache,
1879d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len,
1880d8990240SAditya Kali 		 ext4_fsblk_t start),
1881d8990240SAditya Kali 
1882d8990240SAditya Kali 	TP_ARGS(inode, lblk, len, start),
1883d8990240SAditya Kali 
1884d8990240SAditya Kali 	TP_STRUCT__entry(
1885d8990240SAditya Kali 		__field(	dev_t,		dev	)
1886210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
1887d8990240SAditya Kali 		__field(	ext4_lblk_t,	lblk	)
1888d8990240SAditya Kali 		__field(	unsigned int,	len	)
1889d8990240SAditya Kali 		__field(	ext4_fsblk_t,	start	)
1890d8990240SAditya Kali 	),
1891d8990240SAditya Kali 
1892d8990240SAditya Kali 	TP_fast_assign(
1893d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
1894210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
1895d8990240SAditya Kali 		__entry->lblk	= lblk;
1896d8990240SAditya Kali 		__entry->len	= len;
1897d8990240SAditya Kali 		__entry->start	= start;
1898d8990240SAditya Kali 	),
1899d8990240SAditya Kali 
1900d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu lblk %u len %u start %llu",
1901d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1902d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1903d8990240SAditya Kali 		  (unsigned) __entry->lblk,
1904d8990240SAditya Kali 		  __entry->len,
1905d8990240SAditya Kali 		  (unsigned long long) __entry->start)
1906d8990240SAditya Kali );
1907d8990240SAditya Kali 
1908d8990240SAditya Kali TRACE_EVENT(ext4_ext_in_cache,
1909d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, int ret),
1910d8990240SAditya Kali 
1911d8990240SAditya Kali 	TP_ARGS(inode, lblk, ret),
1912d8990240SAditya Kali 
1913d8990240SAditya Kali 	TP_STRUCT__entry(
1914d8990240SAditya Kali 		__field(	dev_t,		dev	)
1915210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
1916d8990240SAditya Kali 		__field(	ext4_lblk_t,	lblk	)
1917d8990240SAditya Kali 		__field(	int,		ret	)
1918d8990240SAditya Kali 	),
1919d8990240SAditya Kali 
1920d8990240SAditya Kali 	TP_fast_assign(
1921d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
1922210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
1923d8990240SAditya Kali 		__entry->lblk	= lblk;
1924d8990240SAditya Kali 		__entry->ret	= ret;
1925d8990240SAditya Kali 	),
1926d8990240SAditya Kali 
1927d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu lblk %u ret %d",
1928d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1929d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1930d8990240SAditya Kali 		  (unsigned) __entry->lblk,
1931d8990240SAditya Kali 		  __entry->ret)
1932d8990240SAditya Kali 
1933d8990240SAditya Kali );
1934d8990240SAditya Kali 
1935d8990240SAditya Kali TRACE_EVENT(ext4_find_delalloc_range,
1936d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t from, ext4_lblk_t to,
1937d8990240SAditya Kali 		int reverse, int found, ext4_lblk_t found_blk),
1938d8990240SAditya Kali 
1939d8990240SAditya Kali 	TP_ARGS(inode, from, to, reverse, found, found_blk),
1940d8990240SAditya Kali 
1941d8990240SAditya Kali 	TP_STRUCT__entry(
1942d8990240SAditya Kali 		__field(	dev_t,		dev		)
1943210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
1944d8990240SAditya Kali 		__field(	ext4_lblk_t,	from		)
1945d8990240SAditya Kali 		__field(	ext4_lblk_t,	to		)
1946d8990240SAditya Kali 		__field(	int,		reverse		)
1947d8990240SAditya Kali 		__field(	int,		found		)
1948d8990240SAditya Kali 		__field(	ext4_lblk_t,	found_blk	)
1949d8990240SAditya Kali 	),
1950d8990240SAditya Kali 
1951d8990240SAditya Kali 	TP_fast_assign(
1952d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
1953210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
1954d8990240SAditya Kali 		__entry->from		= from;
1955d8990240SAditya Kali 		__entry->to		= to;
1956d8990240SAditya Kali 		__entry->reverse	= reverse;
1957d8990240SAditya Kali 		__entry->found		= found;
1958d8990240SAditya Kali 		__entry->found_blk	= found_blk;
1959d8990240SAditya Kali 	),
1960d8990240SAditya Kali 
1961d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu from %u to %u reverse %d found %d "
1962d8990240SAditya Kali 		  "(blk = %u)",
1963d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1964d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1965d8990240SAditya Kali 		  (unsigned) __entry->from, (unsigned) __entry->to,
1966d8990240SAditya Kali 		  __entry->reverse, __entry->found,
1967d8990240SAditya Kali 		  (unsigned) __entry->found_blk)
1968d8990240SAditya Kali );
1969d8990240SAditya Kali 
1970d8990240SAditya Kali TRACE_EVENT(ext4_get_reserved_cluster_alloc,
1971d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len),
1972d8990240SAditya Kali 
1973d8990240SAditya Kali 	TP_ARGS(inode, lblk, len),
1974d8990240SAditya Kali 
1975d8990240SAditya Kali 	TP_STRUCT__entry(
1976d8990240SAditya Kali 		__field(	dev_t,		dev	)
1977210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
1978d8990240SAditya Kali 		__field(	ext4_lblk_t,	lblk	)
1979d8990240SAditya Kali 		__field(	unsigned int,	len	)
1980d8990240SAditya Kali 	),
1981d8990240SAditya Kali 
1982d8990240SAditya Kali 	TP_fast_assign(
1983d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
1984210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
1985d8990240SAditya Kali 		__entry->lblk	= lblk;
1986d8990240SAditya Kali 		__entry->len	= len;
1987d8990240SAditya Kali 	),
1988d8990240SAditya Kali 
1989d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu lblk %u len %u",
1990d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1991d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1992d8990240SAditya Kali 		  (unsigned) __entry->lblk,
1993d8990240SAditya Kali 		  __entry->len)
1994d8990240SAditya Kali );
1995d8990240SAditya Kali 
1996d8990240SAditya Kali TRACE_EVENT(ext4_ext_show_extent,
1997d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk,
1998d8990240SAditya Kali 		 unsigned short len),
1999d8990240SAditya Kali 
2000d8990240SAditya Kali 	TP_ARGS(inode, lblk, pblk, len),
2001d8990240SAditya Kali 
2002d8990240SAditya Kali 	TP_STRUCT__entry(
2003d8990240SAditya Kali 		__field(	dev_t,		dev	)
2004210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
2005d8990240SAditya Kali 		__field(	ext4_fsblk_t,	pblk	)
2006210c0526SAnatol Pomozov 		__field(	ext4_lblk_t,	lblk	)
2007d8990240SAditya Kali 		__field(	unsigned short,	len	)
2008d8990240SAditya Kali 	),
2009d8990240SAditya Kali 
2010d8990240SAditya Kali 	TP_fast_assign(
2011d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
2012210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
2013d8990240SAditya Kali 		__entry->pblk	= pblk;
2014210c0526SAnatol Pomozov 		__entry->lblk	= lblk;
2015d8990240SAditya Kali 		__entry->len	= len;
2016d8990240SAditya Kali 	),
2017d8990240SAditya Kali 
2018d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u",
2019d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2020d8990240SAditya Kali 		  (unsigned long) __entry->ino,
2021d8990240SAditya Kali 		  (unsigned) __entry->lblk,
2022d8990240SAditya Kali 		  (unsigned long long) __entry->pblk,
2023d8990240SAditya Kali 		  (unsigned short) __entry->len)
2024d8990240SAditya Kali );
2025d8990240SAditya Kali 
2026d8990240SAditya Kali TRACE_EVENT(ext4_remove_blocks,
2027d8990240SAditya Kali 	    TP_PROTO(struct inode *inode, struct ext4_extent *ex,
2028d8990240SAditya Kali 		ext4_lblk_t from, ext4_fsblk_t to,
2029d23142c6SLukas Czerner 		long long partial_cluster),
2030d8990240SAditya Kali 
2031d8990240SAditya Kali 	TP_ARGS(inode, ex, from, to, partial_cluster),
2032d8990240SAditya Kali 
2033d8990240SAditya Kali 	TP_STRUCT__entry(
2034d8990240SAditya Kali 		__field(	dev_t,		dev	)
2035210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
2036d8990240SAditya Kali 		__field(	ext4_lblk_t,	from	)
2037d8990240SAditya Kali 		__field(	ext4_lblk_t,	to	)
2038d23142c6SLukas Czerner 		__field(	long long,	partial	)
2039210c0526SAnatol Pomozov 		__field(	ext4_fsblk_t,	ee_pblk	)
2040210c0526SAnatol Pomozov 		__field(	ext4_lblk_t,	ee_lblk	)
2041210c0526SAnatol Pomozov 		__field(	unsigned short,	ee_len	)
2042d8990240SAditya Kali 	),
2043d8990240SAditya Kali 
2044d8990240SAditya Kali 	TP_fast_assign(
2045d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
2046210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
2047d8990240SAditya Kali 		__entry->from		= from;
2048d8990240SAditya Kali 		__entry->to		= to;
2049d8990240SAditya Kali 		__entry->partial	= partial_cluster;
2050210c0526SAnatol Pomozov 		__entry->ee_pblk	= ext4_ext_pblock(ex);
2051d6a77105STheodore Ts'o 		__entry->ee_lblk	= le32_to_cpu(ex->ee_block);
2052210c0526SAnatol Pomozov 		__entry->ee_len		= ext4_ext_get_actual_len(ex);
2053d8990240SAditya Kali 	),
2054d8990240SAditya Kali 
2055d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu extent [%u(%llu), %u]"
2056d23142c6SLukas Czerner 		  "from %u to %u partial_cluster %lld",
2057d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2058d8990240SAditya Kali 		  (unsigned long) __entry->ino,
2059d8990240SAditya Kali 		  (unsigned) __entry->ee_lblk,
2060d8990240SAditya Kali 		  (unsigned long long) __entry->ee_pblk,
2061d8990240SAditya Kali 		  (unsigned short) __entry->ee_len,
2062d8990240SAditya Kali 		  (unsigned) __entry->from,
2063d8990240SAditya Kali 		  (unsigned) __entry->to,
2064d23142c6SLukas Czerner 		  (long long) __entry->partial)
2065d8990240SAditya Kali );
2066d8990240SAditya Kali 
2067d8990240SAditya Kali TRACE_EVENT(ext4_ext_rm_leaf,
2068d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t start,
2069d23142c6SLukas Czerner 		 struct ext4_extent *ex,
2070d23142c6SLukas Czerner 		 long long partial_cluster),
2071d8990240SAditya Kali 
2072d8990240SAditya Kali 	TP_ARGS(inode, start, ex, partial_cluster),
2073d8990240SAditya Kali 
2074d8990240SAditya Kali 	TP_STRUCT__entry(
2075d8990240SAditya Kali 		__field(	dev_t,		dev	)
2076210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
2077d23142c6SLukas Czerner 		__field(	long long,	partial	)
2078d8990240SAditya Kali 		__field(	ext4_lblk_t,	start	)
2079d8990240SAditya Kali 		__field(	ext4_lblk_t,	ee_lblk	)
2080d8990240SAditya Kali 		__field(	ext4_fsblk_t,	ee_pblk	)
2081d8990240SAditya Kali 		__field(	short,		ee_len	)
2082d8990240SAditya Kali 	),
2083d8990240SAditya Kali 
2084d8990240SAditya Kali 	TP_fast_assign(
2085d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
2086210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
2087210c0526SAnatol Pomozov 		__entry->partial	= partial_cluster;
2088d8990240SAditya Kali 		__entry->start		= start;
2089d8990240SAditya Kali 		__entry->ee_lblk	= le32_to_cpu(ex->ee_block);
2090d8990240SAditya Kali 		__entry->ee_pblk	= ext4_ext_pblock(ex);
2091d8990240SAditya Kali 		__entry->ee_len		= ext4_ext_get_actual_len(ex);
2092d8990240SAditya Kali 	),
2093d8990240SAditya Kali 
2094d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu start_lblk %u last_extent [%u(%llu), %u]"
2095d23142c6SLukas Czerner 		  "partial_cluster %lld",
2096d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2097d8990240SAditya Kali 		  (unsigned long) __entry->ino,
2098d8990240SAditya Kali 		  (unsigned) __entry->start,
2099d8990240SAditya Kali 		  (unsigned) __entry->ee_lblk,
2100d8990240SAditya Kali 		  (unsigned long long) __entry->ee_pblk,
2101d8990240SAditya Kali 		  (unsigned short) __entry->ee_len,
2102d23142c6SLukas Czerner 		  (long long) __entry->partial)
2103d8990240SAditya Kali );
2104d8990240SAditya Kali 
2105d8990240SAditya Kali TRACE_EVENT(ext4_ext_rm_idx,
2106d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_fsblk_t pblk),
2107d8990240SAditya Kali 
2108d8990240SAditya Kali 	TP_ARGS(inode, pblk),
2109d8990240SAditya Kali 
2110d8990240SAditya Kali 	TP_STRUCT__entry(
2111d8990240SAditya Kali 		__field(	dev_t,		dev	)
2112210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
2113d8990240SAditya Kali 		__field(	ext4_fsblk_t,	pblk	)
2114d8990240SAditya Kali 	),
2115d8990240SAditya Kali 
2116d8990240SAditya Kali 	TP_fast_assign(
2117d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
2118210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
2119d8990240SAditya Kali 		__entry->pblk	= pblk;
2120d8990240SAditya Kali 	),
2121d8990240SAditya Kali 
2122d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu index_pblk %llu",
2123d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2124d8990240SAditya Kali 		  (unsigned long) __entry->ino,
2125d8990240SAditya Kali 		  (unsigned long long) __entry->pblk)
2126d8990240SAditya Kali );
2127d8990240SAditya Kali 
2128d8990240SAditya Kali TRACE_EVENT(ext4_ext_remove_space,
212961801325SLukas Czerner 	TP_PROTO(struct inode *inode, ext4_lblk_t start,
213061801325SLukas Czerner 		 ext4_lblk_t end, int depth),
2131d8990240SAditya Kali 
213261801325SLukas Czerner 	TP_ARGS(inode, start, end, depth),
2133d8990240SAditya Kali 
2134d8990240SAditya Kali 	TP_STRUCT__entry(
2135d8990240SAditya Kali 		__field(	dev_t,		dev	)
2136210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
2137d8990240SAditya Kali 		__field(	ext4_lblk_t,	start	)
213861801325SLukas Czerner 		__field(	ext4_lblk_t,	end	)
2139d8990240SAditya Kali 		__field(	int,		depth	)
2140d8990240SAditya Kali 	),
2141d8990240SAditya Kali 
2142d8990240SAditya Kali 	TP_fast_assign(
2143d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
2144210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
2145d8990240SAditya Kali 		__entry->start	= start;
214661801325SLukas Czerner 		__entry->end	= end;
2147d8990240SAditya Kali 		__entry->depth	= depth;
2148d8990240SAditya Kali 	),
2149d8990240SAditya Kali 
215061801325SLukas Czerner 	TP_printk("dev %d,%d ino %lu since %u end %u depth %d",
2151d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2152d8990240SAditya Kali 		  (unsigned long) __entry->ino,
2153d8990240SAditya Kali 		  (unsigned) __entry->start,
215461801325SLukas Czerner 		  (unsigned) __entry->end,
2155d8990240SAditya Kali 		  __entry->depth)
2156d8990240SAditya Kali );
2157d8990240SAditya Kali 
2158d8990240SAditya Kali TRACE_EVENT(ext4_ext_remove_space_done,
215961801325SLukas Czerner 	TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end,
2160d23142c6SLukas Czerner 		 int depth, long long partial, __le16 eh_entries),
2161d8990240SAditya Kali 
216261801325SLukas Czerner 	TP_ARGS(inode, start, end, depth, partial, eh_entries),
2163d8990240SAditya Kali 
2164d8990240SAditya Kali 	TP_STRUCT__entry(
2165d8990240SAditya Kali 		__field(	dev_t,		dev		)
2166210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
2167d8990240SAditya Kali 		__field(	ext4_lblk_t,	start		)
216861801325SLukas Czerner 		__field(	ext4_lblk_t,	end		)
2169d8990240SAditya Kali 		__field(	int,		depth		)
2170d23142c6SLukas Czerner 		__field(	long long,	partial		)
2171d8990240SAditya Kali 		__field(	unsigned short,	eh_entries	)
2172d8990240SAditya Kali 	),
2173d8990240SAditya Kali 
2174d8990240SAditya Kali 	TP_fast_assign(
2175d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
2176210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
2177d8990240SAditya Kali 		__entry->start		= start;
217861801325SLukas Czerner 		__entry->end		= end;
2179d8990240SAditya Kali 		__entry->depth		= depth;
2180d8990240SAditya Kali 		__entry->partial	= partial;
2181d6a77105STheodore Ts'o 		__entry->eh_entries	= le16_to_cpu(eh_entries);
2182d8990240SAditya Kali 	),
2183d8990240SAditya Kali 
2184d23142c6SLukas Czerner 	TP_printk("dev %d,%d ino %lu since %u end %u depth %d partial %lld "
2185d8990240SAditya Kali 		  "remaining_entries %u",
2186d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2187d8990240SAditya Kali 		  (unsigned long) __entry->ino,
2188d8990240SAditya Kali 		  (unsigned) __entry->start,
218961801325SLukas Czerner 		  (unsigned) __entry->end,
2190d8990240SAditya Kali 		  __entry->depth,
2191d23142c6SLukas Czerner 		  (long long) __entry->partial,
2192d8990240SAditya Kali 		  (unsigned short) __entry->eh_entries)
2193d8990240SAditya Kali );
2194d8990240SAditya Kali 
2195992e9fddSZheng Liu TRACE_EVENT(ext4_es_insert_extent,
2196fdc0212eSZheng Liu 	TP_PROTO(struct inode *inode, struct extent_status *es),
2197992e9fddSZheng Liu 
2198fdc0212eSZheng Liu 	TP_ARGS(inode, es),
2199992e9fddSZheng Liu 
2200992e9fddSZheng Liu 	TP_STRUCT__entry(
2201992e9fddSZheng Liu 		__field(	dev_t,		dev		)
2202992e9fddSZheng Liu 		__field(	ino_t,		ino		)
2203fdc0212eSZheng Liu 		__field(	ext4_lblk_t,	lblk		)
2204fdc0212eSZheng Liu 		__field(	ext4_lblk_t,	len		)
2205fdc0212eSZheng Liu 		__field(	ext4_fsblk_t,	pblk		)
220621ddd568STheodore Ts'o 		__field(	char, status	)
2207992e9fddSZheng Liu 	),
2208992e9fddSZheng Liu 
2209992e9fddSZheng Liu 	TP_fast_assign(
2210992e9fddSZheng Liu 		__entry->dev	= inode->i_sb->s_dev;
2211992e9fddSZheng Liu 		__entry->ino	= inode->i_ino;
2212fdc0212eSZheng Liu 		__entry->lblk	= es->es_lblk;
2213fdc0212eSZheng Liu 		__entry->len	= es->es_len;
2214fdc0212eSZheng Liu 		__entry->pblk	= ext4_es_pblock(es);
221521ddd568STheodore Ts'o 		__entry->status	= ext4_es_status(es) >> 60;
2216992e9fddSZheng Liu 	),
2217992e9fddSZheng Liu 
221821ddd568STheodore Ts'o 	TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
2219992e9fddSZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2220992e9fddSZheng Liu 		  (unsigned long) __entry->ino,
2221fdc0212eSZheng Liu 		  __entry->lblk, __entry->len,
222221ddd568STheodore Ts'o 		  __entry->pblk, show_extent_status(__entry->status))
2223992e9fddSZheng Liu );
2224992e9fddSZheng Liu 
2225992e9fddSZheng Liu TRACE_EVENT(ext4_es_remove_extent,
222606b0c886SZheng Liu 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_lblk_t len),
2227992e9fddSZheng Liu 
222806b0c886SZheng Liu 	TP_ARGS(inode, lblk, len),
2229992e9fddSZheng Liu 
2230992e9fddSZheng Liu 	TP_STRUCT__entry(
2231992e9fddSZheng Liu 		__field(	dev_t,	dev			)
2232992e9fddSZheng Liu 		__field(	ino_t,	ino			)
223306b0c886SZheng Liu 		__field(	loff_t,	lblk			)
2234992e9fddSZheng Liu 		__field(	loff_t,	len			)
2235992e9fddSZheng Liu 	),
2236992e9fddSZheng Liu 
2237992e9fddSZheng Liu 	TP_fast_assign(
2238992e9fddSZheng Liu 		__entry->dev	= inode->i_sb->s_dev;
2239992e9fddSZheng Liu 		__entry->ino	= inode->i_ino;
224006b0c886SZheng Liu 		__entry->lblk	= lblk;
2241992e9fddSZheng Liu 		__entry->len	= len;
2242992e9fddSZheng Liu 	),
2243992e9fddSZheng Liu 
2244992e9fddSZheng Liu 	TP_printk("dev %d,%d ino %lu es [%lld/%lld)",
2245992e9fddSZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2246992e9fddSZheng Liu 		  (unsigned long) __entry->ino,
224706b0c886SZheng Liu 		  __entry->lblk, __entry->len)
2248992e9fddSZheng Liu );
2249992e9fddSZheng Liu 
2250e30b5dcaSYan, Zheng TRACE_EVENT(ext4_es_find_delayed_extent_range_enter,
225106b0c886SZheng Liu 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
2252992e9fddSZheng Liu 
225306b0c886SZheng Liu 	TP_ARGS(inode, lblk),
2254992e9fddSZheng Liu 
2255992e9fddSZheng Liu 	TP_STRUCT__entry(
2256992e9fddSZheng Liu 		__field(	dev_t,		dev		)
2257992e9fddSZheng Liu 		__field(	ino_t,		ino		)
225806b0c886SZheng Liu 		__field(	ext4_lblk_t,	lblk		)
2259992e9fddSZheng Liu 	),
2260992e9fddSZheng Liu 
2261992e9fddSZheng Liu 	TP_fast_assign(
2262992e9fddSZheng Liu 		__entry->dev	= inode->i_sb->s_dev;
2263992e9fddSZheng Liu 		__entry->ino	= inode->i_ino;
226406b0c886SZheng Liu 		__entry->lblk	= lblk;
2265992e9fddSZheng Liu 	),
2266992e9fddSZheng Liu 
226706b0c886SZheng Liu 	TP_printk("dev %d,%d ino %lu lblk %u",
2268992e9fddSZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
226906b0c886SZheng Liu 		  (unsigned long) __entry->ino, __entry->lblk)
2270992e9fddSZheng Liu );
2271992e9fddSZheng Liu 
2272e30b5dcaSYan, Zheng TRACE_EVENT(ext4_es_find_delayed_extent_range_exit,
2273be401363SZheng Liu 	TP_PROTO(struct inode *inode, struct extent_status *es),
2274992e9fddSZheng Liu 
2275be401363SZheng Liu 	TP_ARGS(inode, es),
2276992e9fddSZheng Liu 
2277992e9fddSZheng Liu 	TP_STRUCT__entry(
2278992e9fddSZheng Liu 		__field(	dev_t,		dev		)
2279992e9fddSZheng Liu 		__field(	ino_t,		ino		)
228006b0c886SZheng Liu 		__field(	ext4_lblk_t,	lblk		)
2281992e9fddSZheng Liu 		__field(	ext4_lblk_t,	len		)
2282fdc0212eSZheng Liu 		__field(	ext4_fsblk_t,	pblk		)
228321ddd568STheodore Ts'o 		__field(	char, status	)
2284992e9fddSZheng Liu 	),
2285992e9fddSZheng Liu 
2286992e9fddSZheng Liu 	TP_fast_assign(
2287992e9fddSZheng Liu 		__entry->dev	= inode->i_sb->s_dev;
2288992e9fddSZheng Liu 		__entry->ino	= inode->i_ino;
228906b0c886SZheng Liu 		__entry->lblk	= es->es_lblk;
229006b0c886SZheng Liu 		__entry->len	= es->es_len;
2291fdc0212eSZheng Liu 		__entry->pblk	= ext4_es_pblock(es);
229221ddd568STheodore Ts'o 		__entry->status	= ext4_es_status(es) >> 60;
2293992e9fddSZheng Liu 	),
2294992e9fddSZheng Liu 
229521ddd568STheodore Ts'o 	TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
2296992e9fddSZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2297992e9fddSZheng Liu 		  (unsigned long) __entry->ino,
2298fdc0212eSZheng Liu 		  __entry->lblk, __entry->len,
229921ddd568STheodore Ts'o 		  __entry->pblk, show_extent_status(__entry->status))
2300992e9fddSZheng Liu );
2301992e9fddSZheng Liu 
2302d100eef2SZheng Liu TRACE_EVENT(ext4_es_lookup_extent_enter,
2303d100eef2SZheng Liu 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
2304d100eef2SZheng Liu 
2305d100eef2SZheng Liu 	TP_ARGS(inode, lblk),
2306d100eef2SZheng Liu 
2307d100eef2SZheng Liu 	TP_STRUCT__entry(
2308d100eef2SZheng Liu 		__field(	dev_t,		dev		)
2309d100eef2SZheng Liu 		__field(	ino_t,		ino		)
2310d100eef2SZheng Liu 		__field(	ext4_lblk_t,	lblk		)
2311d100eef2SZheng Liu 	),
2312d100eef2SZheng Liu 
2313d100eef2SZheng Liu 	TP_fast_assign(
2314d100eef2SZheng Liu 		__entry->dev	= inode->i_sb->s_dev;
2315d100eef2SZheng Liu 		__entry->ino	= inode->i_ino;
2316d100eef2SZheng Liu 		__entry->lblk	= lblk;
2317d100eef2SZheng Liu 	),
2318d100eef2SZheng Liu 
2319d100eef2SZheng Liu 	TP_printk("dev %d,%d ino %lu lblk %u",
2320d100eef2SZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2321d100eef2SZheng Liu 		  (unsigned long) __entry->ino, __entry->lblk)
2322d100eef2SZheng Liu );
2323d100eef2SZheng Liu 
2324d100eef2SZheng Liu TRACE_EVENT(ext4_es_lookup_extent_exit,
2325d100eef2SZheng Liu 	TP_PROTO(struct inode *inode, struct extent_status *es,
2326d100eef2SZheng Liu 		 int found),
2327d100eef2SZheng Liu 
2328d100eef2SZheng Liu 	TP_ARGS(inode, es, found),
2329d100eef2SZheng Liu 
2330d100eef2SZheng Liu 	TP_STRUCT__entry(
2331d100eef2SZheng Liu 		__field(	dev_t,		dev		)
2332d100eef2SZheng Liu 		__field(	ino_t,		ino		)
2333d100eef2SZheng Liu 		__field(	ext4_lblk_t,	lblk		)
2334d100eef2SZheng Liu 		__field(	ext4_lblk_t,	len		)
2335d100eef2SZheng Liu 		__field(	ext4_fsblk_t,	pblk		)
233621ddd568STheodore Ts'o 		__field(	char,		status		)
2337d100eef2SZheng Liu 		__field(	int,		found		)
2338d100eef2SZheng Liu 	),
2339d100eef2SZheng Liu 
2340d100eef2SZheng Liu 	TP_fast_assign(
2341d100eef2SZheng Liu 		__entry->dev	= inode->i_sb->s_dev;
2342d100eef2SZheng Liu 		__entry->ino	= inode->i_ino;
2343d100eef2SZheng Liu 		__entry->lblk	= es->es_lblk;
2344d100eef2SZheng Liu 		__entry->len	= es->es_len;
2345d100eef2SZheng Liu 		__entry->pblk	= ext4_es_pblock(es);
234621ddd568STheodore Ts'o 		__entry->status	= ext4_es_status(es) >> 60;
2347d100eef2SZheng Liu 		__entry->found	= found;
2348d100eef2SZheng Liu 	),
2349d100eef2SZheng Liu 
235021ddd568STheodore Ts'o 	TP_printk("dev %d,%d ino %lu found %d [%u/%u) %llu %s",
2351d100eef2SZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2352d100eef2SZheng Liu 		  (unsigned long) __entry->ino, __entry->found,
2353d100eef2SZheng Liu 		  __entry->lblk, __entry->len,
2354d100eef2SZheng Liu 		  __entry->found ? __entry->pblk : 0,
235521ddd568STheodore Ts'o 		  show_extent_status(__entry->found ? __entry->status : 0))
2356d100eef2SZheng Liu );
2357d100eef2SZheng Liu 
235874cd15cdSZheng Liu TRACE_EVENT(ext4_es_shrink_enter,
235924630774STheodore Ts'o 	TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
236074cd15cdSZheng Liu 
236124630774STheodore Ts'o 	TP_ARGS(sb, nr_to_scan, cache_cnt),
236274cd15cdSZheng Liu 
236374cd15cdSZheng Liu 	TP_STRUCT__entry(
236474cd15cdSZheng Liu 		__field(	dev_t,	dev			)
236574cd15cdSZheng Liu 		__field(	int,	nr_to_scan		)
236624630774STheodore Ts'o 		__field(	int,	cache_cnt		)
236774cd15cdSZheng Liu 	),
236874cd15cdSZheng Liu 
236974cd15cdSZheng Liu 	TP_fast_assign(
237074cd15cdSZheng Liu 		__entry->dev		= sb->s_dev;
237174cd15cdSZheng Liu 		__entry->nr_to_scan	= nr_to_scan;
237224630774STheodore Ts'o 		__entry->cache_cnt	= cache_cnt;
237374cd15cdSZheng Liu 	),
237474cd15cdSZheng Liu 
237524630774STheodore Ts'o 	TP_printk("dev %d,%d nr_to_scan %d cache_cnt %d",
237674cd15cdSZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
237724630774STheodore Ts'o 		  __entry->nr_to_scan, __entry->cache_cnt)
237874cd15cdSZheng Liu );
237974cd15cdSZheng Liu 
238074cd15cdSZheng Liu TRACE_EVENT(ext4_es_shrink_exit,
238124630774STheodore Ts'o 	TP_PROTO(struct super_block *sb, int shrunk_nr, int cache_cnt),
238274cd15cdSZheng Liu 
238324630774STheodore Ts'o 	TP_ARGS(sb, shrunk_nr, cache_cnt),
238474cd15cdSZheng Liu 
238574cd15cdSZheng Liu 	TP_STRUCT__entry(
238674cd15cdSZheng Liu 		__field(	dev_t,	dev			)
238774cd15cdSZheng Liu 		__field(	int,	shrunk_nr		)
238824630774STheodore Ts'o 		__field(	int,	cache_cnt		)
238974cd15cdSZheng Liu 	),
239074cd15cdSZheng Liu 
239174cd15cdSZheng Liu 	TP_fast_assign(
239274cd15cdSZheng Liu 		__entry->dev		= sb->s_dev;
239374cd15cdSZheng Liu 		__entry->shrunk_nr	= shrunk_nr;
239424630774STheodore Ts'o 		__entry->cache_cnt	= cache_cnt;
239574cd15cdSZheng Liu 	),
239674cd15cdSZheng Liu 
239724630774STheodore Ts'o 	TP_printk("dev %d,%d shrunk_nr %d cache_cnt %d",
239874cd15cdSZheng Liu 		  MAJOR(__entry->dev), MINOR(__entry->dev),
239924630774STheodore Ts'o 		  __entry->shrunk_nr, __entry->cache_cnt)
240074cd15cdSZheng Liu );
240174cd15cdSZheng Liu 
24029bffad1eSTheodore Ts'o #endif /* _TRACE_EXT4_H */
24039bffad1eSTheodore Ts'o 
24049bffad1eSTheodore Ts'o /* This part must be outside protection */
24059bffad1eSTheodore Ts'o #include <trace/define_trace.h>
2406