xref: /openbmc/linux/include/trace/events/ext4.h (revision 19b303d8)
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;
18fb40ba0dSTheodore Ts'o 
19fb40ba0dSTheodore Ts'o #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
203661d286STheodore Ts'o 
219bffad1eSTheodore Ts'o TRACE_EVENT(ext4_free_inode,
229bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode),
239bffad1eSTheodore Ts'o 
249bffad1eSTheodore Ts'o 	TP_ARGS(inode),
259bffad1eSTheodore Ts'o 
269bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
270562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
289bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
299bffad1eSTheodore Ts'o 		__field(	uid_t,	uid			)
309bffad1eSTheodore Ts'o 		__field(	gid_t,	gid			)
31a9c667f8SLukas Czerner 		__field(	__u64, blocks			)
32210c0526SAnatol Pomozov 		__field(	__u16, mode			)
339bffad1eSTheodore Ts'o 	),
349bffad1eSTheodore Ts'o 
359bffad1eSTheodore Ts'o 	TP_fast_assign(
360562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
379bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
3808cefc7aSEric W. Biederman 		__entry->uid	= i_uid_read(inode);
3908cefc7aSEric W. Biederman 		__entry->gid	= i_gid_read(inode);
409bffad1eSTheodore Ts'o 		__entry->blocks	= inode->i_blocks;
41210c0526SAnatol Pomozov 		__entry->mode	= inode->i_mode;
429bffad1eSTheodore Ts'o 	),
439bffad1eSTheodore Ts'o 
44a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu mode 0%o uid %u gid %u blocks %llu",
450562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
46a9c667f8SLukas Czerner 		  (unsigned long) __entry->ino, __entry->mode,
47a9c667f8SLukas Czerner 		  __entry->uid, __entry->gid, __entry->blocks)
489bffad1eSTheodore Ts'o );
499bffad1eSTheodore Ts'o 
509bffad1eSTheodore Ts'o TRACE_EVENT(ext4_request_inode,
519bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *dir, int mode),
529bffad1eSTheodore Ts'o 
539bffad1eSTheodore Ts'o 	TP_ARGS(dir, mode),
549bffad1eSTheodore Ts'o 
559bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
560562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
579bffad1eSTheodore Ts'o 		__field(	ino_t,	dir			)
5859be8e72STheodore Ts'o 		__field(	__u16, mode			)
599bffad1eSTheodore Ts'o 	),
609bffad1eSTheodore Ts'o 
619bffad1eSTheodore Ts'o 	TP_fast_assign(
620562e0baSJiaying Zhang 		__entry->dev	= dir->i_sb->s_dev;
639bffad1eSTheodore Ts'o 		__entry->dir	= dir->i_ino;
649bffad1eSTheodore Ts'o 		__entry->mode	= mode;
659bffad1eSTheodore Ts'o 	),
669bffad1eSTheodore Ts'o 
67a269029dSTheodore Ts'o 	TP_printk("dev %d,%d dir %lu mode 0%o",
680562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
69a269029dSTheodore Ts'o 		  (unsigned long) __entry->dir, __entry->mode)
709bffad1eSTheodore Ts'o );
719bffad1eSTheodore Ts'o 
729bffad1eSTheodore Ts'o TRACE_EVENT(ext4_allocate_inode,
739bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, struct inode *dir, int mode),
749bffad1eSTheodore Ts'o 
759bffad1eSTheodore Ts'o 	TP_ARGS(inode, dir, mode),
769bffad1eSTheodore Ts'o 
779bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
780562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
799bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
809bffad1eSTheodore Ts'o 		__field(	ino_t,	dir			)
8159be8e72STheodore Ts'o 		__field(	__u16,	mode			)
829bffad1eSTheodore Ts'o 	),
839bffad1eSTheodore Ts'o 
849bffad1eSTheodore Ts'o 	TP_fast_assign(
850562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
869bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
879bffad1eSTheodore Ts'o 		__entry->dir	= dir->i_ino;
889bffad1eSTheodore Ts'o 		__entry->mode	= mode;
899bffad1eSTheodore Ts'o 	),
909bffad1eSTheodore Ts'o 
91a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu dir %lu mode 0%o",
920562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
93a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
94a3710fd1STheodore Ts'o 		  (unsigned long) __entry->dir, __entry->mode)
959bffad1eSTheodore Ts'o );
969bffad1eSTheodore Ts'o 
977ff9c073STheodore Ts'o TRACE_EVENT(ext4_evict_inode,
987ff9c073STheodore Ts'o 	TP_PROTO(struct inode *inode),
997ff9c073STheodore Ts'o 
1007ff9c073STheodore Ts'o 	TP_ARGS(inode),
1017ff9c073STheodore Ts'o 
1027ff9c073STheodore Ts'o 	TP_STRUCT__entry(
1030562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1047ff9c073STheodore Ts'o 		__field(	ino_t,	ino			)
1057ff9c073STheodore Ts'o 		__field(	int,	nlink			)
1067ff9c073STheodore Ts'o 	),
1077ff9c073STheodore Ts'o 
1087ff9c073STheodore Ts'o 	TP_fast_assign(
1090562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1107ff9c073STheodore Ts'o 		__entry->ino	= inode->i_ino;
1117ff9c073STheodore Ts'o 		__entry->nlink	= inode->i_nlink;
1127ff9c073STheodore Ts'o 	),
1137ff9c073STheodore Ts'o 
1147ff9c073STheodore Ts'o 	TP_printk("dev %d,%d ino %lu nlink %d",
1150562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1167ff9c073STheodore Ts'o 		  (unsigned long) __entry->ino, __entry->nlink)
1177ff9c073STheodore Ts'o );
1187ff9c073STheodore Ts'o 
1197ff9c073STheodore Ts'o TRACE_EVENT(ext4_drop_inode,
1207ff9c073STheodore Ts'o 	TP_PROTO(struct inode *inode, int drop),
1217ff9c073STheodore Ts'o 
1227ff9c073STheodore Ts'o 	TP_ARGS(inode, drop),
1237ff9c073STheodore Ts'o 
1247ff9c073STheodore Ts'o 	TP_STRUCT__entry(
1250562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1267ff9c073STheodore Ts'o 		__field(	ino_t,	ino			)
1277ff9c073STheodore Ts'o 		__field(	int,	drop			)
1287ff9c073STheodore Ts'o 	),
1297ff9c073STheodore Ts'o 
1307ff9c073STheodore Ts'o 	TP_fast_assign(
1310562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1327ff9c073STheodore Ts'o 		__entry->ino	= inode->i_ino;
1337ff9c073STheodore Ts'o 		__entry->drop	= drop;
1347ff9c073STheodore Ts'o 	),
1357ff9c073STheodore Ts'o 
1367ff9c073STheodore Ts'o 	TP_printk("dev %d,%d ino %lu drop %d",
1370562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1387ff9c073STheodore Ts'o 		  (unsigned long) __entry->ino, __entry->drop)
1397ff9c073STheodore Ts'o );
1407ff9c073STheodore Ts'o 
1417ff9c073STheodore Ts'o TRACE_EVENT(ext4_mark_inode_dirty,
1427ff9c073STheodore Ts'o 	TP_PROTO(struct inode *inode, unsigned long IP),
1437ff9c073STheodore Ts'o 
1447ff9c073STheodore Ts'o 	TP_ARGS(inode, IP),
1457ff9c073STheodore Ts'o 
1467ff9c073STheodore Ts'o 	TP_STRUCT__entry(
1470562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1487ff9c073STheodore Ts'o 		__field(	ino_t,	ino			)
1497ff9c073STheodore Ts'o 		__field(unsigned long,	ip			)
1507ff9c073STheodore Ts'o 	),
1517ff9c073STheodore Ts'o 
1527ff9c073STheodore Ts'o 	TP_fast_assign(
1530562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1547ff9c073STheodore Ts'o 		__entry->ino	= inode->i_ino;
1557ff9c073STheodore Ts'o 		__entry->ip	= IP;
1567ff9c073STheodore Ts'o 	),
1577ff9c073STheodore Ts'o 
1587ff9c073STheodore Ts'o 	TP_printk("dev %d,%d ino %lu caller %pF",
1590562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1607ff9c073STheodore Ts'o 		  (unsigned long) __entry->ino, (void *)__entry->ip)
1617ff9c073STheodore Ts'o );
1627ff9c073STheodore Ts'o 
1637ff9c073STheodore Ts'o TRACE_EVENT(ext4_begin_ordered_truncate,
1647ff9c073STheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t new_size),
1657ff9c073STheodore Ts'o 
1667ff9c073STheodore Ts'o 	TP_ARGS(inode, new_size),
1677ff9c073STheodore Ts'o 
1687ff9c073STheodore Ts'o 	TP_STRUCT__entry(
1690562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1707ff9c073STheodore Ts'o 		__field(	ino_t,	ino			)
1717ff9c073STheodore Ts'o 		__field(	loff_t,	new_size		)
1727ff9c073STheodore Ts'o 	),
1737ff9c073STheodore Ts'o 
1747ff9c073STheodore Ts'o 	TP_fast_assign(
1750562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
1767ff9c073STheodore Ts'o 		__entry->ino		= inode->i_ino;
1777ff9c073STheodore Ts'o 		__entry->new_size	= new_size;
1787ff9c073STheodore Ts'o 	),
1797ff9c073STheodore Ts'o 
1807ff9c073STheodore Ts'o 	TP_printk("dev %d,%d ino %lu new_size %lld",
1810562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1827ff9c073STheodore Ts'o 		  (unsigned long) __entry->ino,
183a9c667f8SLukas Czerner 		  __entry->new_size)
1847ff9c073STheodore Ts'o );
1857ff9c073STheodore Ts'o 
186b5eb34c3SLi Zefan DECLARE_EVENT_CLASS(ext4__write_begin,
1879bffad1eSTheodore Ts'o 
1889bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
1899bffad1eSTheodore Ts'o 		 unsigned int flags),
1909bffad1eSTheodore Ts'o 
1919bffad1eSTheodore Ts'o 	TP_ARGS(inode, pos, len, flags),
1929bffad1eSTheodore Ts'o 
1939bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
1940562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1959bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
1969bffad1eSTheodore Ts'o 		__field(	loff_t,	pos			)
1979bffad1eSTheodore Ts'o 		__field(	unsigned int, len		)
1989bffad1eSTheodore Ts'o 		__field(	unsigned int, flags		)
1999bffad1eSTheodore Ts'o 	),
2009bffad1eSTheodore Ts'o 
2019bffad1eSTheodore Ts'o 	TP_fast_assign(
2020562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
2039bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
2049bffad1eSTheodore Ts'o 		__entry->pos	= pos;
2059bffad1eSTheodore Ts'o 		__entry->len	= len;
2069bffad1eSTheodore Ts'o 		__entry->flags	= flags;
2079bffad1eSTheodore Ts'o 	),
2089bffad1eSTheodore Ts'o 
209a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu pos %lld len %u flags %u",
2100562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
211a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
212a3710fd1STheodore Ts'o 		  __entry->pos, __entry->len, __entry->flags)
2139bffad1eSTheodore Ts'o );
2149bffad1eSTheodore Ts'o 
215b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_begin, ext4_write_begin,
216b5eb34c3SLi Zefan 
217b5eb34c3SLi Zefan 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
218b5eb34c3SLi Zefan 		 unsigned int flags),
219b5eb34c3SLi Zefan 
220b5eb34c3SLi Zefan 	TP_ARGS(inode, pos, len, flags)
221b5eb34c3SLi Zefan );
222b5eb34c3SLi Zefan 
223b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_begin, ext4_da_write_begin,
224b5eb34c3SLi Zefan 
225b5eb34c3SLi Zefan 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
226b5eb34c3SLi Zefan 		 unsigned int flags),
227b5eb34c3SLi Zefan 
228b5eb34c3SLi Zefan 	TP_ARGS(inode, pos, len, flags)
229b5eb34c3SLi Zefan );
230b5eb34c3SLi Zefan 
231b5eb34c3SLi Zefan DECLARE_EVENT_CLASS(ext4__write_end,
2329bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
2339bffad1eSTheodore Ts'o 			unsigned int copied),
2349bffad1eSTheodore Ts'o 
2359bffad1eSTheodore Ts'o 	TP_ARGS(inode, pos, len, copied),
2369bffad1eSTheodore Ts'o 
2379bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
2380562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
2399bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
2409bffad1eSTheodore Ts'o 		__field(	loff_t,	pos			)
2419bffad1eSTheodore Ts'o 		__field(	unsigned int, len		)
2429bffad1eSTheodore Ts'o 		__field(	unsigned int, copied		)
2439bffad1eSTheodore Ts'o 	),
2449bffad1eSTheodore Ts'o 
2459bffad1eSTheodore Ts'o 	TP_fast_assign(
2460562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
2479bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
2489bffad1eSTheodore Ts'o 		__entry->pos	= pos;
2499bffad1eSTheodore Ts'o 		__entry->len	= len;
2509bffad1eSTheodore Ts'o 		__entry->copied	= copied;
2519bffad1eSTheodore Ts'o 	),
2529bffad1eSTheodore Ts'o 
253a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu pos %lld len %u copied %u",
2540562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2550562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
2560562e0baSJiaying Zhang 		  __entry->pos, __entry->len, __entry->copied)
2579bffad1eSTheodore Ts'o );
2589bffad1eSTheodore Ts'o 
259b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_end, ext4_ordered_write_end,
260b5eb34c3SLi Zefan 
2619bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
2629bffad1eSTheodore Ts'o 		 unsigned int copied),
2639bffad1eSTheodore Ts'o 
264b5eb34c3SLi Zefan 	TP_ARGS(inode, pos, len, copied)
2659bffad1eSTheodore Ts'o );
2669bffad1eSTheodore Ts'o 
267b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_end, ext4_writeback_write_end,
268b5eb34c3SLi Zefan 
2699bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
2709bffad1eSTheodore Ts'o 		 unsigned int copied),
2719bffad1eSTheodore Ts'o 
272b5eb34c3SLi Zefan 	TP_ARGS(inode, pos, len, copied)
273b5eb34c3SLi Zefan );
2749bffad1eSTheodore Ts'o 
275b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_end, ext4_journalled_write_end,
2769bffad1eSTheodore Ts'o 
277b5eb34c3SLi Zefan 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
278b5eb34c3SLi Zefan 		 unsigned int copied),
279b5eb34c3SLi Zefan 
280b5eb34c3SLi Zefan 	TP_ARGS(inode, pos, len, copied)
281b5eb34c3SLi Zefan );
282b5eb34c3SLi Zefan 
283b5eb34c3SLi Zefan DEFINE_EVENT(ext4__write_end, ext4_da_write_end,
284b5eb34c3SLi Zefan 
285b5eb34c3SLi Zefan 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
286b5eb34c3SLi Zefan 		 unsigned int copied),
287b5eb34c3SLi Zefan 
288b5eb34c3SLi Zefan 	TP_ARGS(inode, pos, len, copied)
2899bffad1eSTheodore Ts'o );
2909bffad1eSTheodore Ts'o 
2919bffad1eSTheodore Ts'o TRACE_EVENT(ext4_da_writepages,
2929bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, struct writeback_control *wbc),
2939bffad1eSTheodore Ts'o 
2949bffad1eSTheodore Ts'o 	TP_ARGS(inode, wbc),
2959bffad1eSTheodore Ts'o 
2969bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
2970562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
2989bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
2999bffad1eSTheodore Ts'o 		__field(	long,	nr_to_write		)
3009bffad1eSTheodore Ts'o 		__field(	long,	pages_skipped		)
3019bffad1eSTheodore Ts'o 		__field(	loff_t,	range_start		)
3029bffad1eSTheodore Ts'o 		__field(	loff_t,	range_end		)
303210c0526SAnatol Pomozov 		__field(       pgoff_t,	writeback_index		)
3040562e0baSJiaying Zhang 		__field(	int,	sync_mode		)
3059bffad1eSTheodore Ts'o 		__field(	char,	for_kupdate		)
3069bffad1eSTheodore Ts'o 		__field(	char,	range_cyclic		)
3079bffad1eSTheodore Ts'o 	),
3089bffad1eSTheodore Ts'o 
3099bffad1eSTheodore Ts'o 	TP_fast_assign(
3100562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
3119bffad1eSTheodore Ts'o 		__entry->ino		= inode->i_ino;
3129bffad1eSTheodore Ts'o 		__entry->nr_to_write	= wbc->nr_to_write;
3139bffad1eSTheodore Ts'o 		__entry->pages_skipped	= wbc->pages_skipped;
3149bffad1eSTheodore Ts'o 		__entry->range_start	= wbc->range_start;
3159bffad1eSTheodore Ts'o 		__entry->range_end	= wbc->range_end;
316210c0526SAnatol Pomozov 		__entry->writeback_index = inode->i_mapping->writeback_index;
3170562e0baSJiaying Zhang 		__entry->sync_mode	= wbc->sync_mode;
3189bffad1eSTheodore Ts'o 		__entry->for_kupdate	= wbc->for_kupdate;
3199bffad1eSTheodore Ts'o 		__entry->range_cyclic	= wbc->range_cyclic;
3209bffad1eSTheodore Ts'o 	),
3219bffad1eSTheodore Ts'o 
322a107e5a3STheodore Ts'o 	TP_printk("dev %d,%d ino %lu nr_to_write %ld pages_skipped %ld "
323a9c667f8SLukas Czerner 		  "range_start %lld range_end %lld sync_mode %d "
3240562e0baSJiaying Zhang 		  "for_kupdate %d range_cyclic %d writeback_index %lu",
3250562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
326a3710fd1STheodore Ts'o 		  (unsigned long) __entry->ino, __entry->nr_to_write,
3279bffad1eSTheodore Ts'o 		  __entry->pages_skipped, __entry->range_start,
3280562e0baSJiaying Zhang 		  __entry->range_end, __entry->sync_mode,
3290562e0baSJiaying Zhang 		  __entry->for_kupdate, __entry->range_cyclic,
33055138e0bSTheodore Ts'o 		  (unsigned long) __entry->writeback_index)
3319bffad1eSTheodore Ts'o );
3329bffad1eSTheodore Ts'o 
333b3a3ca8cSTheodore Ts'o TRACE_EVENT(ext4_da_write_pages,
334b3a3ca8cSTheodore Ts'o 	TP_PROTO(struct inode *inode, struct mpage_da_data *mpd),
335b3a3ca8cSTheodore Ts'o 
336b3a3ca8cSTheodore Ts'o 	TP_ARGS(inode, mpd),
337b3a3ca8cSTheodore Ts'o 
338b3a3ca8cSTheodore Ts'o 	TP_STRUCT__entry(
3390562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
340b3a3ca8cSTheodore Ts'o 		__field(	ino_t,	ino			)
341b3a3ca8cSTheodore Ts'o 		__field(	__u64,	b_blocknr		)
342b3a3ca8cSTheodore Ts'o 		__field(	__u32,	b_size			)
343b3a3ca8cSTheodore Ts'o 		__field(	__u32,	b_state			)
344b3a3ca8cSTheodore Ts'o 		__field(	unsigned long,	first_page	)
345b3a3ca8cSTheodore Ts'o 		__field(	int,	io_done			)
346b3a3ca8cSTheodore Ts'o 		__field(	int,	pages_written		)
3470562e0baSJiaying Zhang 		__field(	int,	sync_mode		)
348b3a3ca8cSTheodore Ts'o 	),
349b3a3ca8cSTheodore Ts'o 
350b3a3ca8cSTheodore Ts'o 	TP_fast_assign(
3510562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
352b3a3ca8cSTheodore Ts'o 		__entry->ino		= inode->i_ino;
353b3a3ca8cSTheodore Ts'o 		__entry->b_blocknr	= mpd->b_blocknr;
354b3a3ca8cSTheodore Ts'o 		__entry->b_size		= mpd->b_size;
355b3a3ca8cSTheodore Ts'o 		__entry->b_state	= mpd->b_state;
356b3a3ca8cSTheodore Ts'o 		__entry->first_page	= mpd->first_page;
357b3a3ca8cSTheodore Ts'o 		__entry->io_done	= mpd->io_done;
358b3a3ca8cSTheodore Ts'o 		__entry->pages_written	= mpd->pages_written;
3590562e0baSJiaying Zhang 		__entry->sync_mode	= mpd->wbc->sync_mode;
360b3a3ca8cSTheodore Ts'o 	),
361b3a3ca8cSTheodore Ts'o 
3620562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu b_blocknr %llu b_size %u b_state 0x%04x "
3630562e0baSJiaying Zhang 		  "first_page %lu io_done %d pages_written %d sync_mode %d",
3640562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
365a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
366b3a3ca8cSTheodore Ts'o 		  __entry->b_blocknr, __entry->b_size,
367b3a3ca8cSTheodore Ts'o 		  __entry->b_state, __entry->first_page,
3680562e0baSJiaying Zhang 		  __entry->io_done, __entry->pages_written,
3690562e0baSJiaying Zhang 		  __entry->sync_mode
3700562e0baSJiaying Zhang                   )
371b3a3ca8cSTheodore Ts'o );
372b3a3ca8cSTheodore Ts'o 
3739bffad1eSTheodore Ts'o TRACE_EVENT(ext4_da_writepages_result,
3749bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, struct writeback_control *wbc,
3759bffad1eSTheodore Ts'o 			int ret, int pages_written),
3769bffad1eSTheodore Ts'o 
3779bffad1eSTheodore Ts'o 	TP_ARGS(inode, wbc, ret, pages_written),
3789bffad1eSTheodore Ts'o 
3799bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
3800562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
3819bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
3829bffad1eSTheodore Ts'o 		__field(	int,	ret			)
3839bffad1eSTheodore Ts'o 		__field(	int,	pages_written		)
3849bffad1eSTheodore Ts'o 		__field(	long,	pages_skipped		)
38555138e0bSTheodore Ts'o 		__field(       pgoff_t,	writeback_index		)
386210c0526SAnatol Pomozov 		__field(	int,	sync_mode		)
3879bffad1eSTheodore Ts'o 	),
3889bffad1eSTheodore Ts'o 
3899bffad1eSTheodore Ts'o 	TP_fast_assign(
3900562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
3919bffad1eSTheodore Ts'o 		__entry->ino		= inode->i_ino;
3929bffad1eSTheodore Ts'o 		__entry->ret		= ret;
3939bffad1eSTheodore Ts'o 		__entry->pages_written	= pages_written;
3949bffad1eSTheodore Ts'o 		__entry->pages_skipped	= wbc->pages_skipped;
39555138e0bSTheodore Ts'o 		__entry->writeback_index = inode->i_mapping->writeback_index;
396210c0526SAnatol Pomozov 		__entry->sync_mode	= wbc->sync_mode;
3979bffad1eSTheodore Ts'o 	),
3989bffad1eSTheodore Ts'o 
3990562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld "
400b7a2441fSWu Fengguang 		  "sync_mode %d writeback_index %lu",
4010562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
402a3710fd1STheodore Ts'o 		  (unsigned long) __entry->ino, __entry->ret,
4039bffad1eSTheodore Ts'o 		  __entry->pages_written, __entry->pages_skipped,
404b7a2441fSWu Fengguang 		  __entry->sync_mode,
40555138e0bSTheodore Ts'o 		  (unsigned long) __entry->writeback_index)
4069bffad1eSTheodore Ts'o );
4079bffad1eSTheodore Ts'o 
4080562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__page_op,
4090562e0baSJiaying Zhang 	TP_PROTO(struct page *page),
4100562e0baSJiaying Zhang 
4110562e0baSJiaying Zhang 	TP_ARGS(page),
4120562e0baSJiaying Zhang 
4130562e0baSJiaying Zhang 	TP_STRUCT__entry(
4140562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
415210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
416210c0526SAnatol Pomozov 		__field(	pgoff_t, index			)
4170562e0baSJiaying Zhang 
4180562e0baSJiaying Zhang 	),
4190562e0baSJiaying Zhang 
4200562e0baSJiaying Zhang 	TP_fast_assign(
4210562e0baSJiaying Zhang 		__entry->dev	= page->mapping->host->i_sb->s_dev;
422210c0526SAnatol Pomozov 		__entry->ino	= page->mapping->host->i_ino;
423210c0526SAnatol Pomozov 		__entry->index	= page->index;
4240562e0baSJiaying Zhang 	),
4250562e0baSJiaying Zhang 
4260562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu page_index %lu",
4270562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
4280562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
429a9c667f8SLukas Czerner 		  (unsigned long) __entry->index)
430a9c667f8SLukas Czerner );
431a9c667f8SLukas Czerner 
432a9c667f8SLukas Czerner DEFINE_EVENT(ext4__page_op, ext4_writepage,
433a9c667f8SLukas Czerner 
434a9c667f8SLukas Czerner 	TP_PROTO(struct page *page),
435a9c667f8SLukas Czerner 
436a9c667f8SLukas Czerner 	TP_ARGS(page)
4370562e0baSJiaying Zhang );
4380562e0baSJiaying Zhang 
4390562e0baSJiaying Zhang DEFINE_EVENT(ext4__page_op, ext4_readpage,
4400562e0baSJiaying Zhang 
4410562e0baSJiaying Zhang 	TP_PROTO(struct page *page),
4420562e0baSJiaying Zhang 
4430562e0baSJiaying Zhang 	TP_ARGS(page)
4440562e0baSJiaying Zhang );
4450562e0baSJiaying Zhang 
4460562e0baSJiaying Zhang DEFINE_EVENT(ext4__page_op, ext4_releasepage,
4470562e0baSJiaying Zhang 
4480562e0baSJiaying Zhang 	TP_PROTO(struct page *page),
4490562e0baSJiaying Zhang 
4500562e0baSJiaying Zhang 	TP_ARGS(page)
4510562e0baSJiaying Zhang );
4520562e0baSJiaying Zhang 
4530562e0baSJiaying Zhang TRACE_EVENT(ext4_invalidatepage,
4540562e0baSJiaying Zhang 	TP_PROTO(struct page *page, unsigned long offset),
4550562e0baSJiaying Zhang 
4560562e0baSJiaying Zhang 	TP_ARGS(page, offset),
4570562e0baSJiaying Zhang 
4580562e0baSJiaying Zhang 	TP_STRUCT__entry(
459210c0526SAnatol Pomozov 		__field(	dev_t,	dev			)
460210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
4610562e0baSJiaying Zhang 		__field(	pgoff_t, index			)
4620562e0baSJiaying Zhang 		__field(	unsigned long, offset		)
4630562e0baSJiaying Zhang 
4640562e0baSJiaying Zhang 	),
4650562e0baSJiaying Zhang 
4660562e0baSJiaying Zhang 	TP_fast_assign(
467210c0526SAnatol Pomozov 		__entry->dev	= page->mapping->host->i_sb->s_dev;
468210c0526SAnatol Pomozov 		__entry->ino	= page->mapping->host->i_ino;
4690562e0baSJiaying Zhang 		__entry->index	= page->index;
4700562e0baSJiaying Zhang 		__entry->offset	= offset;
4710562e0baSJiaying Zhang 	),
4720562e0baSJiaying Zhang 
4730562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu page_index %lu offset %lu",
4740562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
4750562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
476a9c667f8SLukas Czerner 		  (unsigned long) __entry->index, __entry->offset)
4770562e0baSJiaying Zhang );
4780562e0baSJiaying Zhang 
4799bffad1eSTheodore Ts'o TRACE_EVENT(ext4_discard_blocks,
4809bffad1eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, unsigned long long blk,
4819bffad1eSTheodore Ts'o 			unsigned long long count),
4829bffad1eSTheodore Ts'o 
4839bffad1eSTheodore Ts'o 	TP_ARGS(sb, blk, count),
4849bffad1eSTheodore Ts'o 
4859bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
4860562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
4879bffad1eSTheodore Ts'o 		__field(	__u64,	blk			)
4889bffad1eSTheodore Ts'o 		__field(	__u64,	count			)
4899bffad1eSTheodore Ts'o 
4909bffad1eSTheodore Ts'o 	),
4919bffad1eSTheodore Ts'o 
4929bffad1eSTheodore Ts'o 	TP_fast_assign(
4930562e0baSJiaying Zhang 		__entry->dev	= sb->s_dev;
4949bffad1eSTheodore Ts'o 		__entry->blk	= blk;
4959bffad1eSTheodore Ts'o 		__entry->count	= count;
4969bffad1eSTheodore Ts'o 	),
4979bffad1eSTheodore Ts'o 
498a269029dSTheodore Ts'o 	TP_printk("dev %d,%d blk %llu count %llu",
4990562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
500a269029dSTheodore Ts'o 		  __entry->blk, __entry->count)
5019bffad1eSTheodore Ts'o );
5029bffad1eSTheodore Ts'o 
503f084db93SLi Zefan DECLARE_EVENT_CLASS(ext4__mb_new_pa,
5049bffad1eSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_context *ac,
5059bffad1eSTheodore Ts'o 		 struct ext4_prealloc_space *pa),
5069bffad1eSTheodore Ts'o 
5079bffad1eSTheodore Ts'o 	TP_ARGS(ac, pa),
5089bffad1eSTheodore Ts'o 
5099bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
5100562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
5119bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
5129bffad1eSTheodore Ts'o 		__field(	__u64,	pa_pstart		)
5139bffad1eSTheodore Ts'o 		__field(	__u64,	pa_lstart		)
514210c0526SAnatol Pomozov 		__field(	__u32,	pa_len			)
5159bffad1eSTheodore Ts'o 
5169bffad1eSTheodore Ts'o 	),
5179bffad1eSTheodore Ts'o 
5189bffad1eSTheodore Ts'o 	TP_fast_assign(
5190562e0baSJiaying Zhang 		__entry->dev		= ac->ac_sb->s_dev;
5209bffad1eSTheodore Ts'o 		__entry->ino		= ac->ac_inode->i_ino;
5219bffad1eSTheodore Ts'o 		__entry->pa_pstart	= pa->pa_pstart;
5229bffad1eSTheodore Ts'o 		__entry->pa_lstart	= pa->pa_lstart;
523210c0526SAnatol Pomozov 		__entry->pa_len		= pa->pa_len;
5249bffad1eSTheodore Ts'o 	),
5259bffad1eSTheodore Ts'o 
526a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu pstart %llu len %u lstart %llu",
5270562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
5280562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
5290562e0baSJiaying Zhang 		  __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart)
5309bffad1eSTheodore Ts'o );
5319bffad1eSTheodore Ts'o 
532f084db93SLi Zefan DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_inode_pa,
533f084db93SLi Zefan 
5349bffad1eSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_context *ac,
5359bffad1eSTheodore Ts'o 		 struct ext4_prealloc_space *pa),
5369bffad1eSTheodore Ts'o 
537f084db93SLi Zefan 	TP_ARGS(ac, pa)
538f084db93SLi Zefan );
5399bffad1eSTheodore Ts'o 
540f084db93SLi Zefan DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_group_pa,
5419bffad1eSTheodore Ts'o 
542f084db93SLi Zefan 	TP_PROTO(struct ext4_allocation_context *ac,
543f084db93SLi Zefan 		 struct ext4_prealloc_space *pa),
5449bffad1eSTheodore Ts'o 
545f084db93SLi Zefan 	TP_ARGS(ac, pa)
5469bffad1eSTheodore Ts'o );
5479bffad1eSTheodore Ts'o 
5489bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_release_inode_pa,
549a9c667f8SLukas Czerner 	TP_PROTO(struct ext4_prealloc_space *pa,
5509bffad1eSTheodore Ts'o 		 unsigned long long block, unsigned int count),
5519bffad1eSTheodore Ts'o 
552a9c667f8SLukas Czerner 	TP_ARGS(pa, block, count),
5539bffad1eSTheodore Ts'o 
5549bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
5550562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
5569bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
5579bffad1eSTheodore Ts'o 		__field(	__u64,	block			)
5589bffad1eSTheodore Ts'o 		__field(	__u32,	count			)
5599bffad1eSTheodore Ts'o 
5609bffad1eSTheodore Ts'o 	),
5619bffad1eSTheodore Ts'o 
5629bffad1eSTheodore Ts'o 	TP_fast_assign(
563a9c667f8SLukas Czerner 		__entry->dev		= pa->pa_inode->i_sb->s_dev;
564a9c667f8SLukas Czerner 		__entry->ino		= pa->pa_inode->i_ino;
5659bffad1eSTheodore Ts'o 		__entry->block		= block;
5669bffad1eSTheodore Ts'o 		__entry->count		= count;
5679bffad1eSTheodore Ts'o 	),
5689bffad1eSTheodore Ts'o 
569a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu block %llu count %u",
5700562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
5710562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
5720562e0baSJiaying Zhang 		  __entry->block, __entry->count)
5739bffad1eSTheodore Ts'o );
5749bffad1eSTheodore Ts'o 
5759bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_release_group_pa,
57660e07cf5SYongqiang Yang 	TP_PROTO(struct super_block *sb, struct ext4_prealloc_space *pa),
5779bffad1eSTheodore Ts'o 
57860e07cf5SYongqiang Yang 	TP_ARGS(sb, pa),
5799bffad1eSTheodore Ts'o 
5809bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
5810562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
5829bffad1eSTheodore Ts'o 		__field(	__u64,	pa_pstart		)
5839bffad1eSTheodore Ts'o 		__field(	__u32,	pa_len			)
5849bffad1eSTheodore Ts'o 
5859bffad1eSTheodore Ts'o 	),
5869bffad1eSTheodore Ts'o 
5879bffad1eSTheodore Ts'o 	TP_fast_assign(
58860e07cf5SYongqiang Yang 		__entry->dev		= sb->s_dev;
5899bffad1eSTheodore Ts'o 		__entry->pa_pstart	= pa->pa_pstart;
5909bffad1eSTheodore Ts'o 		__entry->pa_len		= pa->pa_len;
5919bffad1eSTheodore Ts'o 	),
5929bffad1eSTheodore Ts'o 
593a269029dSTheodore Ts'o 	TP_printk("dev %d,%d pstart %llu len %u",
5940562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
595a269029dSTheodore Ts'o 		  __entry->pa_pstart, __entry->pa_len)
5969bffad1eSTheodore Ts'o );
5979bffad1eSTheodore Ts'o 
5989bffad1eSTheodore Ts'o TRACE_EVENT(ext4_discard_preallocations,
5999bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode),
6009bffad1eSTheodore Ts'o 
6019bffad1eSTheodore Ts'o 	TP_ARGS(inode),
6029bffad1eSTheodore Ts'o 
6039bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
6040562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
6059bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
6069bffad1eSTheodore Ts'o 
6079bffad1eSTheodore Ts'o 	),
6089bffad1eSTheodore Ts'o 
6099bffad1eSTheodore Ts'o 	TP_fast_assign(
6100562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
6119bffad1eSTheodore Ts'o 		__entry->ino	= inode->i_ino;
6129bffad1eSTheodore Ts'o 	),
6139bffad1eSTheodore Ts'o 
614a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu",
6150562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
616a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino)
6179bffad1eSTheodore Ts'o );
6189bffad1eSTheodore Ts'o 
6199bffad1eSTheodore Ts'o TRACE_EVENT(ext4_mb_discard_preallocations,
6209bffad1eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, int needed),
6219bffad1eSTheodore Ts'o 
6229bffad1eSTheodore Ts'o 	TP_ARGS(sb, needed),
6239bffad1eSTheodore Ts'o 
6249bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
6250562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
6269bffad1eSTheodore Ts'o 		__field(	int,	needed			)
6279bffad1eSTheodore Ts'o 
6289bffad1eSTheodore Ts'o 	),
6299bffad1eSTheodore Ts'o 
6309bffad1eSTheodore Ts'o 	TP_fast_assign(
6310562e0baSJiaying Zhang 		__entry->dev	= sb->s_dev;
6329bffad1eSTheodore Ts'o 		__entry->needed	= needed;
6339bffad1eSTheodore Ts'o 	),
6349bffad1eSTheodore Ts'o 
635a269029dSTheodore Ts'o 	TP_printk("dev %d,%d needed %d",
6360562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
6370562e0baSJiaying Zhang 		  __entry->needed)
6389bffad1eSTheodore Ts'o );
6399bffad1eSTheodore Ts'o 
6409bffad1eSTheodore Ts'o TRACE_EVENT(ext4_request_blocks,
6419bffad1eSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_request *ar),
6429bffad1eSTheodore Ts'o 
6439bffad1eSTheodore Ts'o 	TP_ARGS(ar),
6449bffad1eSTheodore Ts'o 
6459bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
6460562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
6479bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
6489bffad1eSTheodore Ts'o 		__field(	unsigned int, len		)
649a9c667f8SLukas Czerner 		__field(	__u32,  logical			)
650a9c667f8SLukas Czerner 		__field(	__u32,	lleft			)
651a9c667f8SLukas Czerner 		__field(	__u32,	lright			)
6529bffad1eSTheodore Ts'o 		__field(	__u64,	goal			)
6539bffad1eSTheodore Ts'o 		__field(	__u64,	pleft			)
6549bffad1eSTheodore Ts'o 		__field(	__u64,	pright			)
655210c0526SAnatol Pomozov 		__field(	unsigned int, flags		)
6569bffad1eSTheodore Ts'o 	),
6579bffad1eSTheodore Ts'o 
6589bffad1eSTheodore Ts'o 	TP_fast_assign(
6590562e0baSJiaying Zhang 		__entry->dev	= ar->inode->i_sb->s_dev;
6609bffad1eSTheodore Ts'o 		__entry->ino	= ar->inode->i_ino;
6619bffad1eSTheodore Ts'o 		__entry->len	= ar->len;
6629bffad1eSTheodore Ts'o 		__entry->logical = ar->logical;
6639bffad1eSTheodore Ts'o 		__entry->goal	= ar->goal;
6649bffad1eSTheodore Ts'o 		__entry->lleft	= ar->lleft;
6659bffad1eSTheodore Ts'o 		__entry->lright	= ar->lright;
6669bffad1eSTheodore Ts'o 		__entry->pleft	= ar->pleft;
6679bffad1eSTheodore Ts'o 		__entry->pright	= ar->pright;
668210c0526SAnatol Pomozov 		__entry->flags	= ar->flags;
6699bffad1eSTheodore Ts'o 	),
6709bffad1eSTheodore Ts'o 
671a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu flags %u len %u lblk %u goal %llu "
672a9c667f8SLukas Czerner 		  "lleft %u lright %u pleft %llu pright %llu ",
6730562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
674a9c667f8SLukas Czerner 		  (unsigned long) __entry->ino, __entry->flags,
675a9c667f8SLukas Czerner 		  __entry->len, __entry->logical, __entry->goal,
676a9c667f8SLukas Czerner 		  __entry->lleft, __entry->lright, __entry->pleft,
677a9c667f8SLukas Czerner 		  __entry->pright)
6789bffad1eSTheodore Ts'o );
6799bffad1eSTheodore Ts'o 
6809bffad1eSTheodore Ts'o TRACE_EVENT(ext4_allocate_blocks,
6819bffad1eSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_request *ar, unsigned long long block),
6829bffad1eSTheodore Ts'o 
6839bffad1eSTheodore Ts'o 	TP_ARGS(ar, block),
6849bffad1eSTheodore Ts'o 
6859bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
6860562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
6879bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
6889bffad1eSTheodore Ts'o 		__field(	__u64,	block			)
6899bffad1eSTheodore Ts'o 		__field(	unsigned int, len		)
690a9c667f8SLukas Czerner 		__field(	__u32,  logical			)
691a9c667f8SLukas Czerner 		__field(	__u32,	lleft			)
692a9c667f8SLukas Czerner 		__field(	__u32,	lright			)
6939bffad1eSTheodore Ts'o 		__field(	__u64,	goal			)
6949bffad1eSTheodore Ts'o 		__field(	__u64,	pleft			)
6959bffad1eSTheodore Ts'o 		__field(	__u64,	pright			)
696210c0526SAnatol Pomozov 		__field(	unsigned int, flags		)
6979bffad1eSTheodore Ts'o 	),
6989bffad1eSTheodore Ts'o 
6999bffad1eSTheodore Ts'o 	TP_fast_assign(
7000562e0baSJiaying Zhang 		__entry->dev	= ar->inode->i_sb->s_dev;
7019bffad1eSTheodore Ts'o 		__entry->ino	= ar->inode->i_ino;
7029bffad1eSTheodore Ts'o 		__entry->block	= block;
7039bffad1eSTheodore Ts'o 		__entry->len	= ar->len;
7049bffad1eSTheodore Ts'o 		__entry->logical = ar->logical;
7059bffad1eSTheodore Ts'o 		__entry->goal	= ar->goal;
7069bffad1eSTheodore Ts'o 		__entry->lleft	= ar->lleft;
7079bffad1eSTheodore Ts'o 		__entry->lright	= ar->lright;
7089bffad1eSTheodore Ts'o 		__entry->pleft	= ar->pleft;
7099bffad1eSTheodore Ts'o 		__entry->pright	= ar->pright;
710210c0526SAnatol Pomozov 		__entry->flags	= ar->flags;
7119bffad1eSTheodore Ts'o 	),
7129bffad1eSTheodore Ts'o 
713a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu flags %u len %u block %llu lblk %u "
714a9c667f8SLukas Czerner 		  "goal %llu lleft %u lright %u pleft %llu pright %llu",
7150562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
716a9c667f8SLukas Czerner 		  (unsigned long) __entry->ino, __entry->flags,
717a9c667f8SLukas Czerner 		  __entry->len, __entry->block, __entry->logical,
718a9c667f8SLukas Czerner 		  __entry->goal,  __entry->lleft, __entry->lright,
719a9c667f8SLukas Czerner 		  __entry->pleft, __entry->pright)
7209bffad1eSTheodore Ts'o );
7219bffad1eSTheodore Ts'o 
7229bffad1eSTheodore Ts'o TRACE_EVENT(ext4_free_blocks,
7239bffad1eSTheodore Ts'o 	TP_PROTO(struct inode *inode, __u64 block, unsigned long count,
724e6362609STheodore Ts'o 		 int flags),
7259bffad1eSTheodore Ts'o 
726e6362609STheodore Ts'o 	TP_ARGS(inode, block, count, flags),
7279bffad1eSTheodore Ts'o 
7289bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
7290562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
7309bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
7319bffad1eSTheodore Ts'o 		__field(	__u64,	block			)
7329bffad1eSTheodore Ts'o 		__field(	unsigned long,	count		)
733e6362609STheodore Ts'o 		__field(	int,	flags			)
734210c0526SAnatol Pomozov 		__field(	__u16,	mode			)
7359bffad1eSTheodore Ts'o 	),
7369bffad1eSTheodore Ts'o 
7379bffad1eSTheodore Ts'o 	TP_fast_assign(
7380562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
7399bffad1eSTheodore Ts'o 		__entry->ino		= inode->i_ino;
7409bffad1eSTheodore Ts'o 		__entry->block		= block;
7419bffad1eSTheodore Ts'o 		__entry->count		= count;
742e6362609STheodore Ts'o 		__entry->flags		= flags;
743210c0526SAnatol Pomozov 		__entry->mode		= inode->i_mode;
7449bffad1eSTheodore Ts'o 	),
7459bffad1eSTheodore Ts'o 
746a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %d",
7470562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
748a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
749e6362609STheodore Ts'o 		  __entry->mode, __entry->block, __entry->count,
750e6362609STheodore Ts'o 		  __entry->flags)
7519bffad1eSTheodore Ts'o );
7529bffad1eSTheodore Ts'o 
7530562e0baSJiaying Zhang TRACE_EVENT(ext4_sync_file_enter,
7547ea80859SChristoph Hellwig 	TP_PROTO(struct file *file, int datasync),
7559bffad1eSTheodore Ts'o 
7567ea80859SChristoph Hellwig 	TP_ARGS(file, datasync),
7579bffad1eSTheodore Ts'o 
7589bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
7590562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
7609bffad1eSTheodore Ts'o 		__field(	ino_t,	ino			)
7619bffad1eSTheodore Ts'o 		__field(	ino_t,	parent			)
7629bffad1eSTheodore Ts'o 		__field(	int,	datasync		)
7639bffad1eSTheodore Ts'o 	),
7649bffad1eSTheodore Ts'o 
7659bffad1eSTheodore Ts'o 	TP_fast_assign(
7667ea80859SChristoph Hellwig 		struct dentry *dentry = file->f_path.dentry;
7677ea80859SChristoph Hellwig 
7680562e0baSJiaying Zhang 		__entry->dev		= dentry->d_inode->i_sb->s_dev;
7699bffad1eSTheodore Ts'o 		__entry->ino		= dentry->d_inode->i_ino;
7709bffad1eSTheodore Ts'o 		__entry->datasync	= datasync;
7719bffad1eSTheodore Ts'o 		__entry->parent		= dentry->d_parent->d_inode->i_ino;
7729bffad1eSTheodore Ts'o 	),
7739bffad1eSTheodore Ts'o 
774a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu parent %lu datasync %d ",
7750562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
776a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
777a3710fd1STheodore Ts'o 		  (unsigned long) __entry->parent, __entry->datasync)
7789bffad1eSTheodore Ts'o );
7799bffad1eSTheodore Ts'o 
7800562e0baSJiaying Zhang TRACE_EVENT(ext4_sync_file_exit,
7810562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, int ret),
7820562e0baSJiaying Zhang 
7830562e0baSJiaying Zhang 	TP_ARGS(inode, ret),
7840562e0baSJiaying Zhang 
7850562e0baSJiaying Zhang 	TP_STRUCT__entry(
7860562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
787210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
788210c0526SAnatol Pomozov 		__field(	int,	ret			)
7890562e0baSJiaying Zhang 	),
7900562e0baSJiaying Zhang 
7910562e0baSJiaying Zhang 	TP_fast_assign(
7920562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
793210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
794210c0526SAnatol Pomozov 		__entry->ret		= ret;
7950562e0baSJiaying Zhang 	),
7960562e0baSJiaying Zhang 
797a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu ret %d",
7980562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
7990562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
8000562e0baSJiaying Zhang 		  __entry->ret)
8010562e0baSJiaying Zhang );
8020562e0baSJiaying Zhang 
8039bffad1eSTheodore Ts'o TRACE_EVENT(ext4_sync_fs,
8049bffad1eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, int wait),
8059bffad1eSTheodore Ts'o 
8069bffad1eSTheodore Ts'o 	TP_ARGS(sb, wait),
8079bffad1eSTheodore Ts'o 
8089bffad1eSTheodore Ts'o 	TP_STRUCT__entry(
8090562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
8109bffad1eSTheodore Ts'o 		__field(	int,	wait			)
8119bffad1eSTheodore Ts'o 
8129bffad1eSTheodore Ts'o 	),
8139bffad1eSTheodore Ts'o 
8149bffad1eSTheodore Ts'o 	TP_fast_assign(
8150562e0baSJiaying Zhang 		__entry->dev	= sb->s_dev;
8169bffad1eSTheodore Ts'o 		__entry->wait	= wait;
8179bffad1eSTheodore Ts'o 	),
8189bffad1eSTheodore Ts'o 
8190562e0baSJiaying Zhang 	TP_printk("dev %d,%d wait %d",
8200562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
8210562e0baSJiaying Zhang 		  __entry->wait)
8229bffad1eSTheodore Ts'o );
8239bffad1eSTheodore Ts'o 
824fb40ba0dSTheodore Ts'o TRACE_EVENT(ext4_alloc_da_blocks,
825fb40ba0dSTheodore Ts'o 	TP_PROTO(struct inode *inode),
826fb40ba0dSTheodore Ts'o 
827fb40ba0dSTheodore Ts'o 	TP_ARGS(inode),
828fb40ba0dSTheodore Ts'o 
829fb40ba0dSTheodore Ts'o 	TP_STRUCT__entry(
8300562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
831fb40ba0dSTheodore Ts'o 		__field(	ino_t,	ino			)
832fb40ba0dSTheodore Ts'o 		__field( unsigned int,	data_blocks	)
833fb40ba0dSTheodore Ts'o 		__field( unsigned int,	meta_blocks	)
834fb40ba0dSTheodore Ts'o 	),
835fb40ba0dSTheodore Ts'o 
836fb40ba0dSTheodore Ts'o 	TP_fast_assign(
8370562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
838fb40ba0dSTheodore Ts'o 		__entry->ino	= inode->i_ino;
839fb40ba0dSTheodore Ts'o 		__entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
840fb40ba0dSTheodore Ts'o 		__entry->meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
841fb40ba0dSTheodore Ts'o 	),
842fb40ba0dSTheodore Ts'o 
843a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu data_blocks %u meta_blocks %u",
8440562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
845a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
846fb40ba0dSTheodore Ts'o 		  __entry->data_blocks, __entry->meta_blocks)
847fb40ba0dSTheodore Ts'o );
848fb40ba0dSTheodore Ts'o 
849296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_alloc,
850296c355cSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_context *ac),
851296c355cSTheodore Ts'o 
852296c355cSTheodore Ts'o 	TP_ARGS(ac),
853296c355cSTheodore Ts'o 
854296c355cSTheodore Ts'o 	TP_STRUCT__entry(
8550562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
856296c355cSTheodore Ts'o 		__field(	ino_t,	ino			)
857296c355cSTheodore Ts'o 		__field(	__u32, 	orig_logical		)
858296c355cSTheodore Ts'o 		__field(	  int,	orig_start		)
859296c355cSTheodore Ts'o 		__field(	__u32, 	orig_group		)
860296c355cSTheodore Ts'o 		__field(	  int,	orig_len		)
861296c355cSTheodore Ts'o 		__field(	__u32, 	goal_logical		)
862296c355cSTheodore Ts'o 		__field(	  int,	goal_start		)
863296c355cSTheodore Ts'o 		__field(	__u32, 	goal_group		)
864296c355cSTheodore Ts'o 		__field(	  int,	goal_len		)
865296c355cSTheodore Ts'o 		__field(	__u32, 	result_logical		)
866296c355cSTheodore Ts'o 		__field(	  int,	result_start		)
867296c355cSTheodore Ts'o 		__field(	__u32, 	result_group		)
868296c355cSTheodore Ts'o 		__field(	  int,	result_len		)
869210c0526SAnatol Pomozov 		__field(	__u16,	found			)
870210c0526SAnatol Pomozov 		__field(	__u16,	groups			)
871210c0526SAnatol Pomozov 		__field(	__u16,	buddy			)
872210c0526SAnatol Pomozov 		__field(	__u16,	flags			)
873210c0526SAnatol Pomozov 		__field(	__u16,	tail			)
874210c0526SAnatol Pomozov 		__field(	__u8,	cr			)
875296c355cSTheodore Ts'o 	),
876296c355cSTheodore Ts'o 
877296c355cSTheodore Ts'o 	TP_fast_assign(
8780562e0baSJiaying Zhang 		__entry->dev		= ac->ac_inode->i_sb->s_dev;
879296c355cSTheodore Ts'o 		__entry->ino		= ac->ac_inode->i_ino;
880296c355cSTheodore Ts'o 		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
881296c355cSTheodore Ts'o 		__entry->orig_start	= ac->ac_o_ex.fe_start;
882296c355cSTheodore Ts'o 		__entry->orig_group	= ac->ac_o_ex.fe_group;
883296c355cSTheodore Ts'o 		__entry->orig_len	= ac->ac_o_ex.fe_len;
884296c355cSTheodore Ts'o 		__entry->goal_logical	= ac->ac_g_ex.fe_logical;
885296c355cSTheodore Ts'o 		__entry->goal_start	= ac->ac_g_ex.fe_start;
886296c355cSTheodore Ts'o 		__entry->goal_group	= ac->ac_g_ex.fe_group;
887296c355cSTheodore Ts'o 		__entry->goal_len	= ac->ac_g_ex.fe_len;
888296c355cSTheodore Ts'o 		__entry->result_logical	= ac->ac_f_ex.fe_logical;
889296c355cSTheodore Ts'o 		__entry->result_start	= ac->ac_f_ex.fe_start;
890296c355cSTheodore Ts'o 		__entry->result_group	= ac->ac_f_ex.fe_group;
891296c355cSTheodore Ts'o 		__entry->result_len	= ac->ac_f_ex.fe_len;
892210c0526SAnatol Pomozov 		__entry->found		= ac->ac_found;
893210c0526SAnatol Pomozov 		__entry->flags		= ac->ac_flags;
894210c0526SAnatol Pomozov 		__entry->groups		= ac->ac_groups_scanned;
895210c0526SAnatol Pomozov 		__entry->buddy		= ac->ac_buddy;
896210c0526SAnatol Pomozov 		__entry->tail		= ac->ac_tail;
897210c0526SAnatol Pomozov 		__entry->cr		= ac->ac_criteria;
898296c355cSTheodore Ts'o 	),
899296c355cSTheodore Ts'o 
900a269029dSTheodore Ts'o 	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u "
901296c355cSTheodore Ts'o 		  "result %u/%d/%u@%u blks %u grps %u cr %u flags 0x%04x "
902296c355cSTheodore Ts'o 		  "tail %u broken %u",
9030562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
904a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
905296c355cSTheodore Ts'o 		  __entry->orig_group, __entry->orig_start,
906296c355cSTheodore Ts'o 		  __entry->orig_len, __entry->orig_logical,
907296c355cSTheodore Ts'o 		  __entry->goal_group, __entry->goal_start,
908296c355cSTheodore Ts'o 		  __entry->goal_len, __entry->goal_logical,
909296c355cSTheodore Ts'o 		  __entry->result_group, __entry->result_start,
910296c355cSTheodore Ts'o 		  __entry->result_len, __entry->result_logical,
911296c355cSTheodore Ts'o 		  __entry->found, __entry->groups, __entry->cr,
912296c355cSTheodore Ts'o 		  __entry->flags, __entry->tail,
913296c355cSTheodore Ts'o 		  __entry->buddy ? 1 << __entry->buddy : 0)
914296c355cSTheodore Ts'o );
915296c355cSTheodore Ts'o 
916296c355cSTheodore Ts'o TRACE_EVENT(ext4_mballoc_prealloc,
917296c355cSTheodore Ts'o 	TP_PROTO(struct ext4_allocation_context *ac),
918296c355cSTheodore Ts'o 
919296c355cSTheodore Ts'o 	TP_ARGS(ac),
920296c355cSTheodore Ts'o 
921296c355cSTheodore Ts'o 	TP_STRUCT__entry(
9220562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
923296c355cSTheodore Ts'o 		__field(	ino_t,	ino			)
924296c355cSTheodore Ts'o 		__field(	__u32, 	orig_logical		)
925296c355cSTheodore Ts'o 		__field(	  int,	orig_start		)
926296c355cSTheodore Ts'o 		__field(	__u32, 	orig_group		)
927296c355cSTheodore Ts'o 		__field(	  int,	orig_len		)
928296c355cSTheodore Ts'o 		__field(	__u32, 	result_logical		)
929296c355cSTheodore Ts'o 		__field(	  int,	result_start		)
930296c355cSTheodore Ts'o 		__field(	__u32, 	result_group		)
931296c355cSTheodore Ts'o 		__field(	  int,	result_len		)
932296c355cSTheodore Ts'o 	),
933296c355cSTheodore Ts'o 
934296c355cSTheodore Ts'o 	TP_fast_assign(
9350562e0baSJiaying Zhang 		__entry->dev		= ac->ac_inode->i_sb->s_dev;
936296c355cSTheodore Ts'o 		__entry->ino		= ac->ac_inode->i_ino;
937296c355cSTheodore Ts'o 		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
938296c355cSTheodore Ts'o 		__entry->orig_start	= ac->ac_o_ex.fe_start;
939296c355cSTheodore Ts'o 		__entry->orig_group	= ac->ac_o_ex.fe_group;
940296c355cSTheodore Ts'o 		__entry->orig_len	= ac->ac_o_ex.fe_len;
941296c355cSTheodore Ts'o 		__entry->result_logical	= ac->ac_b_ex.fe_logical;
942296c355cSTheodore Ts'o 		__entry->result_start	= ac->ac_b_ex.fe_start;
943296c355cSTheodore Ts'o 		__entry->result_group	= ac->ac_b_ex.fe_group;
944296c355cSTheodore Ts'o 		__entry->result_len	= ac->ac_b_ex.fe_len;
945296c355cSTheodore Ts'o 	),
946296c355cSTheodore Ts'o 
947a269029dSTheodore Ts'o 	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u",
9480562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
949a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
950296c355cSTheodore Ts'o 		  __entry->orig_group, __entry->orig_start,
951296c355cSTheodore Ts'o 		  __entry->orig_len, __entry->orig_logical,
952296c355cSTheodore Ts'o 		  __entry->result_group, __entry->result_start,
953296c355cSTheodore Ts'o 		  __entry->result_len, __entry->result_logical)
954296c355cSTheodore Ts'o );
955296c355cSTheodore Ts'o 
956f084db93SLi Zefan DECLARE_EVENT_CLASS(ext4__mballoc,
9573e1e5f50SEric Sandeen 	TP_PROTO(struct super_block *sb,
9583e1e5f50SEric Sandeen 		 struct inode *inode,
9593e1e5f50SEric Sandeen 		 ext4_group_t group,
9603e1e5f50SEric Sandeen 		 ext4_grpblk_t start,
9613e1e5f50SEric Sandeen 		 ext4_grpblk_t len),
962296c355cSTheodore Ts'o 
9633e1e5f50SEric Sandeen 	TP_ARGS(sb, inode, group, start, len),
964296c355cSTheodore Ts'o 
965296c355cSTheodore Ts'o 	TP_STRUCT__entry(
9660562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
967296c355cSTheodore Ts'o 		__field(	ino_t,	ino			)
968296c355cSTheodore Ts'o 		__field(	  int,	result_start		)
969296c355cSTheodore Ts'o 		__field(	__u32, 	result_group		)
970296c355cSTheodore Ts'o 		__field(	  int,	result_len		)
971296c355cSTheodore Ts'o 	),
972296c355cSTheodore Ts'o 
973296c355cSTheodore Ts'o 	TP_fast_assign(
9740562e0baSJiaying Zhang 		__entry->dev		= sb->s_dev;
9753e1e5f50SEric Sandeen 		__entry->ino		= inode ? inode->i_ino : 0;
9763e1e5f50SEric Sandeen 		__entry->result_start	= start;
9773e1e5f50SEric Sandeen 		__entry->result_group	= group;
9783e1e5f50SEric Sandeen 		__entry->result_len	= len;
979296c355cSTheodore Ts'o 	),
980296c355cSTheodore Ts'o 
981a9c667f8SLukas Czerner 	TP_printk("dev %d,%d inode %lu extent %u/%d/%d ",
9820562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
983a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
984296c355cSTheodore Ts'o 		  __entry->result_group, __entry->result_start,
9853e1e5f50SEric Sandeen 		  __entry->result_len)
986296c355cSTheodore Ts'o );
987296c355cSTheodore Ts'o 
988f084db93SLi Zefan DEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard,
989f084db93SLi Zefan 
9903e1e5f50SEric Sandeen 	TP_PROTO(struct super_block *sb,
9913e1e5f50SEric Sandeen 		 struct inode *inode,
9923e1e5f50SEric Sandeen 		 ext4_group_t group,
9933e1e5f50SEric Sandeen 		 ext4_grpblk_t start,
9943e1e5f50SEric Sandeen 		 ext4_grpblk_t len),
995296c355cSTheodore Ts'o 
9963e1e5f50SEric Sandeen 	TP_ARGS(sb, inode, group, start, len)
997f084db93SLi Zefan );
998296c355cSTheodore Ts'o 
999f084db93SLi Zefan DEFINE_EVENT(ext4__mballoc, ext4_mballoc_free,
1000296c355cSTheodore Ts'o 
10013e1e5f50SEric Sandeen 	TP_PROTO(struct super_block *sb,
10023e1e5f50SEric Sandeen 		 struct inode *inode,
10033e1e5f50SEric Sandeen 		 ext4_group_t group,
10043e1e5f50SEric Sandeen 		 ext4_grpblk_t start,
10053e1e5f50SEric Sandeen 		 ext4_grpblk_t len),
1006296c355cSTheodore Ts'o 
10073e1e5f50SEric Sandeen 	TP_ARGS(sb, inode, group, start, len)
1008296c355cSTheodore Ts'o );
1009296c355cSTheodore Ts'o 
1010beac2da7STheodore Ts'o TRACE_EVENT(ext4_forget,
1011beac2da7STheodore Ts'o 	TP_PROTO(struct inode *inode, int is_metadata, __u64 block),
1012beac2da7STheodore Ts'o 
1013beac2da7STheodore Ts'o 	TP_ARGS(inode, is_metadata, block),
1014beac2da7STheodore Ts'o 
1015beac2da7STheodore Ts'o 	TP_STRUCT__entry(
10160562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1017beac2da7STheodore Ts'o 		__field(	ino_t,	ino			)
1018beac2da7STheodore Ts'o 		__field(	__u64,	block			)
1019210c0526SAnatol Pomozov 		__field(	int,	is_metadata		)
1020210c0526SAnatol Pomozov 		__field(	__u16,	mode			)
1021beac2da7STheodore Ts'o 	),
1022beac2da7STheodore Ts'o 
1023beac2da7STheodore Ts'o 	TP_fast_assign(
10240562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1025beac2da7STheodore Ts'o 		__entry->ino	= inode->i_ino;
1026beac2da7STheodore Ts'o 		__entry->block	= block;
1027210c0526SAnatol Pomozov 		__entry->is_metadata = is_metadata;
1028210c0526SAnatol Pomozov 		__entry->mode	= inode->i_mode;
1029beac2da7STheodore Ts'o 	),
1030beac2da7STheodore Ts'o 
1031a269029dSTheodore Ts'o 	TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %llu",
10320562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
10330562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
10340562e0baSJiaying Zhang 		  __entry->mode, __entry->is_metadata, __entry->block)
1035beac2da7STheodore Ts'o );
1036beac2da7STheodore Ts'o 
1037f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_update_reserve_space,
1038d8990240SAditya Kali 	TP_PROTO(struct inode *inode, int used_blocks, int quota_claim),
1039f8ec9d68STheodore Ts'o 
1040d8990240SAditya Kali 	TP_ARGS(inode, used_blocks, quota_claim),
1041f8ec9d68STheodore Ts'o 
1042f8ec9d68STheodore Ts'o 	TP_STRUCT__entry(
10430562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1044f8ec9d68STheodore Ts'o 		__field(	ino_t,	ino			)
1045f8ec9d68STheodore Ts'o 		__field(	__u64,	i_blocks		)
1046f8ec9d68STheodore Ts'o 		__field(	int,	used_blocks		)
1047f8ec9d68STheodore Ts'o 		__field(	int,	reserved_data_blocks	)
1048f8ec9d68STheodore Ts'o 		__field(	int,	reserved_meta_blocks	)
1049f8ec9d68STheodore Ts'o 		__field(	int,	allocated_meta_blocks	)
1050d8990240SAditya Kali 		__field(	int,	quota_claim		)
1051210c0526SAnatol Pomozov 		__field(	__u16,	mode			)
1052f8ec9d68STheodore Ts'o 	),
1053f8ec9d68STheodore Ts'o 
1054f8ec9d68STheodore Ts'o 	TP_fast_assign(
10550562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1056f8ec9d68STheodore Ts'o 		__entry->ino	= inode->i_ino;
1057f8ec9d68STheodore Ts'o 		__entry->i_blocks = inode->i_blocks;
1058f8ec9d68STheodore Ts'o 		__entry->used_blocks = used_blocks;
1059d8990240SAditya Kali 		__entry->reserved_data_blocks =
1060d8990240SAditya Kali 				EXT4_I(inode)->i_reserved_data_blocks;
1061d8990240SAditya Kali 		__entry->reserved_meta_blocks =
1062d8990240SAditya Kali 				EXT4_I(inode)->i_reserved_meta_blocks;
1063d8990240SAditya Kali 		__entry->allocated_meta_blocks =
1064d8990240SAditya Kali 				EXT4_I(inode)->i_allocated_meta_blocks;
1065d8990240SAditya Kali 		__entry->quota_claim = quota_claim;
1066210c0526SAnatol Pomozov 		__entry->mode	= inode->i_mode;
1067f8ec9d68STheodore Ts'o 	),
1068f8ec9d68STheodore Ts'o 
10690562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d "
10700562e0baSJiaying Zhang 		  "reserved_data_blocks %d reserved_meta_blocks %d "
1071d8990240SAditya Kali 		  "allocated_meta_blocks %d quota_claim %d",
10720562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
10730562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
1074a9c667f8SLukas Czerner 		  __entry->mode, __entry->i_blocks,
1075f8ec9d68STheodore Ts'o 		  __entry->used_blocks, __entry->reserved_data_blocks,
1076d8990240SAditya Kali 		  __entry->reserved_meta_blocks, __entry->allocated_meta_blocks,
1077d8990240SAditya Kali 		  __entry->quota_claim)
1078f8ec9d68STheodore Ts'o );
1079f8ec9d68STheodore Ts'o 
1080f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_reserve_space,
1081f8ec9d68STheodore Ts'o 	TP_PROTO(struct inode *inode, int md_needed),
1082f8ec9d68STheodore Ts'o 
1083f8ec9d68STheodore Ts'o 	TP_ARGS(inode, md_needed),
1084f8ec9d68STheodore Ts'o 
1085f8ec9d68STheodore Ts'o 	TP_STRUCT__entry(
10860562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1087f8ec9d68STheodore Ts'o 		__field(	ino_t,	ino			)
1088f8ec9d68STheodore Ts'o 		__field(	__u64,	i_blocks		)
1089f8ec9d68STheodore Ts'o 		__field(	int,	md_needed		)
1090f8ec9d68STheodore Ts'o 		__field(	int,	reserved_data_blocks	)
1091f8ec9d68STheodore Ts'o 		__field(	int,	reserved_meta_blocks	)
1092210c0526SAnatol Pomozov 		__field(	__u16,  mode			)
1093f8ec9d68STheodore Ts'o 	),
1094f8ec9d68STheodore Ts'o 
1095f8ec9d68STheodore Ts'o 	TP_fast_assign(
10960562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1097f8ec9d68STheodore Ts'o 		__entry->ino	= inode->i_ino;
1098f8ec9d68STheodore Ts'o 		__entry->i_blocks = inode->i_blocks;
1099f8ec9d68STheodore Ts'o 		__entry->md_needed = md_needed;
1100f8ec9d68STheodore Ts'o 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1101f8ec9d68STheodore Ts'o 		__entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1102210c0526SAnatol Pomozov 		__entry->mode	= inode->i_mode;
1103f8ec9d68STheodore Ts'o 	),
1104f8ec9d68STheodore Ts'o 
11050562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu md_needed %d "
11060562e0baSJiaying Zhang 		  "reserved_data_blocks %d reserved_meta_blocks %d",
11070562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1108a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
1109a9c667f8SLukas Czerner 		  __entry->mode, __entry->i_blocks,
1110f8ec9d68STheodore Ts'o 		  __entry->md_needed, __entry->reserved_data_blocks,
1111f8ec9d68STheodore Ts'o 		  __entry->reserved_meta_blocks)
1112f8ec9d68STheodore Ts'o );
1113f8ec9d68STheodore Ts'o 
1114f8ec9d68STheodore Ts'o TRACE_EVENT(ext4_da_release_space,
1115f8ec9d68STheodore Ts'o 	TP_PROTO(struct inode *inode, int freed_blocks),
1116f8ec9d68STheodore Ts'o 
1117f8ec9d68STheodore Ts'o 	TP_ARGS(inode, freed_blocks),
1118f8ec9d68STheodore Ts'o 
1119f8ec9d68STheodore Ts'o 	TP_STRUCT__entry(
11200562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1121f8ec9d68STheodore Ts'o 		__field(	ino_t,	ino			)
1122f8ec9d68STheodore Ts'o 		__field(	__u64,	i_blocks		)
1123f8ec9d68STheodore Ts'o 		__field(	int,	freed_blocks		)
1124f8ec9d68STheodore Ts'o 		__field(	int,	reserved_data_blocks	)
1125f8ec9d68STheodore Ts'o 		__field(	int,	reserved_meta_blocks	)
1126f8ec9d68STheodore Ts'o 		__field(	int,	allocated_meta_blocks	)
1127210c0526SAnatol Pomozov 		__field(	__u16,  mode			)
1128f8ec9d68STheodore Ts'o 	),
1129f8ec9d68STheodore Ts'o 
1130f8ec9d68STheodore Ts'o 	TP_fast_assign(
11310562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1132f8ec9d68STheodore Ts'o 		__entry->ino	= inode->i_ino;
1133f8ec9d68STheodore Ts'o 		__entry->i_blocks = inode->i_blocks;
1134f8ec9d68STheodore Ts'o 		__entry->freed_blocks = freed_blocks;
1135f8ec9d68STheodore Ts'o 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1136f8ec9d68STheodore Ts'o 		__entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1137f8ec9d68STheodore Ts'o 		__entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks;
1138210c0526SAnatol Pomozov 		__entry->mode	= inode->i_mode;
1139f8ec9d68STheodore Ts'o 	),
1140f8ec9d68STheodore Ts'o 
11410562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d "
11420562e0baSJiaying Zhang 		  "reserved_data_blocks %d reserved_meta_blocks %d "
11430562e0baSJiaying Zhang 		  "allocated_meta_blocks %d",
11440562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1145a269029dSTheodore Ts'o 		  (unsigned long) __entry->ino,
1146a9c667f8SLukas Czerner 		  __entry->mode, __entry->i_blocks,
1147f8ec9d68STheodore Ts'o 		  __entry->freed_blocks, __entry->reserved_data_blocks,
1148f8ec9d68STheodore Ts'o 		  __entry->reserved_meta_blocks, __entry->allocated_meta_blocks)
1149f8ec9d68STheodore Ts'o );
1150f8ec9d68STheodore Ts'o 
1151f307333eSTheodore Ts'o DECLARE_EVENT_CLASS(ext4__bitmap_load,
1152f307333eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, unsigned long group),
1153f307333eSTheodore Ts'o 
1154f307333eSTheodore Ts'o 	TP_ARGS(sb, group),
1155f307333eSTheodore Ts'o 
1156f307333eSTheodore Ts'o 	TP_STRUCT__entry(
11570562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1158f307333eSTheodore Ts'o 		__field(	__u32,	group			)
1159f307333eSTheodore Ts'o 
1160f307333eSTheodore Ts'o 	),
1161f307333eSTheodore Ts'o 
1162f307333eSTheodore Ts'o 	TP_fast_assign(
11630562e0baSJiaying Zhang 		__entry->dev	= sb->s_dev;
1164f307333eSTheodore Ts'o 		__entry->group	= group;
1165f307333eSTheodore Ts'o 	),
1166f307333eSTheodore Ts'o 
1167a269029dSTheodore Ts'o 	TP_printk("dev %d,%d group %u",
11680562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
11690562e0baSJiaying Zhang 		  __entry->group)
1170f307333eSTheodore Ts'o );
1171f307333eSTheodore Ts'o 
1172f307333eSTheodore Ts'o DEFINE_EVENT(ext4__bitmap_load, ext4_mb_bitmap_load,
1173f307333eSTheodore Ts'o 
1174f307333eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, unsigned long group),
1175f307333eSTheodore Ts'o 
1176f307333eSTheodore Ts'o 	TP_ARGS(sb, group)
1177f307333eSTheodore Ts'o );
1178f307333eSTheodore Ts'o 
1179f307333eSTheodore Ts'o DEFINE_EVENT(ext4__bitmap_load, ext4_mb_buddy_bitmap_load,
1180f307333eSTheodore Ts'o 
1181f307333eSTheodore Ts'o 	TP_PROTO(struct super_block *sb, unsigned long group),
1182f307333eSTheodore Ts'o 
1183f307333eSTheodore Ts'o 	TP_ARGS(sb, group)
1184f307333eSTheodore Ts'o );
1185f8ec9d68STheodore Ts'o 
11860562e0baSJiaying Zhang DEFINE_EVENT(ext4__bitmap_load, ext4_read_block_bitmap_load,
11870562e0baSJiaying Zhang 
11880562e0baSJiaying Zhang 	TP_PROTO(struct super_block *sb, unsigned long group),
11890562e0baSJiaying Zhang 
11900562e0baSJiaying Zhang 	TP_ARGS(sb, group)
11910562e0baSJiaying Zhang );
11920562e0baSJiaying Zhang 
11930562e0baSJiaying Zhang DEFINE_EVENT(ext4__bitmap_load, ext4_load_inode_bitmap,
11940562e0baSJiaying Zhang 
11950562e0baSJiaying Zhang 	TP_PROTO(struct super_block *sb, unsigned long group),
11960562e0baSJiaying Zhang 
11970562e0baSJiaying Zhang 	TP_ARGS(sb, group)
11980562e0baSJiaying Zhang );
11990562e0baSJiaying Zhang 
12000562e0baSJiaying Zhang TRACE_EVENT(ext4_direct_IO_enter,
12010562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw),
12020562e0baSJiaying Zhang 
12030562e0baSJiaying Zhang 	TP_ARGS(inode, offset, len, rw),
12040562e0baSJiaying Zhang 
12050562e0baSJiaying Zhang 	TP_STRUCT__entry(
12060562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1207210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
12080562e0baSJiaying Zhang 		__field(	loff_t,	pos			)
12090562e0baSJiaying Zhang 		__field(	unsigned long,	len		)
12100562e0baSJiaying Zhang 		__field(	int,	rw			)
12110562e0baSJiaying Zhang 	),
12120562e0baSJiaying Zhang 
12130562e0baSJiaying Zhang 	TP_fast_assign(
12140562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1215210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
12160562e0baSJiaying Zhang 		__entry->pos	= offset;
12170562e0baSJiaying Zhang 		__entry->len	= len;
12180562e0baSJiaying Zhang 		__entry->rw	= rw;
12190562e0baSJiaying Zhang 	),
12200562e0baSJiaying Zhang 
1221a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d",
12220562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
12230562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
1224a9c667f8SLukas Czerner 		  __entry->pos, __entry->len, __entry->rw)
12250562e0baSJiaying Zhang );
12260562e0baSJiaying Zhang 
12270562e0baSJiaying Zhang TRACE_EVENT(ext4_direct_IO_exit,
1228a9c667f8SLukas Czerner 	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len,
1229a9c667f8SLukas Czerner 		 int rw, int ret),
12300562e0baSJiaying Zhang 
12310562e0baSJiaying Zhang 	TP_ARGS(inode, offset, len, rw, ret),
12320562e0baSJiaying Zhang 
12330562e0baSJiaying Zhang 	TP_STRUCT__entry(
12340562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1235210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
12360562e0baSJiaying Zhang 		__field(	loff_t,	pos			)
12370562e0baSJiaying Zhang 		__field(	unsigned long,	len		)
12380562e0baSJiaying Zhang 		__field(	int,	rw			)
12390562e0baSJiaying Zhang 		__field(	int,	ret			)
12400562e0baSJiaying Zhang 	),
12410562e0baSJiaying Zhang 
12420562e0baSJiaying Zhang 	TP_fast_assign(
12430562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1244210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
12450562e0baSJiaying Zhang 		__entry->pos	= offset;
12460562e0baSJiaying Zhang 		__entry->len	= len;
12470562e0baSJiaying Zhang 		__entry->rw	= rw;
12480562e0baSJiaying Zhang 		__entry->ret	= ret;
12490562e0baSJiaying Zhang 	),
12500562e0baSJiaying Zhang 
1251a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d ret %d",
12520562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
12530562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
1254a9c667f8SLukas Czerner 		  __entry->pos, __entry->len,
12550562e0baSJiaying Zhang 		  __entry->rw, __entry->ret)
12560562e0baSJiaying Zhang );
12570562e0baSJiaying Zhang 
12580562e0baSJiaying Zhang TRACE_EVENT(ext4_fallocate_enter,
12590562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
12600562e0baSJiaying Zhang 
12610562e0baSJiaying Zhang 	TP_ARGS(inode, offset, len, mode),
12620562e0baSJiaying Zhang 
12630562e0baSJiaying Zhang 	TP_STRUCT__entry(
12640562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1265210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
12660562e0baSJiaying Zhang 		__field(	loff_t,	pos			)
12670562e0baSJiaying Zhang 		__field(	loff_t,	len			)
12680562e0baSJiaying Zhang 		__field(	int,	mode			)
12690562e0baSJiaying Zhang 	),
12700562e0baSJiaying Zhang 
12710562e0baSJiaying Zhang 	TP_fast_assign(
12720562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1273210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
12740562e0baSJiaying Zhang 		__entry->pos	= offset;
12750562e0baSJiaying Zhang 		__entry->len	= len;
12760562e0baSJiaying Zhang 		__entry->mode	= mode;
12770562e0baSJiaying Zhang 	),
12780562e0baSJiaying Zhang 
1279a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %d",
12800562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1281a9c667f8SLukas Czerner 		  (unsigned long) __entry->ino, __entry->pos,
1282a9c667f8SLukas Czerner 		  __entry->len, __entry->mode)
12830562e0baSJiaying Zhang );
12840562e0baSJiaying Zhang 
12850562e0baSJiaying Zhang TRACE_EVENT(ext4_fallocate_exit,
1286a9c667f8SLukas Czerner 	TP_PROTO(struct inode *inode, loff_t offset,
1287a9c667f8SLukas Czerner 		 unsigned int max_blocks, int ret),
12880562e0baSJiaying Zhang 
12890562e0baSJiaying Zhang 	TP_ARGS(inode, offset, max_blocks, ret),
12900562e0baSJiaying Zhang 
12910562e0baSJiaying Zhang 	TP_STRUCT__entry(
12920562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1293210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
12940562e0baSJiaying Zhang 		__field(	loff_t,	pos			)
1295a9c667f8SLukas Czerner 		__field(	unsigned int,	blocks		)
12960562e0baSJiaying Zhang 		__field(	int, 	ret			)
12970562e0baSJiaying Zhang 	),
12980562e0baSJiaying Zhang 
12990562e0baSJiaying Zhang 	TP_fast_assign(
13000562e0baSJiaying Zhang 		__entry->dev	= inode->i_sb->s_dev;
1301210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
13020562e0baSJiaying Zhang 		__entry->pos	= offset;
13030562e0baSJiaying Zhang 		__entry->blocks	= max_blocks;
13040562e0baSJiaying Zhang 		__entry->ret	= ret;
13050562e0baSJiaying Zhang 	),
13060562e0baSJiaying Zhang 
1307a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu pos %lld blocks %u ret %d",
13080562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
13090562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
1310a9c667f8SLukas Czerner 		  __entry->pos, __entry->blocks,
13110562e0baSJiaying Zhang 		  __entry->ret)
13120562e0baSJiaying Zhang );
13130562e0baSJiaying Zhang 
13140562e0baSJiaying Zhang TRACE_EVENT(ext4_unlink_enter,
13150562e0baSJiaying Zhang 	TP_PROTO(struct inode *parent, struct dentry *dentry),
13160562e0baSJiaying Zhang 
13170562e0baSJiaying Zhang 	TP_ARGS(parent, dentry),
13180562e0baSJiaying Zhang 
13190562e0baSJiaying Zhang 	TP_STRUCT__entry(
13200562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1321210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
1322210c0526SAnatol Pomozov 		__field(	ino_t,	parent			)
1323210c0526SAnatol Pomozov 		__field(	loff_t,	size			)
13240562e0baSJiaying Zhang 	),
13250562e0baSJiaying Zhang 
13260562e0baSJiaying Zhang 	TP_fast_assign(
13270562e0baSJiaying Zhang 		__entry->dev		= dentry->d_inode->i_sb->s_dev;
1328210c0526SAnatol Pomozov 		__entry->ino		= dentry->d_inode->i_ino;
1329210c0526SAnatol Pomozov 		__entry->parent		= parent->i_ino;
1330210c0526SAnatol Pomozov 		__entry->size		= dentry->d_inode->i_size;
13310562e0baSJiaying Zhang 	),
13320562e0baSJiaying Zhang 
1333a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu size %lld parent %lu",
13340562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
13350562e0baSJiaying Zhang 		  (unsigned long) __entry->ino, __entry->size,
13360562e0baSJiaying Zhang 		  (unsigned long) __entry->parent)
13370562e0baSJiaying Zhang );
13380562e0baSJiaying Zhang 
13390562e0baSJiaying Zhang TRACE_EVENT(ext4_unlink_exit,
13400562e0baSJiaying Zhang 	TP_PROTO(struct dentry *dentry, int ret),
13410562e0baSJiaying Zhang 
13420562e0baSJiaying Zhang 	TP_ARGS(dentry, ret),
13430562e0baSJiaying Zhang 
13440562e0baSJiaying Zhang 	TP_STRUCT__entry(
13450562e0baSJiaying Zhang 		__field(	dev_t,	dev			)
1346210c0526SAnatol Pomozov 		__field(	ino_t,	ino			)
13470562e0baSJiaying Zhang 		__field(	int,	ret			)
13480562e0baSJiaying Zhang 	),
13490562e0baSJiaying Zhang 
13500562e0baSJiaying Zhang 	TP_fast_assign(
13510562e0baSJiaying Zhang 		__entry->dev		= dentry->d_inode->i_sb->s_dev;
1352210c0526SAnatol Pomozov 		__entry->ino		= dentry->d_inode->i_ino;
13530562e0baSJiaying Zhang 		__entry->ret		= ret;
13540562e0baSJiaying Zhang 	),
13550562e0baSJiaying Zhang 
1356a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu ret %d",
13570562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
13580562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
13590562e0baSJiaying Zhang 		  __entry->ret)
13600562e0baSJiaying Zhang );
13610562e0baSJiaying Zhang 
13620562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__truncate,
13630562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode),
13640562e0baSJiaying Zhang 
13650562e0baSJiaying Zhang 	TP_ARGS(inode),
13660562e0baSJiaying Zhang 
13670562e0baSJiaying Zhang 	TP_STRUCT__entry(
13680562e0baSJiaying Zhang 		__field(	dev_t,		dev		)
1369210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
1370a9c667f8SLukas Czerner 		__field(	__u64,		blocks		)
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->blocks	= inode->i_blocks;
13770562e0baSJiaying Zhang 	),
13780562e0baSJiaying Zhang 
1379a9c667f8SLukas Czerner 	TP_printk("dev %d,%d ino %lu blocks %llu",
13800562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1381a9c667f8SLukas Czerner 		  (unsigned long) __entry->ino, __entry->blocks)
13820562e0baSJiaying Zhang );
13830562e0baSJiaying Zhang 
13840562e0baSJiaying Zhang DEFINE_EVENT(ext4__truncate, ext4_truncate_enter,
13850562e0baSJiaying Zhang 
13860562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode),
13870562e0baSJiaying Zhang 
13880562e0baSJiaying Zhang 	TP_ARGS(inode)
13890562e0baSJiaying Zhang );
13900562e0baSJiaying Zhang 
13910562e0baSJiaying Zhang DEFINE_EVENT(ext4__truncate, ext4_truncate_exit,
13920562e0baSJiaying Zhang 
13930562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode),
13940562e0baSJiaying Zhang 
13950562e0baSJiaying Zhang 	TP_ARGS(inode)
13960562e0baSJiaying Zhang );
13970562e0baSJiaying Zhang 
13986f91bc5fSEric Gouriou /* 'ux' is the uninitialized extent. */
13996f91bc5fSEric Gouriou TRACE_EVENT(ext4_ext_convert_to_initialized_enter,
14006f91bc5fSEric Gouriou 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
14016f91bc5fSEric Gouriou 		 struct ext4_extent *ux),
14026f91bc5fSEric Gouriou 
14036f91bc5fSEric Gouriou 	TP_ARGS(inode, map, ux),
14046f91bc5fSEric Gouriou 
14056f91bc5fSEric Gouriou 	TP_STRUCT__entry(
14066f91bc5fSEric Gouriou 		__field(	dev_t,		dev	)
1407210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
14086f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	m_lblk	)
14096f91bc5fSEric Gouriou 		__field(	unsigned,	m_len	)
14106f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	u_lblk	)
14116f91bc5fSEric Gouriou 		__field(	unsigned,	u_len	)
14126f91bc5fSEric Gouriou 		__field(	ext4_fsblk_t,	u_pblk	)
14136f91bc5fSEric Gouriou 	),
14146f91bc5fSEric Gouriou 
14156f91bc5fSEric Gouriou 	TP_fast_assign(
14166f91bc5fSEric Gouriou 		__entry->dev		= inode->i_sb->s_dev;
1417210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
14186f91bc5fSEric Gouriou 		__entry->m_lblk		= map->m_lblk;
14196f91bc5fSEric Gouriou 		__entry->m_len		= map->m_len;
14206f91bc5fSEric Gouriou 		__entry->u_lblk		= le32_to_cpu(ux->ee_block);
14216f91bc5fSEric Gouriou 		__entry->u_len		= ext4_ext_get_actual_len(ux);
14226f91bc5fSEric Gouriou 		__entry->u_pblk		= ext4_ext_pblock(ux);
14236f91bc5fSEric Gouriou 	),
14246f91bc5fSEric Gouriou 
14256f91bc5fSEric Gouriou 	TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u u_lblk %u u_len %u "
14266f91bc5fSEric Gouriou 		  "u_pblk %llu",
14276f91bc5fSEric Gouriou 		  MAJOR(__entry->dev), MINOR(__entry->dev),
14286f91bc5fSEric Gouriou 		  (unsigned long) __entry->ino,
14296f91bc5fSEric Gouriou 		  __entry->m_lblk, __entry->m_len,
14306f91bc5fSEric Gouriou 		  __entry->u_lblk, __entry->u_len, __entry->u_pblk)
14316f91bc5fSEric Gouriou );
14326f91bc5fSEric Gouriou 
14336f91bc5fSEric Gouriou /*
14346f91bc5fSEric Gouriou  * 'ux' is the uninitialized extent.
14356f91bc5fSEric Gouriou  * 'ix' is the initialized extent to which blocks are transferred.
14366f91bc5fSEric Gouriou  */
14376f91bc5fSEric Gouriou TRACE_EVENT(ext4_ext_convert_to_initialized_fastpath,
14386f91bc5fSEric Gouriou 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
14396f91bc5fSEric Gouriou 		 struct ext4_extent *ux, struct ext4_extent *ix),
14406f91bc5fSEric Gouriou 
14416f91bc5fSEric Gouriou 	TP_ARGS(inode, map, ux, ix),
14426f91bc5fSEric Gouriou 
14436f91bc5fSEric Gouriou 	TP_STRUCT__entry(
14446f91bc5fSEric Gouriou 		__field(	dev_t,		dev	)
1445210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
14466f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	m_lblk	)
14476f91bc5fSEric Gouriou 		__field(	unsigned,	m_len	)
14486f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	u_lblk	)
14496f91bc5fSEric Gouriou 		__field(	unsigned,	u_len	)
14506f91bc5fSEric Gouriou 		__field(	ext4_fsblk_t,	u_pblk	)
14516f91bc5fSEric Gouriou 		__field(	ext4_lblk_t,	i_lblk	)
14526f91bc5fSEric Gouriou 		__field(	unsigned,	i_len	)
14536f91bc5fSEric Gouriou 		__field(	ext4_fsblk_t,	i_pblk	)
14546f91bc5fSEric Gouriou 	),
14556f91bc5fSEric Gouriou 
14566f91bc5fSEric Gouriou 	TP_fast_assign(
14576f91bc5fSEric Gouriou 		__entry->dev		= inode->i_sb->s_dev;
1458210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
14596f91bc5fSEric Gouriou 		__entry->m_lblk		= map->m_lblk;
14606f91bc5fSEric Gouriou 		__entry->m_len		= map->m_len;
14616f91bc5fSEric Gouriou 		__entry->u_lblk		= le32_to_cpu(ux->ee_block);
14626f91bc5fSEric Gouriou 		__entry->u_len		= ext4_ext_get_actual_len(ux);
14636f91bc5fSEric Gouriou 		__entry->u_pblk		= ext4_ext_pblock(ux);
14646f91bc5fSEric Gouriou 		__entry->i_lblk		= le32_to_cpu(ix->ee_block);
14656f91bc5fSEric Gouriou 		__entry->i_len		= ext4_ext_get_actual_len(ix);
14666f91bc5fSEric Gouriou 		__entry->i_pblk		= ext4_ext_pblock(ix);
14676f91bc5fSEric Gouriou 	),
14686f91bc5fSEric Gouriou 
14696f91bc5fSEric Gouriou 	TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u "
14706f91bc5fSEric Gouriou 		  "u_lblk %u u_len %u u_pblk %llu "
14716f91bc5fSEric Gouriou 		  "i_lblk %u i_len %u i_pblk %llu ",
14726f91bc5fSEric Gouriou 		  MAJOR(__entry->dev), MINOR(__entry->dev),
14736f91bc5fSEric Gouriou 		  (unsigned long) __entry->ino,
14746f91bc5fSEric Gouriou 		  __entry->m_lblk, __entry->m_len,
14756f91bc5fSEric Gouriou 		  __entry->u_lblk, __entry->u_len, __entry->u_pblk,
14766f91bc5fSEric Gouriou 		  __entry->i_lblk, __entry->i_len, __entry->i_pblk)
14776f91bc5fSEric Gouriou );
14786f91bc5fSEric Gouriou 
14790562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__map_blocks_enter,
14800562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1481a9c667f8SLukas Czerner 		 unsigned int len, unsigned int flags),
14820562e0baSJiaying Zhang 
14830562e0baSJiaying Zhang 	TP_ARGS(inode, lblk, len, flags),
14840562e0baSJiaying Zhang 
14850562e0baSJiaying Zhang 	TP_STRUCT__entry(
14860562e0baSJiaying Zhang 		__field(	dev_t,		dev		)
1487210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
14880562e0baSJiaying Zhang 		__field(	ext4_lblk_t,	lblk		)
1489a9c667f8SLukas Czerner 		__field(	unsigned int,	len		)
1490a9c667f8SLukas Czerner 		__field(	unsigned int,	flags		)
14910562e0baSJiaying Zhang 	),
14920562e0baSJiaying Zhang 
14930562e0baSJiaying Zhang 	TP_fast_assign(
14940562e0baSJiaying Zhang 		__entry->dev    = inode->i_sb->s_dev;
1495210c0526SAnatol Pomozov 		__entry->ino    = inode->i_ino;
14960562e0baSJiaying Zhang 		__entry->lblk	= lblk;
14970562e0baSJiaying Zhang 		__entry->len	= len;
14980562e0baSJiaying Zhang 		__entry->flags	= flags;
14990562e0baSJiaying Zhang 	),
15000562e0baSJiaying Zhang 
15010562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu lblk %u len %u flags %u",
15020562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
15030562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
1504a9c667f8SLukas Czerner 		  __entry->lblk, __entry->len, __entry->flags)
15050562e0baSJiaying Zhang );
15060562e0baSJiaying Zhang 
15070562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter,
15080562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
15090562e0baSJiaying Zhang 		 unsigned len, unsigned flags),
15100562e0baSJiaying Zhang 
15110562e0baSJiaying Zhang 	TP_ARGS(inode, lblk, len, flags)
15120562e0baSJiaying Zhang );
15130562e0baSJiaying Zhang 
15140562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter,
15150562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
15160562e0baSJiaying Zhang 		 unsigned len, unsigned flags),
15170562e0baSJiaying Zhang 
15180562e0baSJiaying Zhang 	TP_ARGS(inode, lblk, len, flags)
15190562e0baSJiaying Zhang );
15200562e0baSJiaying Zhang 
15210562e0baSJiaying Zhang DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
152219b303d8SZheng Liu 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret),
15230562e0baSJiaying Zhang 
152419b303d8SZheng Liu 	TP_ARGS(inode, map, ret),
15250562e0baSJiaying Zhang 
15260562e0baSJiaying Zhang 	TP_STRUCT__entry(
15270562e0baSJiaying Zhang 		__field(	dev_t,		dev		)
1528210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
15290562e0baSJiaying Zhang 		__field(	ext4_fsblk_t,	pblk		)
1530210c0526SAnatol Pomozov 		__field(	ext4_lblk_t,	lblk		)
1531a9c667f8SLukas Czerner 		__field(	unsigned int,	len		)
153219b303d8SZheng Liu 		__field(	unsigned int,	flags		)
15330562e0baSJiaying Zhang 		__field(	int,		ret		)
15340562e0baSJiaying Zhang 	),
15350562e0baSJiaying Zhang 
15360562e0baSJiaying Zhang 	TP_fast_assign(
15370562e0baSJiaying Zhang 		__entry->dev    = inode->i_sb->s_dev;
1538210c0526SAnatol Pomozov 		__entry->ino    = inode->i_ino;
153919b303d8SZheng Liu 		__entry->pblk	= map->m_pblk;
154019b303d8SZheng Liu 		__entry->lblk	= map->m_lblk;
154119b303d8SZheng Liu 		__entry->len	= map->m_len;
154219b303d8SZheng Liu 		__entry->flags	= map->m_flags;
15430562e0baSJiaying Zhang 		__entry->ret	= ret;
15440562e0baSJiaying Zhang 	),
15450562e0baSJiaying Zhang 
154619b303d8SZheng Liu 	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u flags %x ret %d",
15470562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
15480562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
1549a9c667f8SLukas Czerner 		  __entry->lblk, __entry->pblk,
155019b303d8SZheng Liu 		  __entry->len, __entry->flags, __entry->ret)
15510562e0baSJiaying Zhang );
15520562e0baSJiaying Zhang 
15530562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
155419b303d8SZheng Liu 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret),
15550562e0baSJiaying Zhang 
155619b303d8SZheng Liu 	TP_ARGS(inode, map, ret)
15570562e0baSJiaying Zhang );
15580562e0baSJiaying Zhang 
15590562e0baSJiaying Zhang DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
156019b303d8SZheng Liu 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int ret),
15610562e0baSJiaying Zhang 
156219b303d8SZheng Liu 	TP_ARGS(inode, map, ret)
15630562e0baSJiaying Zhang );
15640562e0baSJiaying Zhang 
15650562e0baSJiaying Zhang TRACE_EVENT(ext4_ext_load_extent,
15660562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk),
15670562e0baSJiaying Zhang 
15680562e0baSJiaying Zhang 	TP_ARGS(inode, lblk, pblk),
15690562e0baSJiaying Zhang 
15700562e0baSJiaying Zhang 	TP_STRUCT__entry(
15710562e0baSJiaying Zhang 		__field(	dev_t,		dev		)
1572210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
15730562e0baSJiaying Zhang 		__field(	ext4_fsblk_t,	pblk		)
1574210c0526SAnatol Pomozov 		__field(	ext4_lblk_t,	lblk		)
15750562e0baSJiaying Zhang 	),
15760562e0baSJiaying Zhang 
15770562e0baSJiaying Zhang 	TP_fast_assign(
15780562e0baSJiaying Zhang 		__entry->dev    = inode->i_sb->s_dev;
1579210c0526SAnatol Pomozov 		__entry->ino    = inode->i_ino;
15800562e0baSJiaying Zhang 		__entry->pblk	= pblk;
1581210c0526SAnatol Pomozov 		__entry->lblk	= lblk;
15820562e0baSJiaying Zhang 	),
15830562e0baSJiaying Zhang 
15840562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu",
15850562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
15860562e0baSJiaying Zhang 		  (unsigned long) __entry->ino,
1587a9c667f8SLukas Czerner 		  __entry->lblk, __entry->pblk)
15880562e0baSJiaying Zhang );
15890562e0baSJiaying Zhang 
15900562e0baSJiaying Zhang TRACE_EVENT(ext4_load_inode,
15910562e0baSJiaying Zhang 	TP_PROTO(struct inode *inode),
15920562e0baSJiaying Zhang 
15930562e0baSJiaying Zhang 	TP_ARGS(inode),
15940562e0baSJiaying Zhang 
15950562e0baSJiaying Zhang 	TP_STRUCT__entry(
15960562e0baSJiaying Zhang 		__field(	dev_t,	dev		)
1597210c0526SAnatol Pomozov 		__field(	ino_t,	ino		)
15980562e0baSJiaying Zhang 	),
15990562e0baSJiaying Zhang 
16000562e0baSJiaying Zhang 	TP_fast_assign(
16010562e0baSJiaying Zhang 		__entry->dev		= inode->i_sb->s_dev;
1602210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
16030562e0baSJiaying Zhang 	),
16040562e0baSJiaying Zhang 
16050562e0baSJiaying Zhang 	TP_printk("dev %d,%d ino %ld",
16060562e0baSJiaying Zhang 		  MAJOR(__entry->dev), MINOR(__entry->dev),
16070562e0baSJiaying Zhang 		  (unsigned long) __entry->ino)
16080562e0baSJiaying Zhang );
16090562e0baSJiaying Zhang 
161012706394STheodore Ts'o TRACE_EVENT(ext4_journal_start,
161112706394STheodore Ts'o 	TP_PROTO(struct super_block *sb, int nblocks, unsigned long IP),
161212706394STheodore Ts'o 
161312706394STheodore Ts'o 	TP_ARGS(sb, nblocks, IP),
161412706394STheodore Ts'o 
161512706394STheodore Ts'o 	TP_STRUCT__entry(
161612706394STheodore Ts'o 		__field(	dev_t,	dev			)
161712706394STheodore Ts'o 		__field(unsigned long,	ip			)
1618210c0526SAnatol Pomozov 		__field(	int,	nblocks			)
161912706394STheodore Ts'o 	),
162012706394STheodore Ts'o 
162112706394STheodore Ts'o 	TP_fast_assign(
162212706394STheodore Ts'o 		__entry->dev	 = sb->s_dev;
162312706394STheodore Ts'o 		__entry->ip	 = IP;
1624210c0526SAnatol Pomozov 		__entry->nblocks = nblocks;
162512706394STheodore Ts'o 	),
162612706394STheodore Ts'o 
162712706394STheodore Ts'o 	TP_printk("dev %d,%d nblocks %d caller %pF",
162812706394STheodore Ts'o 		  MAJOR(__entry->dev), MINOR(__entry->dev),
162912706394STheodore Ts'o 		  __entry->nblocks, (void *)__entry->ip)
163012706394STheodore Ts'o );
163112706394STheodore Ts'o 
1632b3d4c2b1STao Ma DECLARE_EVENT_CLASS(ext4__trim,
1633b3d4c2b1STao Ma 	TP_PROTO(struct super_block *sb,
1634b3d4c2b1STao Ma 		 ext4_group_t group,
1635b3d4c2b1STao Ma 		 ext4_grpblk_t start,
1636b3d4c2b1STao Ma 		 ext4_grpblk_t len),
1637b3d4c2b1STao Ma 
1638b3d4c2b1STao Ma 	TP_ARGS(sb, group, start, len),
1639b3d4c2b1STao Ma 
1640b3d4c2b1STao Ma 	TP_STRUCT__entry(
1641b3d4c2b1STao Ma 		__field(	int,	dev_major		)
1642b3d4c2b1STao Ma 		__field(	int,	dev_minor		)
1643b3d4c2b1STao Ma 		__field(	__u32, 	group			)
1644b3d4c2b1STao Ma 		__field(	int,	start			)
1645b3d4c2b1STao Ma 		__field(	int,	len			)
1646b3d4c2b1STao Ma 	),
1647b3d4c2b1STao Ma 
1648b3d4c2b1STao Ma 	TP_fast_assign(
1649b3d4c2b1STao Ma 		__entry->dev_major	= MAJOR(sb->s_dev);
1650b3d4c2b1STao Ma 		__entry->dev_minor	= MINOR(sb->s_dev);
1651b3d4c2b1STao Ma 		__entry->group		= group;
1652b3d4c2b1STao Ma 		__entry->start		= start;
1653b3d4c2b1STao Ma 		__entry->len		= len;
1654b3d4c2b1STao Ma 	),
1655b3d4c2b1STao Ma 
1656b3d4c2b1STao Ma 	TP_printk("dev %d,%d group %u, start %d, len %d",
1657b3d4c2b1STao Ma 		  __entry->dev_major, __entry->dev_minor,
1658b3d4c2b1STao Ma 		  __entry->group, __entry->start, __entry->len)
1659b3d4c2b1STao Ma );
1660b3d4c2b1STao Ma 
1661b3d4c2b1STao Ma DEFINE_EVENT(ext4__trim, ext4_trim_extent,
1662b3d4c2b1STao Ma 
1663b3d4c2b1STao Ma 	TP_PROTO(struct super_block *sb,
1664b3d4c2b1STao Ma 		 ext4_group_t group,
1665b3d4c2b1STao Ma 		 ext4_grpblk_t start,
1666b3d4c2b1STao Ma 		 ext4_grpblk_t len),
1667b3d4c2b1STao Ma 
1668b3d4c2b1STao Ma 	TP_ARGS(sb, group, start, len)
1669b3d4c2b1STao Ma );
1670b3d4c2b1STao Ma 
1671b3d4c2b1STao Ma DEFINE_EVENT(ext4__trim, ext4_trim_all_free,
1672b3d4c2b1STao Ma 
1673b3d4c2b1STao Ma 	TP_PROTO(struct super_block *sb,
1674b3d4c2b1STao Ma 		 ext4_group_t group,
1675b3d4c2b1STao Ma 		 ext4_grpblk_t start,
1676b3d4c2b1STao Ma 		 ext4_grpblk_t len),
1677b3d4c2b1STao Ma 
1678b3d4c2b1STao Ma 	TP_ARGS(sb, group, start, len)
1679b3d4c2b1STao Ma );
1680b3d4c2b1STao Ma 
1681d8990240SAditya Kali TRACE_EVENT(ext4_ext_handle_uninitialized_extents,
1682b5645534SZheng Liu 	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int flags,
1683d8990240SAditya Kali 		 unsigned int allocated, ext4_fsblk_t newblock),
1684d8990240SAditya Kali 
1685b5645534SZheng Liu 	TP_ARGS(inode, map, flags, allocated, newblock),
1686d8990240SAditya Kali 
1687d8990240SAditya Kali 	TP_STRUCT__entry(
1688d8990240SAditya Kali 		__field(	dev_t,		dev		)
1689210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
1690210c0526SAnatol Pomozov 		__field(	int,		flags		)
1691d8990240SAditya Kali 		__field(	ext4_lblk_t,	lblk		)
1692d8990240SAditya Kali 		__field(	ext4_fsblk_t,	pblk		)
1693d8990240SAditya Kali 		__field(	unsigned int,	len		)
1694d8990240SAditya Kali 		__field(	unsigned int,	allocated	)
1695d8990240SAditya Kali 		__field(	ext4_fsblk_t,	newblk		)
1696d8990240SAditya Kali 	),
1697d8990240SAditya Kali 
1698d8990240SAditya Kali 	TP_fast_assign(
1699d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
1700210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
1701b5645534SZheng Liu 		__entry->flags		= flags;
1702d8990240SAditya Kali 		__entry->lblk		= map->m_lblk;
1703d8990240SAditya Kali 		__entry->pblk		= map->m_pblk;
1704d8990240SAditya Kali 		__entry->len		= map->m_len;
1705d8990240SAditya Kali 		__entry->allocated	= allocated;
1706d8990240SAditya Kali 		__entry->newblk		= newblock;
1707d8990240SAditya Kali 	),
1708d8990240SAditya Kali 
1709b5645534SZheng Liu 	TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %x "
1710d8990240SAditya Kali 		  "allocated %d newblock %llu",
1711d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1712d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1713d8990240SAditya Kali 		  (unsigned) __entry->lblk, (unsigned long long) __entry->pblk,
1714d8990240SAditya Kali 		  __entry->len, __entry->flags,
1715d8990240SAditya Kali 		  (unsigned int) __entry->allocated,
1716d8990240SAditya Kali 		  (unsigned long long) __entry->newblk)
1717d8990240SAditya Kali );
1718d8990240SAditya Kali 
1719d8990240SAditya Kali TRACE_EVENT(ext4_get_implied_cluster_alloc_exit,
1720d8990240SAditya Kali 	TP_PROTO(struct super_block *sb, struct ext4_map_blocks *map, int ret),
1721d8990240SAditya Kali 
1722d8990240SAditya Kali 	TP_ARGS(sb, map, ret),
1723d8990240SAditya Kali 
1724d8990240SAditya Kali 	TP_STRUCT__entry(
1725d8990240SAditya Kali 		__field(	dev_t,		dev	)
1726210c0526SAnatol Pomozov 		__field(	unsigned int,	flags	)
1727d8990240SAditya Kali 		__field(	ext4_lblk_t,	lblk	)
1728d8990240SAditya Kali 		__field(	ext4_fsblk_t,	pblk	)
1729d8990240SAditya Kali 		__field(	unsigned int,	len	)
1730d8990240SAditya Kali 		__field(	int,		ret	)
1731d8990240SAditya Kali 	),
1732d8990240SAditya Kali 
1733d8990240SAditya Kali 	TP_fast_assign(
1734d8990240SAditya Kali 		__entry->dev	= sb->s_dev;
1735210c0526SAnatol Pomozov 		__entry->flags	= map->m_flags;
1736d8990240SAditya Kali 		__entry->lblk	= map->m_lblk;
1737d8990240SAditya Kali 		__entry->pblk	= map->m_pblk;
1738d8990240SAditya Kali 		__entry->len	= map->m_len;
1739d8990240SAditya Kali 		__entry->ret	= ret;
1740d8990240SAditya Kali 	),
1741d8990240SAditya Kali 
1742d8990240SAditya Kali 	TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %u ret %d",
1743d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1744d8990240SAditya Kali 		  __entry->lblk, (unsigned long long) __entry->pblk,
1745d8990240SAditya Kali 		  __entry->len, __entry->flags, __entry->ret)
1746d8990240SAditya Kali );
1747d8990240SAditya Kali 
1748d8990240SAditya Kali TRACE_EVENT(ext4_ext_put_in_cache,
1749d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len,
1750d8990240SAditya Kali 		 ext4_fsblk_t start),
1751d8990240SAditya Kali 
1752d8990240SAditya Kali 	TP_ARGS(inode, lblk, len, start),
1753d8990240SAditya Kali 
1754d8990240SAditya Kali 	TP_STRUCT__entry(
1755d8990240SAditya Kali 		__field(	dev_t,		dev	)
1756210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
1757d8990240SAditya Kali 		__field(	ext4_lblk_t,	lblk	)
1758d8990240SAditya Kali 		__field(	unsigned int,	len	)
1759d8990240SAditya Kali 		__field(	ext4_fsblk_t,	start	)
1760d8990240SAditya Kali 	),
1761d8990240SAditya Kali 
1762d8990240SAditya Kali 	TP_fast_assign(
1763d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
1764210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
1765d8990240SAditya Kali 		__entry->lblk	= lblk;
1766d8990240SAditya Kali 		__entry->len	= len;
1767d8990240SAditya Kali 		__entry->start	= start;
1768d8990240SAditya Kali 	),
1769d8990240SAditya Kali 
1770d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu lblk %u len %u start %llu",
1771d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1772d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1773d8990240SAditya Kali 		  (unsigned) __entry->lblk,
1774d8990240SAditya Kali 		  __entry->len,
1775d8990240SAditya Kali 		  (unsigned long long) __entry->start)
1776d8990240SAditya Kali );
1777d8990240SAditya Kali 
1778d8990240SAditya Kali TRACE_EVENT(ext4_ext_in_cache,
1779d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, int ret),
1780d8990240SAditya Kali 
1781d8990240SAditya Kali 	TP_ARGS(inode, lblk, ret),
1782d8990240SAditya Kali 
1783d8990240SAditya Kali 	TP_STRUCT__entry(
1784d8990240SAditya Kali 		__field(	dev_t,		dev	)
1785210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
1786d8990240SAditya Kali 		__field(	ext4_lblk_t,	lblk	)
1787d8990240SAditya Kali 		__field(	int,		ret	)
1788d8990240SAditya Kali 	),
1789d8990240SAditya Kali 
1790d8990240SAditya Kali 	TP_fast_assign(
1791d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
1792210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
1793d8990240SAditya Kali 		__entry->lblk	= lblk;
1794d8990240SAditya Kali 		__entry->ret	= ret;
1795d8990240SAditya Kali 	),
1796d8990240SAditya Kali 
1797d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu lblk %u ret %d",
1798d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1799d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1800d8990240SAditya Kali 		  (unsigned) __entry->lblk,
1801d8990240SAditya Kali 		  __entry->ret)
1802d8990240SAditya Kali 
1803d8990240SAditya Kali );
1804d8990240SAditya Kali 
1805d8990240SAditya Kali TRACE_EVENT(ext4_find_delalloc_range,
1806d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t from, ext4_lblk_t to,
1807d8990240SAditya Kali 		int reverse, int found, ext4_lblk_t found_blk),
1808d8990240SAditya Kali 
1809d8990240SAditya Kali 	TP_ARGS(inode, from, to, reverse, found, found_blk),
1810d8990240SAditya Kali 
1811d8990240SAditya Kali 	TP_STRUCT__entry(
1812d8990240SAditya Kali 		__field(	dev_t,		dev		)
1813210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
1814d8990240SAditya Kali 		__field(	ext4_lblk_t,	from		)
1815d8990240SAditya Kali 		__field(	ext4_lblk_t,	to		)
1816d8990240SAditya Kali 		__field(	int,		reverse		)
1817d8990240SAditya Kali 		__field(	int,		found		)
1818d8990240SAditya Kali 		__field(	ext4_lblk_t,	found_blk	)
1819d8990240SAditya Kali 	),
1820d8990240SAditya Kali 
1821d8990240SAditya Kali 	TP_fast_assign(
1822d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
1823210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
1824d8990240SAditya Kali 		__entry->from		= from;
1825d8990240SAditya Kali 		__entry->to		= to;
1826d8990240SAditya Kali 		__entry->reverse	= reverse;
1827d8990240SAditya Kali 		__entry->found		= found;
1828d8990240SAditya Kali 		__entry->found_blk	= found_blk;
1829d8990240SAditya Kali 	),
1830d8990240SAditya Kali 
1831d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu from %u to %u reverse %d found %d "
1832d8990240SAditya Kali 		  "(blk = %u)",
1833d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1834d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1835d8990240SAditya Kali 		  (unsigned) __entry->from, (unsigned) __entry->to,
1836d8990240SAditya Kali 		  __entry->reverse, __entry->found,
1837d8990240SAditya Kali 		  (unsigned) __entry->found_blk)
1838d8990240SAditya Kali );
1839d8990240SAditya Kali 
1840d8990240SAditya Kali TRACE_EVENT(ext4_get_reserved_cluster_alloc,
1841d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len),
1842d8990240SAditya Kali 
1843d8990240SAditya Kali 	TP_ARGS(inode, lblk, len),
1844d8990240SAditya Kali 
1845d8990240SAditya Kali 	TP_STRUCT__entry(
1846d8990240SAditya Kali 		__field(	dev_t,		dev	)
1847210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
1848d8990240SAditya Kali 		__field(	ext4_lblk_t,	lblk	)
1849d8990240SAditya Kali 		__field(	unsigned int,	len	)
1850d8990240SAditya Kali 	),
1851d8990240SAditya Kali 
1852d8990240SAditya Kali 	TP_fast_assign(
1853d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
1854210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
1855d8990240SAditya Kali 		__entry->lblk	= lblk;
1856d8990240SAditya Kali 		__entry->len	= len;
1857d8990240SAditya Kali 	),
1858d8990240SAditya Kali 
1859d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu lblk %u len %u",
1860d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1861d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1862d8990240SAditya Kali 		  (unsigned) __entry->lblk,
1863d8990240SAditya Kali 		  __entry->len)
1864d8990240SAditya Kali );
1865d8990240SAditya Kali 
1866d8990240SAditya Kali TRACE_EVENT(ext4_ext_show_extent,
1867d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk,
1868d8990240SAditya Kali 		 unsigned short len),
1869d8990240SAditya Kali 
1870d8990240SAditya Kali 	TP_ARGS(inode, lblk, pblk, len),
1871d8990240SAditya Kali 
1872d8990240SAditya Kali 	TP_STRUCT__entry(
1873d8990240SAditya Kali 		__field(	dev_t,		dev	)
1874210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
1875d8990240SAditya Kali 		__field(	ext4_fsblk_t,	pblk	)
1876210c0526SAnatol Pomozov 		__field(	ext4_lblk_t,	lblk	)
1877d8990240SAditya Kali 		__field(	unsigned short,	len	)
1878d8990240SAditya Kali 	),
1879d8990240SAditya Kali 
1880d8990240SAditya Kali 	TP_fast_assign(
1881d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
1882210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
1883d8990240SAditya Kali 		__entry->pblk	= pblk;
1884210c0526SAnatol Pomozov 		__entry->lblk	= lblk;
1885d8990240SAditya Kali 		__entry->len	= len;
1886d8990240SAditya Kali 	),
1887d8990240SAditya Kali 
1888d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u",
1889d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1890d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1891d8990240SAditya Kali 		  (unsigned) __entry->lblk,
1892d8990240SAditya Kali 		  (unsigned long long) __entry->pblk,
1893d8990240SAditya Kali 		  (unsigned short) __entry->len)
1894d8990240SAditya Kali );
1895d8990240SAditya Kali 
1896d8990240SAditya Kali TRACE_EVENT(ext4_remove_blocks,
1897d8990240SAditya Kali 	    TP_PROTO(struct inode *inode, struct ext4_extent *ex,
1898d8990240SAditya Kali 		ext4_lblk_t from, ext4_fsblk_t to,
1899d8990240SAditya Kali 		ext4_fsblk_t partial_cluster),
1900d8990240SAditya Kali 
1901d8990240SAditya Kali 	TP_ARGS(inode, ex, from, to, partial_cluster),
1902d8990240SAditya Kali 
1903d8990240SAditya Kali 	TP_STRUCT__entry(
1904d8990240SAditya Kali 		__field(	dev_t,		dev	)
1905210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
1906d8990240SAditya Kali 		__field(	ext4_lblk_t,	from	)
1907d8990240SAditya Kali 		__field(	ext4_lblk_t,	to	)
1908d8990240SAditya Kali 		__field(	ext4_fsblk_t,	partial	)
1909210c0526SAnatol Pomozov 		__field(	ext4_fsblk_t,	ee_pblk	)
1910210c0526SAnatol Pomozov 		__field(	ext4_lblk_t,	ee_lblk	)
1911210c0526SAnatol Pomozov 		__field(	unsigned short,	ee_len	)
1912d8990240SAditya Kali 	),
1913d8990240SAditya Kali 
1914d8990240SAditya Kali 	TP_fast_assign(
1915d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
1916210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
1917d8990240SAditya Kali 		__entry->from		= from;
1918d8990240SAditya Kali 		__entry->to		= to;
1919d8990240SAditya Kali 		__entry->partial	= partial_cluster;
1920210c0526SAnatol Pomozov 		__entry->ee_pblk	= ext4_ext_pblock(ex);
1921210c0526SAnatol Pomozov 		__entry->ee_lblk	= cpu_to_le32(ex->ee_block);
1922210c0526SAnatol Pomozov 		__entry->ee_len		= ext4_ext_get_actual_len(ex);
1923d8990240SAditya Kali 	),
1924d8990240SAditya Kali 
1925d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu extent [%u(%llu), %u]"
1926d8990240SAditya Kali 		  "from %u to %u partial_cluster %u",
1927d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1928d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1929d8990240SAditya Kali 		  (unsigned) __entry->ee_lblk,
1930d8990240SAditya Kali 		  (unsigned long long) __entry->ee_pblk,
1931d8990240SAditya Kali 		  (unsigned short) __entry->ee_len,
1932d8990240SAditya Kali 		  (unsigned) __entry->from,
1933d8990240SAditya Kali 		  (unsigned) __entry->to,
1934d8990240SAditya Kali 		  (unsigned) __entry->partial)
1935d8990240SAditya Kali );
1936d8990240SAditya Kali 
1937d8990240SAditya Kali TRACE_EVENT(ext4_ext_rm_leaf,
1938d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t start,
1939d8990240SAditya Kali 		 struct ext4_extent *ex, ext4_fsblk_t partial_cluster),
1940d8990240SAditya Kali 
1941d8990240SAditya Kali 	TP_ARGS(inode, start, ex, partial_cluster),
1942d8990240SAditya Kali 
1943d8990240SAditya Kali 	TP_STRUCT__entry(
1944d8990240SAditya Kali 		__field(	dev_t,		dev	)
1945210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
1946210c0526SAnatol Pomozov 		__field(	ext4_fsblk_t,	partial	)
1947d8990240SAditya Kali 		__field(	ext4_lblk_t,	start	)
1948d8990240SAditya Kali 		__field(	ext4_lblk_t,	ee_lblk	)
1949d8990240SAditya Kali 		__field(	ext4_fsblk_t,	ee_pblk	)
1950d8990240SAditya Kali 		__field(	short,		ee_len	)
1951d8990240SAditya Kali 	),
1952d8990240SAditya Kali 
1953d8990240SAditya Kali 	TP_fast_assign(
1954d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
1955210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
1956210c0526SAnatol Pomozov 		__entry->partial	= partial_cluster;
1957d8990240SAditya Kali 		__entry->start		= start;
1958d8990240SAditya Kali 		__entry->ee_lblk	= le32_to_cpu(ex->ee_block);
1959d8990240SAditya Kali 		__entry->ee_pblk	= ext4_ext_pblock(ex);
1960d8990240SAditya Kali 		__entry->ee_len		= ext4_ext_get_actual_len(ex);
1961d8990240SAditya Kali 	),
1962d8990240SAditya Kali 
1963d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu start_lblk %u last_extent [%u(%llu), %u]"
1964d8990240SAditya Kali 		  "partial_cluster %u",
1965d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1966d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1967d8990240SAditya Kali 		  (unsigned) __entry->start,
1968d8990240SAditya Kali 		  (unsigned) __entry->ee_lblk,
1969d8990240SAditya Kali 		  (unsigned long long) __entry->ee_pblk,
1970d8990240SAditya Kali 		  (unsigned short) __entry->ee_len,
1971d8990240SAditya Kali 		  (unsigned) __entry->partial)
1972d8990240SAditya Kali );
1973d8990240SAditya Kali 
1974d8990240SAditya Kali TRACE_EVENT(ext4_ext_rm_idx,
1975d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_fsblk_t pblk),
1976d8990240SAditya Kali 
1977d8990240SAditya Kali 	TP_ARGS(inode, pblk),
1978d8990240SAditya Kali 
1979d8990240SAditya Kali 	TP_STRUCT__entry(
1980d8990240SAditya Kali 		__field(	dev_t,		dev	)
1981210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
1982d8990240SAditya Kali 		__field(	ext4_fsblk_t,	pblk	)
1983d8990240SAditya Kali 	),
1984d8990240SAditya Kali 
1985d8990240SAditya Kali 	TP_fast_assign(
1986d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
1987210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
1988d8990240SAditya Kali 		__entry->pblk	= pblk;
1989d8990240SAditya Kali 	),
1990d8990240SAditya Kali 
1991d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu index_pblk %llu",
1992d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1993d8990240SAditya Kali 		  (unsigned long) __entry->ino,
1994d8990240SAditya Kali 		  (unsigned long long) __entry->pblk)
1995d8990240SAditya Kali );
1996d8990240SAditya Kali 
1997d8990240SAditya Kali TRACE_EVENT(ext4_ext_remove_space,
1998d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t start, int depth),
1999d8990240SAditya Kali 
2000d8990240SAditya Kali 	TP_ARGS(inode, start, depth),
2001d8990240SAditya Kali 
2002d8990240SAditya Kali 	TP_STRUCT__entry(
2003d8990240SAditya Kali 		__field(	dev_t,		dev	)
2004210c0526SAnatol Pomozov 		__field(	ino_t,		ino	)
2005d8990240SAditya Kali 		__field(	ext4_lblk_t,	start	)
2006d8990240SAditya Kali 		__field(	int,		depth	)
2007d8990240SAditya Kali 	),
2008d8990240SAditya Kali 
2009d8990240SAditya Kali 	TP_fast_assign(
2010d8990240SAditya Kali 		__entry->dev	= inode->i_sb->s_dev;
2011210c0526SAnatol Pomozov 		__entry->ino	= inode->i_ino;
2012d8990240SAditya Kali 		__entry->start	= start;
2013d8990240SAditya Kali 		__entry->depth	= depth;
2014d8990240SAditya Kali 	),
2015d8990240SAditya Kali 
2016d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu since %u depth %d",
2017d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2018d8990240SAditya Kali 		  (unsigned long) __entry->ino,
2019d8990240SAditya Kali 		  (unsigned) __entry->start,
2020d8990240SAditya Kali 		  __entry->depth)
2021d8990240SAditya Kali );
2022d8990240SAditya Kali 
2023d8990240SAditya Kali TRACE_EVENT(ext4_ext_remove_space_done,
2024d8990240SAditya Kali 	TP_PROTO(struct inode *inode, ext4_lblk_t start, int depth,
2025d8990240SAditya Kali 		ext4_lblk_t partial, unsigned short eh_entries),
2026d8990240SAditya Kali 
2027d8990240SAditya Kali 	TP_ARGS(inode, start, depth, partial, eh_entries),
2028d8990240SAditya Kali 
2029d8990240SAditya Kali 	TP_STRUCT__entry(
2030d8990240SAditya Kali 		__field(	dev_t,		dev		)
2031210c0526SAnatol Pomozov 		__field(	ino_t,		ino		)
2032d8990240SAditya Kali 		__field(	ext4_lblk_t,	start		)
2033d8990240SAditya Kali 		__field(	int,		depth		)
2034d8990240SAditya Kali 		__field(	ext4_lblk_t,	partial		)
2035d8990240SAditya Kali 		__field(	unsigned short,	eh_entries	)
2036d8990240SAditya Kali 	),
2037d8990240SAditya Kali 
2038d8990240SAditya Kali 	TP_fast_assign(
2039d8990240SAditya Kali 		__entry->dev		= inode->i_sb->s_dev;
2040210c0526SAnatol Pomozov 		__entry->ino		= inode->i_ino;
2041d8990240SAditya Kali 		__entry->start		= start;
2042d8990240SAditya Kali 		__entry->depth		= depth;
2043d8990240SAditya Kali 		__entry->partial	= partial;
2044d8990240SAditya Kali 		__entry->eh_entries	= eh_entries;
2045d8990240SAditya Kali 	),
2046d8990240SAditya Kali 
2047d8990240SAditya Kali 	TP_printk("dev %d,%d ino %lu since %u depth %d partial %u "
2048d8990240SAditya Kali 		  "remaining_entries %u",
2049d8990240SAditya Kali 		  MAJOR(__entry->dev), MINOR(__entry->dev),
2050d8990240SAditya Kali 		  (unsigned long) __entry->ino,
2051d8990240SAditya Kali 		  (unsigned) __entry->start,
2052d8990240SAditya Kali 		  __entry->depth,
2053d8990240SAditya Kali 		  (unsigned) __entry->partial,
2054d8990240SAditya Kali 		  (unsigned short) __entry->eh_entries)
2055d8990240SAditya Kali );
2056d8990240SAditya Kali 
20579bffad1eSTheodore Ts'o #endif /* _TRACE_EXT4_H */
20589bffad1eSTheodore Ts'o 
20599bffad1eSTheodore Ts'o /* This part must be outside protection */
20609bffad1eSTheodore Ts'o #include <trace/define_trace.h>
2061