1#undef TRACE_SYSTEM
2#define TRACE_SYSTEM ext4
3
4#if !defined(_TRACE_EXT4_H) || defined(TRACE_HEADER_MULTI_READ)
5#define _TRACE_EXT4_H
6
7#include <linux/writeback.h>
8#include <linux/tracepoint.h>
9
10struct ext4_allocation_context;
11struct ext4_allocation_request;
12struct ext4_extent;
13struct ext4_prealloc_space;
14struct ext4_inode_info;
15struct mpage_da_data;
16struct ext4_map_blocks;
17struct extent_status;
18
19#define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
20
21#define show_mballoc_flags(flags) __print_flags(flags, "|",	\
22	{ EXT4_MB_HINT_MERGE,		"HINT_MERGE" },		\
23	{ EXT4_MB_HINT_RESERVED,	"HINT_RESV" },		\
24	{ EXT4_MB_HINT_METADATA,	"HINT_MDATA" },		\
25	{ EXT4_MB_HINT_FIRST,		"HINT_FIRST" },		\
26	{ EXT4_MB_HINT_BEST,		"HINT_BEST" },		\
27	{ EXT4_MB_HINT_DATA,		"HINT_DATA" },		\
28	{ EXT4_MB_HINT_NOPREALLOC,	"HINT_NOPREALLOC" },	\
29	{ EXT4_MB_HINT_GROUP_ALLOC,	"HINT_GRP_ALLOC" },	\
30	{ EXT4_MB_HINT_GOAL_ONLY,	"HINT_GOAL_ONLY" },	\
31	{ EXT4_MB_HINT_TRY_GOAL,	"HINT_TRY_GOAL" },	\
32	{ EXT4_MB_DELALLOC_RESERVED,	"DELALLOC_RESV" },	\
33	{ EXT4_MB_STREAM_ALLOC,		"STREAM_ALLOC" },	\
34	{ EXT4_MB_USE_ROOT_BLOCKS,	"USE_ROOT_BLKS" },	\
35	{ EXT4_MB_USE_RESERVED,		"USE_RESV" })
36
37#define show_map_flags(flags) __print_flags(flags, "|",			\
38	{ EXT4_GET_BLOCKS_CREATE,		"CREATE" },		\
39	{ EXT4_GET_BLOCKS_UNWRIT_EXT,		"UNWRIT" },		\
40	{ EXT4_GET_BLOCKS_DELALLOC_RESERVE,	"DELALLOC" },		\
41	{ EXT4_GET_BLOCKS_PRE_IO,		"PRE_IO" },		\
42	{ EXT4_GET_BLOCKS_CONVERT,		"CONVERT" },		\
43	{ EXT4_GET_BLOCKS_METADATA_NOFAIL,	"METADATA_NOFAIL" },	\
44	{ EXT4_GET_BLOCKS_NO_NORMALIZE,		"NO_NORMALIZE" },	\
45	{ EXT4_GET_BLOCKS_KEEP_SIZE,		"KEEP_SIZE" },		\
46	{ EXT4_GET_BLOCKS_NO_LOCK,		"NO_LOCK" })
47
48#define show_mflags(flags) __print_flags(flags, "",	\
49	{ EXT4_MAP_NEW,		"N" },			\
50	{ EXT4_MAP_MAPPED,	"M" },			\
51	{ EXT4_MAP_UNWRITTEN,	"U" },			\
52	{ EXT4_MAP_BOUNDARY,	"B" })
53
54#define show_free_flags(flags) __print_flags(flags, "|",	\
55	{ EXT4_FREE_BLOCKS_METADATA,		"METADATA" },	\
56	{ EXT4_FREE_BLOCKS_FORGET,		"FORGET" },	\
57	{ EXT4_FREE_BLOCKS_VALIDATED,		"VALIDATED" },	\
58	{ EXT4_FREE_BLOCKS_NO_QUOT_UPDATE,	"NO_QUOTA" },	\
59	{ EXT4_FREE_BLOCKS_NOFREE_FIRST_CLUSTER,"1ST_CLUSTER" },\
60	{ EXT4_FREE_BLOCKS_NOFREE_LAST_CLUSTER,	"LAST_CLUSTER" })
61
62#define show_extent_status(status) __print_flags(status, "",	\
63	{ EXTENT_STATUS_WRITTEN,	"W" },			\
64	{ EXTENT_STATUS_UNWRITTEN,	"U" },			\
65	{ EXTENT_STATUS_DELAYED,	"D" },			\
66	{ EXTENT_STATUS_HOLE,		"H" })
67
68#define show_falloc_mode(mode) __print_flags(mode, "|",		\
69	{ FALLOC_FL_KEEP_SIZE,		"KEEP_SIZE"},		\
70	{ FALLOC_FL_PUNCH_HOLE,		"PUNCH_HOLE"},		\
71	{ FALLOC_FL_NO_HIDE_STALE,	"NO_HIDE_STALE"},	\
72	{ FALLOC_FL_COLLAPSE_RANGE,	"COLLAPSE_RANGE"},	\
73	{ FALLOC_FL_ZERO_RANGE,		"ZERO_RANGE"})
74
75
76TRACE_EVENT(ext4_other_inode_update_time,
77	TP_PROTO(struct inode *inode, ino_t orig_ino),
78
79	TP_ARGS(inode, orig_ino),
80
81	TP_STRUCT__entry(
82		__field(	dev_t,	dev			)
83		__field(	ino_t,	ino			)
84		__field(	ino_t,	orig_ino		)
85		__field(	uid_t,	uid			)
86		__field(	gid_t,	gid			)
87		__field(	__u16, mode			)
88	),
89
90	TP_fast_assign(
91		__entry->orig_ino = orig_ino;
92		__entry->dev	= inode->i_sb->s_dev;
93		__entry->ino	= inode->i_ino;
94		__entry->uid	= i_uid_read(inode);
95		__entry->gid	= i_gid_read(inode);
96		__entry->mode	= inode->i_mode;
97	),
98
99	TP_printk("dev %d,%d orig_ino %lu ino %lu mode 0%o uid %u gid %u",
100		  MAJOR(__entry->dev), MINOR(__entry->dev),
101		  (unsigned long) __entry->orig_ino,
102		  (unsigned long) __entry->ino, __entry->mode,
103		  __entry->uid, __entry->gid)
104);
105
106TRACE_EVENT(ext4_free_inode,
107	TP_PROTO(struct inode *inode),
108
109	TP_ARGS(inode),
110
111	TP_STRUCT__entry(
112		__field(	dev_t,	dev			)
113		__field(	ino_t,	ino			)
114		__field(	uid_t,	uid			)
115		__field(	gid_t,	gid			)
116		__field(	__u64, blocks			)
117		__field(	__u16, mode			)
118	),
119
120	TP_fast_assign(
121		__entry->dev	= inode->i_sb->s_dev;
122		__entry->ino	= inode->i_ino;
123		__entry->uid	= i_uid_read(inode);
124		__entry->gid	= i_gid_read(inode);
125		__entry->blocks	= inode->i_blocks;
126		__entry->mode	= inode->i_mode;
127	),
128
129	TP_printk("dev %d,%d ino %lu mode 0%o uid %u gid %u blocks %llu",
130		  MAJOR(__entry->dev), MINOR(__entry->dev),
131		  (unsigned long) __entry->ino, __entry->mode,
132		  __entry->uid, __entry->gid, __entry->blocks)
133);
134
135TRACE_EVENT(ext4_request_inode,
136	TP_PROTO(struct inode *dir, int mode),
137
138	TP_ARGS(dir, mode),
139
140	TP_STRUCT__entry(
141		__field(	dev_t,	dev			)
142		__field(	ino_t,	dir			)
143		__field(	__u16, mode			)
144	),
145
146	TP_fast_assign(
147		__entry->dev	= dir->i_sb->s_dev;
148		__entry->dir	= dir->i_ino;
149		__entry->mode	= mode;
150	),
151
152	TP_printk("dev %d,%d dir %lu mode 0%o",
153		  MAJOR(__entry->dev), MINOR(__entry->dev),
154		  (unsigned long) __entry->dir, __entry->mode)
155);
156
157TRACE_EVENT(ext4_allocate_inode,
158	TP_PROTO(struct inode *inode, struct inode *dir, int mode),
159
160	TP_ARGS(inode, dir, mode),
161
162	TP_STRUCT__entry(
163		__field(	dev_t,	dev			)
164		__field(	ino_t,	ino			)
165		__field(	ino_t,	dir			)
166		__field(	__u16,	mode			)
167	),
168
169	TP_fast_assign(
170		__entry->dev	= inode->i_sb->s_dev;
171		__entry->ino	= inode->i_ino;
172		__entry->dir	= dir->i_ino;
173		__entry->mode	= mode;
174	),
175
176	TP_printk("dev %d,%d ino %lu dir %lu mode 0%o",
177		  MAJOR(__entry->dev), MINOR(__entry->dev),
178		  (unsigned long) __entry->ino,
179		  (unsigned long) __entry->dir, __entry->mode)
180);
181
182TRACE_EVENT(ext4_evict_inode,
183	TP_PROTO(struct inode *inode),
184
185	TP_ARGS(inode),
186
187	TP_STRUCT__entry(
188		__field(	dev_t,	dev			)
189		__field(	ino_t,	ino			)
190		__field(	int,	nlink			)
191	),
192
193	TP_fast_assign(
194		__entry->dev	= inode->i_sb->s_dev;
195		__entry->ino	= inode->i_ino;
196		__entry->nlink	= inode->i_nlink;
197	),
198
199	TP_printk("dev %d,%d ino %lu nlink %d",
200		  MAJOR(__entry->dev), MINOR(__entry->dev),
201		  (unsigned long) __entry->ino, __entry->nlink)
202);
203
204TRACE_EVENT(ext4_drop_inode,
205	TP_PROTO(struct inode *inode, int drop),
206
207	TP_ARGS(inode, drop),
208
209	TP_STRUCT__entry(
210		__field(	dev_t,	dev			)
211		__field(	ino_t,	ino			)
212		__field(	int,	drop			)
213	),
214
215	TP_fast_assign(
216		__entry->dev	= inode->i_sb->s_dev;
217		__entry->ino	= inode->i_ino;
218		__entry->drop	= drop;
219	),
220
221	TP_printk("dev %d,%d ino %lu drop %d",
222		  MAJOR(__entry->dev), MINOR(__entry->dev),
223		  (unsigned long) __entry->ino, __entry->drop)
224);
225
226TRACE_EVENT(ext4_mark_inode_dirty,
227	TP_PROTO(struct inode *inode, unsigned long IP),
228
229	TP_ARGS(inode, IP),
230
231	TP_STRUCT__entry(
232		__field(	dev_t,	dev			)
233		__field(	ino_t,	ino			)
234		__field(unsigned long,	ip			)
235	),
236
237	TP_fast_assign(
238		__entry->dev	= inode->i_sb->s_dev;
239		__entry->ino	= inode->i_ino;
240		__entry->ip	= IP;
241	),
242
243	TP_printk("dev %d,%d ino %lu caller %pS",
244		  MAJOR(__entry->dev), MINOR(__entry->dev),
245		  (unsigned long) __entry->ino, (void *)__entry->ip)
246);
247
248TRACE_EVENT(ext4_begin_ordered_truncate,
249	TP_PROTO(struct inode *inode, loff_t new_size),
250
251	TP_ARGS(inode, new_size),
252
253	TP_STRUCT__entry(
254		__field(	dev_t,	dev			)
255		__field(	ino_t,	ino			)
256		__field(	loff_t,	new_size		)
257	),
258
259	TP_fast_assign(
260		__entry->dev		= inode->i_sb->s_dev;
261		__entry->ino		= inode->i_ino;
262		__entry->new_size	= new_size;
263	),
264
265	TP_printk("dev %d,%d ino %lu new_size %lld",
266		  MAJOR(__entry->dev), MINOR(__entry->dev),
267		  (unsigned long) __entry->ino,
268		  __entry->new_size)
269);
270
271DECLARE_EVENT_CLASS(ext4__write_begin,
272
273	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
274		 unsigned int flags),
275
276	TP_ARGS(inode, pos, len, flags),
277
278	TP_STRUCT__entry(
279		__field(	dev_t,	dev			)
280		__field(	ino_t,	ino			)
281		__field(	loff_t,	pos			)
282		__field(	unsigned int, len		)
283		__field(	unsigned int, flags		)
284	),
285
286	TP_fast_assign(
287		__entry->dev	= inode->i_sb->s_dev;
288		__entry->ino	= inode->i_ino;
289		__entry->pos	= pos;
290		__entry->len	= len;
291		__entry->flags	= flags;
292	),
293
294	TP_printk("dev %d,%d ino %lu pos %lld len %u flags %u",
295		  MAJOR(__entry->dev), MINOR(__entry->dev),
296		  (unsigned long) __entry->ino,
297		  __entry->pos, __entry->len, __entry->flags)
298);
299
300DEFINE_EVENT(ext4__write_begin, ext4_write_begin,
301
302	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
303		 unsigned int flags),
304
305	TP_ARGS(inode, pos, len, flags)
306);
307
308DEFINE_EVENT(ext4__write_begin, ext4_da_write_begin,
309
310	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
311		 unsigned int flags),
312
313	TP_ARGS(inode, pos, len, flags)
314);
315
316DECLARE_EVENT_CLASS(ext4__write_end,
317	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
318			unsigned int copied),
319
320	TP_ARGS(inode, pos, len, copied),
321
322	TP_STRUCT__entry(
323		__field(	dev_t,	dev			)
324		__field(	ino_t,	ino			)
325		__field(	loff_t,	pos			)
326		__field(	unsigned int, len		)
327		__field(	unsigned int, copied		)
328	),
329
330	TP_fast_assign(
331		__entry->dev	= inode->i_sb->s_dev;
332		__entry->ino	= inode->i_ino;
333		__entry->pos	= pos;
334		__entry->len	= len;
335		__entry->copied	= copied;
336	),
337
338	TP_printk("dev %d,%d ino %lu pos %lld len %u copied %u",
339		  MAJOR(__entry->dev), MINOR(__entry->dev),
340		  (unsigned long) __entry->ino,
341		  __entry->pos, __entry->len, __entry->copied)
342);
343
344DEFINE_EVENT(ext4__write_end, ext4_write_end,
345
346	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
347		 unsigned int copied),
348
349	TP_ARGS(inode, pos, len, copied)
350);
351
352DEFINE_EVENT(ext4__write_end, ext4_journalled_write_end,
353
354	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
355		 unsigned int copied),
356
357	TP_ARGS(inode, pos, len, copied)
358);
359
360DEFINE_EVENT(ext4__write_end, ext4_da_write_end,
361
362	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
363		 unsigned int copied),
364
365	TP_ARGS(inode, pos, len, copied)
366);
367
368TRACE_EVENT(ext4_writepages,
369	TP_PROTO(struct inode *inode, struct writeback_control *wbc),
370
371	TP_ARGS(inode, wbc),
372
373	TP_STRUCT__entry(
374		__field(	dev_t,	dev			)
375		__field(	ino_t,	ino			)
376		__field(	long,	nr_to_write		)
377		__field(	long,	pages_skipped		)
378		__field(	loff_t,	range_start		)
379		__field(	loff_t,	range_end		)
380		__field(       pgoff_t,	writeback_index		)
381		__field(	int,	sync_mode		)
382		__field(	char,	for_kupdate		)
383		__field(	char,	range_cyclic		)
384	),
385
386	TP_fast_assign(
387		__entry->dev		= inode->i_sb->s_dev;
388		__entry->ino		= inode->i_ino;
389		__entry->nr_to_write	= wbc->nr_to_write;
390		__entry->pages_skipped	= wbc->pages_skipped;
391		__entry->range_start	= wbc->range_start;
392		__entry->range_end	= wbc->range_end;
393		__entry->writeback_index = inode->i_mapping->writeback_index;
394		__entry->sync_mode	= wbc->sync_mode;
395		__entry->for_kupdate	= wbc->for_kupdate;
396		__entry->range_cyclic	= wbc->range_cyclic;
397	),
398
399	TP_printk("dev %d,%d ino %lu nr_to_write %ld pages_skipped %ld "
400		  "range_start %lld range_end %lld sync_mode %d "
401		  "for_kupdate %d range_cyclic %d writeback_index %lu",
402		  MAJOR(__entry->dev), MINOR(__entry->dev),
403		  (unsigned long) __entry->ino, __entry->nr_to_write,
404		  __entry->pages_skipped, __entry->range_start,
405		  __entry->range_end, __entry->sync_mode,
406		  __entry->for_kupdate, __entry->range_cyclic,
407		  (unsigned long) __entry->writeback_index)
408);
409
410TRACE_EVENT(ext4_da_write_pages,
411	TP_PROTO(struct inode *inode, pgoff_t first_page,
412		 struct writeback_control *wbc),
413
414	TP_ARGS(inode, first_page, wbc),
415
416	TP_STRUCT__entry(
417		__field(	dev_t,	dev			)
418		__field(	ino_t,	ino			)
419		__field(      pgoff_t,	first_page		)
420		__field(	 long,	nr_to_write		)
421		__field(	  int,	sync_mode		)
422	),
423
424	TP_fast_assign(
425		__entry->dev		= inode->i_sb->s_dev;
426		__entry->ino		= inode->i_ino;
427		__entry->first_page	= first_page;
428		__entry->nr_to_write	= wbc->nr_to_write;
429		__entry->sync_mode	= wbc->sync_mode;
430	),
431
432	TP_printk("dev %d,%d ino %lu first_page %lu nr_to_write %ld "
433		  "sync_mode %d",
434		  MAJOR(__entry->dev), MINOR(__entry->dev),
435		  (unsigned long) __entry->ino, __entry->first_page,
436		  __entry->nr_to_write, __entry->sync_mode)
437);
438
439TRACE_EVENT(ext4_da_write_pages_extent,
440	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map),
441
442	TP_ARGS(inode, map),
443
444	TP_STRUCT__entry(
445		__field(	dev_t,	dev			)
446		__field(	ino_t,	ino			)
447		__field(	__u64,	lblk			)
448		__field(	__u32,	len			)
449		__field(	__u32,	flags			)
450	),
451
452	TP_fast_assign(
453		__entry->dev		= inode->i_sb->s_dev;
454		__entry->ino		= inode->i_ino;
455		__entry->lblk		= map->m_lblk;
456		__entry->len		= map->m_len;
457		__entry->flags		= map->m_flags;
458	),
459
460	TP_printk("dev %d,%d ino %lu lblk %llu len %u flags %s",
461		  MAJOR(__entry->dev), MINOR(__entry->dev),
462		  (unsigned long) __entry->ino, __entry->lblk, __entry->len,
463		  show_mflags(__entry->flags))
464);
465
466TRACE_EVENT(ext4_writepages_result,
467	TP_PROTO(struct inode *inode, struct writeback_control *wbc,
468			int ret, int pages_written),
469
470	TP_ARGS(inode, wbc, ret, pages_written),
471
472	TP_STRUCT__entry(
473		__field(	dev_t,	dev			)
474		__field(	ino_t,	ino			)
475		__field(	int,	ret			)
476		__field(	int,	pages_written		)
477		__field(	long,	pages_skipped		)
478		__field(       pgoff_t,	writeback_index		)
479		__field(	int,	sync_mode		)
480	),
481
482	TP_fast_assign(
483		__entry->dev		= inode->i_sb->s_dev;
484		__entry->ino		= inode->i_ino;
485		__entry->ret		= ret;
486		__entry->pages_written	= pages_written;
487		__entry->pages_skipped	= wbc->pages_skipped;
488		__entry->writeback_index = inode->i_mapping->writeback_index;
489		__entry->sync_mode	= wbc->sync_mode;
490	),
491
492	TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld "
493		  "sync_mode %d writeback_index %lu",
494		  MAJOR(__entry->dev), MINOR(__entry->dev),
495		  (unsigned long) __entry->ino, __entry->ret,
496		  __entry->pages_written, __entry->pages_skipped,
497		  __entry->sync_mode,
498		  (unsigned long) __entry->writeback_index)
499);
500
501DECLARE_EVENT_CLASS(ext4__page_op,
502	TP_PROTO(struct page *page),
503
504	TP_ARGS(page),
505
506	TP_STRUCT__entry(
507		__field(	dev_t,	dev			)
508		__field(	ino_t,	ino			)
509		__field(	pgoff_t, index			)
510
511	),
512
513	TP_fast_assign(
514		__entry->dev	= page->mapping->host->i_sb->s_dev;
515		__entry->ino	= page->mapping->host->i_ino;
516		__entry->index	= page->index;
517	),
518
519	TP_printk("dev %d,%d ino %lu page_index %lu",
520		  MAJOR(__entry->dev), MINOR(__entry->dev),
521		  (unsigned long) __entry->ino,
522		  (unsigned long) __entry->index)
523);
524
525DEFINE_EVENT(ext4__page_op, ext4_writepage,
526
527	TP_PROTO(struct page *page),
528
529	TP_ARGS(page)
530);
531
532DEFINE_EVENT(ext4__page_op, ext4_readpage,
533
534	TP_PROTO(struct page *page),
535
536	TP_ARGS(page)
537);
538
539DEFINE_EVENT(ext4__page_op, ext4_releasepage,
540
541	TP_PROTO(struct page *page),
542
543	TP_ARGS(page)
544);
545
546DECLARE_EVENT_CLASS(ext4_invalidatepage_op,
547	TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
548
549	TP_ARGS(page, offset, length),
550
551	TP_STRUCT__entry(
552		__field(	dev_t,	dev			)
553		__field(	ino_t,	ino			)
554		__field(	pgoff_t, index			)
555		__field(	unsigned int, offset		)
556		__field(	unsigned int, length		)
557	),
558
559	TP_fast_assign(
560		__entry->dev	= page->mapping->host->i_sb->s_dev;
561		__entry->ino	= page->mapping->host->i_ino;
562		__entry->index	= page->index;
563		__entry->offset	= offset;
564		__entry->length	= length;
565	),
566
567	TP_printk("dev %d,%d ino %lu page_index %lu offset %u length %u",
568		  MAJOR(__entry->dev), MINOR(__entry->dev),
569		  (unsigned long) __entry->ino,
570		  (unsigned long) __entry->index,
571		  __entry->offset, __entry->length)
572);
573
574DEFINE_EVENT(ext4_invalidatepage_op, ext4_invalidatepage,
575	TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
576
577	TP_ARGS(page, offset, length)
578);
579
580DEFINE_EVENT(ext4_invalidatepage_op, ext4_journalled_invalidatepage,
581	TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
582
583	TP_ARGS(page, offset, length)
584);
585
586TRACE_EVENT(ext4_discard_blocks,
587	TP_PROTO(struct super_block *sb, unsigned long long blk,
588			unsigned long long count),
589
590	TP_ARGS(sb, blk, count),
591
592	TP_STRUCT__entry(
593		__field(	dev_t,	dev			)
594		__field(	__u64,	blk			)
595		__field(	__u64,	count			)
596
597	),
598
599	TP_fast_assign(
600		__entry->dev	= sb->s_dev;
601		__entry->blk	= blk;
602		__entry->count	= count;
603	),
604
605	TP_printk("dev %d,%d blk %llu count %llu",
606		  MAJOR(__entry->dev), MINOR(__entry->dev),
607		  __entry->blk, __entry->count)
608);
609
610DECLARE_EVENT_CLASS(ext4__mb_new_pa,
611	TP_PROTO(struct ext4_allocation_context *ac,
612		 struct ext4_prealloc_space *pa),
613
614	TP_ARGS(ac, pa),
615
616	TP_STRUCT__entry(
617		__field(	dev_t,	dev			)
618		__field(	ino_t,	ino			)
619		__field(	__u64,	pa_pstart		)
620		__field(	__u64,	pa_lstart		)
621		__field(	__u32,	pa_len			)
622
623	),
624
625	TP_fast_assign(
626		__entry->dev		= ac->ac_sb->s_dev;
627		__entry->ino		= ac->ac_inode->i_ino;
628		__entry->pa_pstart	= pa->pa_pstart;
629		__entry->pa_lstart	= pa->pa_lstart;
630		__entry->pa_len		= pa->pa_len;
631	),
632
633	TP_printk("dev %d,%d ino %lu pstart %llu len %u lstart %llu",
634		  MAJOR(__entry->dev), MINOR(__entry->dev),
635		  (unsigned long) __entry->ino,
636		  __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart)
637);
638
639DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_inode_pa,
640
641	TP_PROTO(struct ext4_allocation_context *ac,
642		 struct ext4_prealloc_space *pa),
643
644	TP_ARGS(ac, pa)
645);
646
647DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_group_pa,
648
649	TP_PROTO(struct ext4_allocation_context *ac,
650		 struct ext4_prealloc_space *pa),
651
652	TP_ARGS(ac, pa)
653);
654
655TRACE_EVENT(ext4_mb_release_inode_pa,
656	TP_PROTO(struct ext4_prealloc_space *pa,
657		 unsigned long long block, unsigned int count),
658
659	TP_ARGS(pa, block, count),
660
661	TP_STRUCT__entry(
662		__field(	dev_t,	dev			)
663		__field(	ino_t,	ino			)
664		__field(	__u64,	block			)
665		__field(	__u32,	count			)
666
667	),
668
669	TP_fast_assign(
670		__entry->dev		= pa->pa_inode->i_sb->s_dev;
671		__entry->ino		= pa->pa_inode->i_ino;
672		__entry->block		= block;
673		__entry->count		= count;
674	),
675
676	TP_printk("dev %d,%d ino %lu block %llu count %u",
677		  MAJOR(__entry->dev), MINOR(__entry->dev),
678		  (unsigned long) __entry->ino,
679		  __entry->block, __entry->count)
680);
681
682TRACE_EVENT(ext4_mb_release_group_pa,
683	TP_PROTO(struct super_block *sb, struct ext4_prealloc_space *pa),
684
685	TP_ARGS(sb, pa),
686
687	TP_STRUCT__entry(
688		__field(	dev_t,	dev			)
689		__field(	__u64,	pa_pstart		)
690		__field(	__u32,	pa_len			)
691
692	),
693
694	TP_fast_assign(
695		__entry->dev		= sb->s_dev;
696		__entry->pa_pstart	= pa->pa_pstart;
697		__entry->pa_len		= pa->pa_len;
698	),
699
700	TP_printk("dev %d,%d pstart %llu len %u",
701		  MAJOR(__entry->dev), MINOR(__entry->dev),
702		  __entry->pa_pstart, __entry->pa_len)
703);
704
705TRACE_EVENT(ext4_discard_preallocations,
706	TP_PROTO(struct inode *inode),
707
708	TP_ARGS(inode),
709
710	TP_STRUCT__entry(
711		__field(	dev_t,	dev			)
712		__field(	ino_t,	ino			)
713
714	),
715
716	TP_fast_assign(
717		__entry->dev	= inode->i_sb->s_dev;
718		__entry->ino	= inode->i_ino;
719	),
720
721	TP_printk("dev %d,%d ino %lu",
722		  MAJOR(__entry->dev), MINOR(__entry->dev),
723		  (unsigned long) __entry->ino)
724);
725
726TRACE_EVENT(ext4_mb_discard_preallocations,
727	TP_PROTO(struct super_block *sb, int needed),
728
729	TP_ARGS(sb, needed),
730
731	TP_STRUCT__entry(
732		__field(	dev_t,	dev			)
733		__field(	int,	needed			)
734
735	),
736
737	TP_fast_assign(
738		__entry->dev	= sb->s_dev;
739		__entry->needed	= needed;
740	),
741
742	TP_printk("dev %d,%d needed %d",
743		  MAJOR(__entry->dev), MINOR(__entry->dev),
744		  __entry->needed)
745);
746
747TRACE_EVENT(ext4_request_blocks,
748	TP_PROTO(struct ext4_allocation_request *ar),
749
750	TP_ARGS(ar),
751
752	TP_STRUCT__entry(
753		__field(	dev_t,	dev			)
754		__field(	ino_t,	ino			)
755		__field(	unsigned int, len		)
756		__field(	__u32,  logical			)
757		__field(	__u32,	lleft			)
758		__field(	__u32,	lright			)
759		__field(	__u64,	goal			)
760		__field(	__u64,	pleft			)
761		__field(	__u64,	pright			)
762		__field(	unsigned int, flags		)
763	),
764
765	TP_fast_assign(
766		__entry->dev	= ar->inode->i_sb->s_dev;
767		__entry->ino	= ar->inode->i_ino;
768		__entry->len	= ar->len;
769		__entry->logical = ar->logical;
770		__entry->goal	= ar->goal;
771		__entry->lleft	= ar->lleft;
772		__entry->lright	= ar->lright;
773		__entry->pleft	= ar->pleft;
774		__entry->pright	= ar->pright;
775		__entry->flags	= ar->flags;
776	),
777
778	TP_printk("dev %d,%d ino %lu flags %s len %u lblk %u goal %llu "
779		  "lleft %u lright %u pleft %llu pright %llu ",
780		  MAJOR(__entry->dev), MINOR(__entry->dev),
781		  (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
782		  __entry->len, __entry->logical, __entry->goal,
783		  __entry->lleft, __entry->lright, __entry->pleft,
784		  __entry->pright)
785);
786
787TRACE_EVENT(ext4_allocate_blocks,
788	TP_PROTO(struct ext4_allocation_request *ar, unsigned long long block),
789
790	TP_ARGS(ar, block),
791
792	TP_STRUCT__entry(
793		__field(	dev_t,	dev			)
794		__field(	ino_t,	ino			)
795		__field(	__u64,	block			)
796		__field(	unsigned int, len		)
797		__field(	__u32,  logical			)
798		__field(	__u32,	lleft			)
799		__field(	__u32,	lright			)
800		__field(	__u64,	goal			)
801		__field(	__u64,	pleft			)
802		__field(	__u64,	pright			)
803		__field(	unsigned int, flags		)
804	),
805
806	TP_fast_assign(
807		__entry->dev	= ar->inode->i_sb->s_dev;
808		__entry->ino	= ar->inode->i_ino;
809		__entry->block	= block;
810		__entry->len	= ar->len;
811		__entry->logical = ar->logical;
812		__entry->goal	= ar->goal;
813		__entry->lleft	= ar->lleft;
814		__entry->lright	= ar->lright;
815		__entry->pleft	= ar->pleft;
816		__entry->pright	= ar->pright;
817		__entry->flags	= ar->flags;
818	),
819
820	TP_printk("dev %d,%d ino %lu flags %s len %u block %llu lblk %u "
821		  "goal %llu lleft %u lright %u pleft %llu pright %llu",
822		  MAJOR(__entry->dev), MINOR(__entry->dev),
823		  (unsigned long) __entry->ino, show_mballoc_flags(__entry->flags),
824		  __entry->len, __entry->block, __entry->logical,
825		  __entry->goal,  __entry->lleft, __entry->lright,
826		  __entry->pleft, __entry->pright)
827);
828
829TRACE_EVENT(ext4_free_blocks,
830	TP_PROTO(struct inode *inode, __u64 block, unsigned long count,
831		 int flags),
832
833	TP_ARGS(inode, block, count, flags),
834
835	TP_STRUCT__entry(
836		__field(	dev_t,	dev			)
837		__field(	ino_t,	ino			)
838		__field(	__u64,	block			)
839		__field(	unsigned long,	count		)
840		__field(	int,	flags			)
841		__field(	__u16,	mode			)
842	),
843
844	TP_fast_assign(
845		__entry->dev		= inode->i_sb->s_dev;
846		__entry->ino		= inode->i_ino;
847		__entry->block		= block;
848		__entry->count		= count;
849		__entry->flags		= flags;
850		__entry->mode		= inode->i_mode;
851	),
852
853	TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %s",
854		  MAJOR(__entry->dev), MINOR(__entry->dev),
855		  (unsigned long) __entry->ino,
856		  __entry->mode, __entry->block, __entry->count,
857		  show_free_flags(__entry->flags))
858);
859
860TRACE_EVENT(ext4_sync_file_enter,
861	TP_PROTO(struct file *file, int datasync),
862
863	TP_ARGS(file, datasync),
864
865	TP_STRUCT__entry(
866		__field(	dev_t,	dev			)
867		__field(	ino_t,	ino			)
868		__field(	ino_t,	parent			)
869		__field(	int,	datasync		)
870	),
871
872	TP_fast_assign(
873		struct dentry *dentry = file->f_path.dentry;
874
875		__entry->dev		= d_inode(dentry)->i_sb->s_dev;
876		__entry->ino		= d_inode(dentry)->i_ino;
877		__entry->datasync	= datasync;
878		__entry->parent		= d_inode(dentry->d_parent)->i_ino;
879	),
880
881	TP_printk("dev %d,%d ino %lu parent %lu datasync %d ",
882		  MAJOR(__entry->dev), MINOR(__entry->dev),
883		  (unsigned long) __entry->ino,
884		  (unsigned long) __entry->parent, __entry->datasync)
885);
886
887TRACE_EVENT(ext4_sync_file_exit,
888	TP_PROTO(struct inode *inode, int ret),
889
890	TP_ARGS(inode, ret),
891
892	TP_STRUCT__entry(
893		__field(	dev_t,	dev			)
894		__field(	ino_t,	ino			)
895		__field(	int,	ret			)
896	),
897
898	TP_fast_assign(
899		__entry->dev		= inode->i_sb->s_dev;
900		__entry->ino		= inode->i_ino;
901		__entry->ret		= ret;
902	),
903
904	TP_printk("dev %d,%d ino %lu ret %d",
905		  MAJOR(__entry->dev), MINOR(__entry->dev),
906		  (unsigned long) __entry->ino,
907		  __entry->ret)
908);
909
910TRACE_EVENT(ext4_sync_fs,
911	TP_PROTO(struct super_block *sb, int wait),
912
913	TP_ARGS(sb, wait),
914
915	TP_STRUCT__entry(
916		__field(	dev_t,	dev			)
917		__field(	int,	wait			)
918
919	),
920
921	TP_fast_assign(
922		__entry->dev	= sb->s_dev;
923		__entry->wait	= wait;
924	),
925
926	TP_printk("dev %d,%d wait %d",
927		  MAJOR(__entry->dev), MINOR(__entry->dev),
928		  __entry->wait)
929);
930
931TRACE_EVENT(ext4_alloc_da_blocks,
932	TP_PROTO(struct inode *inode),
933
934	TP_ARGS(inode),
935
936	TP_STRUCT__entry(
937		__field(	dev_t,	dev			)
938		__field(	ino_t,	ino			)
939		__field( unsigned int,	data_blocks	)
940		__field( unsigned int,	meta_blocks	)
941	),
942
943	TP_fast_assign(
944		__entry->dev	= inode->i_sb->s_dev;
945		__entry->ino	= inode->i_ino;
946		__entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
947		__entry->meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
948	),
949
950	TP_printk("dev %d,%d ino %lu data_blocks %u meta_blocks %u",
951		  MAJOR(__entry->dev), MINOR(__entry->dev),
952		  (unsigned long) __entry->ino,
953		  __entry->data_blocks, __entry->meta_blocks)
954);
955
956TRACE_EVENT(ext4_mballoc_alloc,
957	TP_PROTO(struct ext4_allocation_context *ac),
958
959	TP_ARGS(ac),
960
961	TP_STRUCT__entry(
962		__field(	dev_t,	dev			)
963		__field(	ino_t,	ino			)
964		__field(	__u32, 	orig_logical		)
965		__field(	  int,	orig_start		)
966		__field(	__u32, 	orig_group		)
967		__field(	  int,	orig_len		)
968		__field(	__u32, 	goal_logical		)
969		__field(	  int,	goal_start		)
970		__field(	__u32, 	goal_group		)
971		__field(	  int,	goal_len		)
972		__field(	__u32, 	result_logical		)
973		__field(	  int,	result_start		)
974		__field(	__u32, 	result_group		)
975		__field(	  int,	result_len		)
976		__field(	__u16,	found			)
977		__field(	__u16,	groups			)
978		__field(	__u16,	buddy			)
979		__field(	__u16,	flags			)
980		__field(	__u16,	tail			)
981		__field(	__u8,	cr			)
982	),
983
984	TP_fast_assign(
985		__entry->dev		= ac->ac_inode->i_sb->s_dev;
986		__entry->ino		= ac->ac_inode->i_ino;
987		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
988		__entry->orig_start	= ac->ac_o_ex.fe_start;
989		__entry->orig_group	= ac->ac_o_ex.fe_group;
990		__entry->orig_len	= ac->ac_o_ex.fe_len;
991		__entry->goal_logical	= ac->ac_g_ex.fe_logical;
992		__entry->goal_start	= ac->ac_g_ex.fe_start;
993		__entry->goal_group	= ac->ac_g_ex.fe_group;
994		__entry->goal_len	= ac->ac_g_ex.fe_len;
995		__entry->result_logical	= ac->ac_f_ex.fe_logical;
996		__entry->result_start	= ac->ac_f_ex.fe_start;
997		__entry->result_group	= ac->ac_f_ex.fe_group;
998		__entry->result_len	= ac->ac_f_ex.fe_len;
999		__entry->found		= ac->ac_found;
1000		__entry->flags		= ac->ac_flags;
1001		__entry->groups		= ac->ac_groups_scanned;
1002		__entry->buddy		= ac->ac_buddy;
1003		__entry->tail		= ac->ac_tail;
1004		__entry->cr		= ac->ac_criteria;
1005	),
1006
1007	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u "
1008		  "result %u/%d/%u@%u blks %u grps %u cr %u flags %s "
1009		  "tail %u broken %u",
1010		  MAJOR(__entry->dev), MINOR(__entry->dev),
1011		  (unsigned long) __entry->ino,
1012		  __entry->orig_group, __entry->orig_start,
1013		  __entry->orig_len, __entry->orig_logical,
1014		  __entry->goal_group, __entry->goal_start,
1015		  __entry->goal_len, __entry->goal_logical,
1016		  __entry->result_group, __entry->result_start,
1017		  __entry->result_len, __entry->result_logical,
1018		  __entry->found, __entry->groups, __entry->cr,
1019		  show_mballoc_flags(__entry->flags), __entry->tail,
1020		  __entry->buddy ? 1 << __entry->buddy : 0)
1021);
1022
1023TRACE_EVENT(ext4_mballoc_prealloc,
1024	TP_PROTO(struct ext4_allocation_context *ac),
1025
1026	TP_ARGS(ac),
1027
1028	TP_STRUCT__entry(
1029		__field(	dev_t,	dev			)
1030		__field(	ino_t,	ino			)
1031		__field(	__u32, 	orig_logical		)
1032		__field(	  int,	orig_start		)
1033		__field(	__u32, 	orig_group		)
1034		__field(	  int,	orig_len		)
1035		__field(	__u32, 	result_logical		)
1036		__field(	  int,	result_start		)
1037		__field(	__u32, 	result_group		)
1038		__field(	  int,	result_len		)
1039	),
1040
1041	TP_fast_assign(
1042		__entry->dev		= ac->ac_inode->i_sb->s_dev;
1043		__entry->ino		= ac->ac_inode->i_ino;
1044		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
1045		__entry->orig_start	= ac->ac_o_ex.fe_start;
1046		__entry->orig_group	= ac->ac_o_ex.fe_group;
1047		__entry->orig_len	= ac->ac_o_ex.fe_len;
1048		__entry->result_logical	= ac->ac_b_ex.fe_logical;
1049		__entry->result_start	= ac->ac_b_ex.fe_start;
1050		__entry->result_group	= ac->ac_b_ex.fe_group;
1051		__entry->result_len	= ac->ac_b_ex.fe_len;
1052	),
1053
1054	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u",
1055		  MAJOR(__entry->dev), MINOR(__entry->dev),
1056		  (unsigned long) __entry->ino,
1057		  __entry->orig_group, __entry->orig_start,
1058		  __entry->orig_len, __entry->orig_logical,
1059		  __entry->result_group, __entry->result_start,
1060		  __entry->result_len, __entry->result_logical)
1061);
1062
1063DECLARE_EVENT_CLASS(ext4__mballoc,
1064	TP_PROTO(struct super_block *sb,
1065		 struct inode *inode,
1066		 ext4_group_t group,
1067		 ext4_grpblk_t start,
1068		 ext4_grpblk_t len),
1069
1070	TP_ARGS(sb, inode, group, start, len),
1071
1072	TP_STRUCT__entry(
1073		__field(	dev_t,	dev			)
1074		__field(	ino_t,	ino			)
1075		__field(	  int,	result_start		)
1076		__field(	__u32, 	result_group		)
1077		__field(	  int,	result_len		)
1078	),
1079
1080	TP_fast_assign(
1081		__entry->dev		= sb->s_dev;
1082		__entry->ino		= inode ? inode->i_ino : 0;
1083		__entry->result_start	= start;
1084		__entry->result_group	= group;
1085		__entry->result_len	= len;
1086	),
1087
1088	TP_printk("dev %d,%d inode %lu extent %u/%d/%d ",
1089		  MAJOR(__entry->dev), MINOR(__entry->dev),
1090		  (unsigned long) __entry->ino,
1091		  __entry->result_group, __entry->result_start,
1092		  __entry->result_len)
1093);
1094
1095DEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard,
1096
1097	TP_PROTO(struct super_block *sb,
1098		 struct inode *inode,
1099		 ext4_group_t group,
1100		 ext4_grpblk_t start,
1101		 ext4_grpblk_t len),
1102
1103	TP_ARGS(sb, inode, group, start, len)
1104);
1105
1106DEFINE_EVENT(ext4__mballoc, ext4_mballoc_free,
1107
1108	TP_PROTO(struct super_block *sb,
1109		 struct inode *inode,
1110		 ext4_group_t group,
1111		 ext4_grpblk_t start,
1112		 ext4_grpblk_t len),
1113
1114	TP_ARGS(sb, inode, group, start, len)
1115);
1116
1117TRACE_EVENT(ext4_forget,
1118	TP_PROTO(struct inode *inode, int is_metadata, __u64 block),
1119
1120	TP_ARGS(inode, is_metadata, block),
1121
1122	TP_STRUCT__entry(
1123		__field(	dev_t,	dev			)
1124		__field(	ino_t,	ino			)
1125		__field(	__u64,	block			)
1126		__field(	int,	is_metadata		)
1127		__field(	__u16,	mode			)
1128	),
1129
1130	TP_fast_assign(
1131		__entry->dev	= inode->i_sb->s_dev;
1132		__entry->ino	= inode->i_ino;
1133		__entry->block	= block;
1134		__entry->is_metadata = is_metadata;
1135		__entry->mode	= inode->i_mode;
1136	),
1137
1138	TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %llu",
1139		  MAJOR(__entry->dev), MINOR(__entry->dev),
1140		  (unsigned long) __entry->ino,
1141		  __entry->mode, __entry->is_metadata, __entry->block)
1142);
1143
1144TRACE_EVENT(ext4_da_update_reserve_space,
1145	TP_PROTO(struct inode *inode, int used_blocks, int quota_claim),
1146
1147	TP_ARGS(inode, used_blocks, quota_claim),
1148
1149	TP_STRUCT__entry(
1150		__field(	dev_t,	dev			)
1151		__field(	ino_t,	ino			)
1152		__field(	__u64,	i_blocks		)
1153		__field(	int,	used_blocks		)
1154		__field(	int,	reserved_data_blocks	)
1155		__field(	int,	reserved_meta_blocks	)
1156		__field(	int,	allocated_meta_blocks	)
1157		__field(	int,	quota_claim		)
1158		__field(	__u16,	mode			)
1159	),
1160
1161	TP_fast_assign(
1162		__entry->dev	= inode->i_sb->s_dev;
1163		__entry->ino	= inode->i_ino;
1164		__entry->i_blocks = inode->i_blocks;
1165		__entry->used_blocks = used_blocks;
1166		__entry->reserved_data_blocks =
1167				EXT4_I(inode)->i_reserved_data_blocks;
1168		__entry->reserved_meta_blocks =
1169				EXT4_I(inode)->i_reserved_meta_blocks;
1170		__entry->allocated_meta_blocks =
1171				EXT4_I(inode)->i_allocated_meta_blocks;
1172		__entry->quota_claim = quota_claim;
1173		__entry->mode	= inode->i_mode;
1174	),
1175
1176	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d "
1177		  "reserved_data_blocks %d reserved_meta_blocks %d "
1178		  "allocated_meta_blocks %d quota_claim %d",
1179		  MAJOR(__entry->dev), MINOR(__entry->dev),
1180		  (unsigned long) __entry->ino,
1181		  __entry->mode, __entry->i_blocks,
1182		  __entry->used_blocks, __entry->reserved_data_blocks,
1183		  __entry->reserved_meta_blocks, __entry->allocated_meta_blocks,
1184		  __entry->quota_claim)
1185);
1186
1187TRACE_EVENT(ext4_da_reserve_space,
1188	TP_PROTO(struct inode *inode),
1189
1190	TP_ARGS(inode),
1191
1192	TP_STRUCT__entry(
1193		__field(	dev_t,	dev			)
1194		__field(	ino_t,	ino			)
1195		__field(	__u64,	i_blocks		)
1196		__field(	int,	reserved_data_blocks	)
1197		__field(	int,	reserved_meta_blocks	)
1198		__field(	__u16,  mode			)
1199	),
1200
1201	TP_fast_assign(
1202		__entry->dev	= inode->i_sb->s_dev;
1203		__entry->ino	= inode->i_ino;
1204		__entry->i_blocks = inode->i_blocks;
1205		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1206		__entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1207		__entry->mode	= inode->i_mode;
1208	),
1209
1210	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu "
1211		  "reserved_data_blocks %d reserved_meta_blocks %d",
1212		  MAJOR(__entry->dev), MINOR(__entry->dev),
1213		  (unsigned long) __entry->ino,
1214		  __entry->mode, __entry->i_blocks,
1215		  __entry->reserved_data_blocks,
1216		  __entry->reserved_meta_blocks)
1217);
1218
1219TRACE_EVENT(ext4_da_release_space,
1220	TP_PROTO(struct inode *inode, int freed_blocks),
1221
1222	TP_ARGS(inode, freed_blocks),
1223
1224	TP_STRUCT__entry(
1225		__field(	dev_t,	dev			)
1226		__field(	ino_t,	ino			)
1227		__field(	__u64,	i_blocks		)
1228		__field(	int,	freed_blocks		)
1229		__field(	int,	reserved_data_blocks	)
1230		__field(	int,	reserved_meta_blocks	)
1231		__field(	int,	allocated_meta_blocks	)
1232		__field(	__u16,  mode			)
1233	),
1234
1235	TP_fast_assign(
1236		__entry->dev	= inode->i_sb->s_dev;
1237		__entry->ino	= inode->i_ino;
1238		__entry->i_blocks = inode->i_blocks;
1239		__entry->freed_blocks = freed_blocks;
1240		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1241		__entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1242		__entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks;
1243		__entry->mode	= inode->i_mode;
1244	),
1245
1246	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d "
1247		  "reserved_data_blocks %d reserved_meta_blocks %d "
1248		  "allocated_meta_blocks %d",
1249		  MAJOR(__entry->dev), MINOR(__entry->dev),
1250		  (unsigned long) __entry->ino,
1251		  __entry->mode, __entry->i_blocks,
1252		  __entry->freed_blocks, __entry->reserved_data_blocks,
1253		  __entry->reserved_meta_blocks, __entry->allocated_meta_blocks)
1254);
1255
1256DECLARE_EVENT_CLASS(ext4__bitmap_load,
1257	TP_PROTO(struct super_block *sb, unsigned long group),
1258
1259	TP_ARGS(sb, group),
1260
1261	TP_STRUCT__entry(
1262		__field(	dev_t,	dev			)
1263		__field(	__u32,	group			)
1264
1265	),
1266
1267	TP_fast_assign(
1268		__entry->dev	= sb->s_dev;
1269		__entry->group	= group;
1270	),
1271
1272	TP_printk("dev %d,%d group %u",
1273		  MAJOR(__entry->dev), MINOR(__entry->dev),
1274		  __entry->group)
1275);
1276
1277DEFINE_EVENT(ext4__bitmap_load, ext4_mb_bitmap_load,
1278
1279	TP_PROTO(struct super_block *sb, unsigned long group),
1280
1281	TP_ARGS(sb, group)
1282);
1283
1284DEFINE_EVENT(ext4__bitmap_load, ext4_mb_buddy_bitmap_load,
1285
1286	TP_PROTO(struct super_block *sb, unsigned long group),
1287
1288	TP_ARGS(sb, group)
1289);
1290
1291DEFINE_EVENT(ext4__bitmap_load, ext4_read_block_bitmap_load,
1292
1293	TP_PROTO(struct super_block *sb, unsigned long group),
1294
1295	TP_ARGS(sb, group)
1296);
1297
1298DEFINE_EVENT(ext4__bitmap_load, ext4_load_inode_bitmap,
1299
1300	TP_PROTO(struct super_block *sb, unsigned long group),
1301
1302	TP_ARGS(sb, group)
1303);
1304
1305TRACE_EVENT(ext4_direct_IO_enter,
1306	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw),
1307
1308	TP_ARGS(inode, offset, len, rw),
1309
1310	TP_STRUCT__entry(
1311		__field(	dev_t,	dev			)
1312		__field(	ino_t,	ino			)
1313		__field(	loff_t,	pos			)
1314		__field(	unsigned long,	len		)
1315		__field(	int,	rw			)
1316	),
1317
1318	TP_fast_assign(
1319		__entry->dev	= inode->i_sb->s_dev;
1320		__entry->ino	= inode->i_ino;
1321		__entry->pos	= offset;
1322		__entry->len	= len;
1323		__entry->rw	= rw;
1324	),
1325
1326	TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d",
1327		  MAJOR(__entry->dev), MINOR(__entry->dev),
1328		  (unsigned long) __entry->ino,
1329		  __entry->pos, __entry->len, __entry->rw)
1330);
1331
1332TRACE_EVENT(ext4_direct_IO_exit,
1333	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len,
1334		 int rw, int ret),
1335
1336	TP_ARGS(inode, offset, len, rw, ret),
1337
1338	TP_STRUCT__entry(
1339		__field(	dev_t,	dev			)
1340		__field(	ino_t,	ino			)
1341		__field(	loff_t,	pos			)
1342		__field(	unsigned long,	len		)
1343		__field(	int,	rw			)
1344		__field(	int,	ret			)
1345	),
1346
1347	TP_fast_assign(
1348		__entry->dev	= inode->i_sb->s_dev;
1349		__entry->ino	= inode->i_ino;
1350		__entry->pos	= offset;
1351		__entry->len	= len;
1352		__entry->rw	= rw;
1353		__entry->ret	= ret;
1354	),
1355
1356	TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d ret %d",
1357		  MAJOR(__entry->dev), MINOR(__entry->dev),
1358		  (unsigned long) __entry->ino,
1359		  __entry->pos, __entry->len,
1360		  __entry->rw, __entry->ret)
1361);
1362
1363DECLARE_EVENT_CLASS(ext4__fallocate_mode,
1364	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
1365
1366	TP_ARGS(inode, offset, len, mode),
1367
1368	TP_STRUCT__entry(
1369		__field(	dev_t,	dev			)
1370		__field(	ino_t,	ino			)
1371		__field(	loff_t,	offset			)
1372		__field(	loff_t, len			)
1373		__field(	int,	mode			)
1374	),
1375
1376	TP_fast_assign(
1377		__entry->dev	= inode->i_sb->s_dev;
1378		__entry->ino	= inode->i_ino;
1379		__entry->offset	= offset;
1380		__entry->len	= len;
1381		__entry->mode	= mode;
1382	),
1383
1384	TP_printk("dev %d,%d ino %lu offset %lld len %lld mode %s",
1385		  MAJOR(__entry->dev), MINOR(__entry->dev),
1386		  (unsigned long) __entry->ino,
1387		  __entry->offset, __entry->len,
1388		  show_falloc_mode(__entry->mode))
1389);
1390
1391DEFINE_EVENT(ext4__fallocate_mode, ext4_fallocate_enter,
1392
1393	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
1394
1395	TP_ARGS(inode, offset, len, mode)
1396);
1397
1398DEFINE_EVENT(ext4__fallocate_mode, ext4_punch_hole,
1399
1400	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
1401
1402	TP_ARGS(inode, offset, len, mode)
1403);
1404
1405DEFINE_EVENT(ext4__fallocate_mode, ext4_zero_range,
1406
1407	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
1408
1409	TP_ARGS(inode, offset, len, mode)
1410);
1411
1412TRACE_EVENT(ext4_fallocate_exit,
1413	TP_PROTO(struct inode *inode, loff_t offset,
1414		 unsigned int max_blocks, int ret),
1415
1416	TP_ARGS(inode, offset, max_blocks, ret),
1417
1418	TP_STRUCT__entry(
1419		__field(	dev_t,	dev			)
1420		__field(	ino_t,	ino			)
1421		__field(	loff_t,	pos			)
1422		__field(	unsigned int,	blocks		)
1423		__field(	int, 	ret			)
1424	),
1425
1426	TP_fast_assign(
1427		__entry->dev	= inode->i_sb->s_dev;
1428		__entry->ino	= inode->i_ino;
1429		__entry->pos	= offset;
1430		__entry->blocks	= max_blocks;
1431		__entry->ret	= ret;
1432	),
1433
1434	TP_printk("dev %d,%d ino %lu pos %lld blocks %u ret %d",
1435		  MAJOR(__entry->dev), MINOR(__entry->dev),
1436		  (unsigned long) __entry->ino,
1437		  __entry->pos, __entry->blocks,
1438		  __entry->ret)
1439);
1440
1441TRACE_EVENT(ext4_unlink_enter,
1442	TP_PROTO(struct inode *parent, struct dentry *dentry),
1443
1444	TP_ARGS(parent, dentry),
1445
1446	TP_STRUCT__entry(
1447		__field(	dev_t,	dev			)
1448		__field(	ino_t,	ino			)
1449		__field(	ino_t,	parent			)
1450		__field(	loff_t,	size			)
1451	),
1452
1453	TP_fast_assign(
1454		__entry->dev		= d_inode(dentry)->i_sb->s_dev;
1455		__entry->ino		= d_inode(dentry)->i_ino;
1456		__entry->parent		= parent->i_ino;
1457		__entry->size		= d_inode(dentry)->i_size;
1458	),
1459
1460	TP_printk("dev %d,%d ino %lu size %lld parent %lu",
1461		  MAJOR(__entry->dev), MINOR(__entry->dev),
1462		  (unsigned long) __entry->ino, __entry->size,
1463		  (unsigned long) __entry->parent)
1464);
1465
1466TRACE_EVENT(ext4_unlink_exit,
1467	TP_PROTO(struct dentry *dentry, int ret),
1468
1469	TP_ARGS(dentry, ret),
1470
1471	TP_STRUCT__entry(
1472		__field(	dev_t,	dev			)
1473		__field(	ino_t,	ino			)
1474		__field(	int,	ret			)
1475	),
1476
1477	TP_fast_assign(
1478		__entry->dev		= d_inode(dentry)->i_sb->s_dev;
1479		__entry->ino		= d_inode(dentry)->i_ino;
1480		__entry->ret		= ret;
1481	),
1482
1483	TP_printk("dev %d,%d ino %lu ret %d",
1484		  MAJOR(__entry->dev), MINOR(__entry->dev),
1485		  (unsigned long) __entry->ino,
1486		  __entry->ret)
1487);
1488
1489DECLARE_EVENT_CLASS(ext4__truncate,
1490	TP_PROTO(struct inode *inode),
1491
1492	TP_ARGS(inode),
1493
1494	TP_STRUCT__entry(
1495		__field(	dev_t,		dev		)
1496		__field(	ino_t,		ino		)
1497		__field(	__u64,		blocks		)
1498	),
1499
1500	TP_fast_assign(
1501		__entry->dev    = inode->i_sb->s_dev;
1502		__entry->ino    = inode->i_ino;
1503		__entry->blocks	= inode->i_blocks;
1504	),
1505
1506	TP_printk("dev %d,%d ino %lu blocks %llu",
1507		  MAJOR(__entry->dev), MINOR(__entry->dev),
1508		  (unsigned long) __entry->ino, __entry->blocks)
1509);
1510
1511DEFINE_EVENT(ext4__truncate, ext4_truncate_enter,
1512
1513	TP_PROTO(struct inode *inode),
1514
1515	TP_ARGS(inode)
1516);
1517
1518DEFINE_EVENT(ext4__truncate, ext4_truncate_exit,
1519
1520	TP_PROTO(struct inode *inode),
1521
1522	TP_ARGS(inode)
1523);
1524
1525/* 'ux' is the unwritten extent. */
1526TRACE_EVENT(ext4_ext_convert_to_initialized_enter,
1527	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
1528		 struct ext4_extent *ux),
1529
1530	TP_ARGS(inode, map, ux),
1531
1532	TP_STRUCT__entry(
1533		__field(	dev_t,		dev	)
1534		__field(	ino_t,		ino	)
1535		__field(	ext4_lblk_t,	m_lblk	)
1536		__field(	unsigned,	m_len	)
1537		__field(	ext4_lblk_t,	u_lblk	)
1538		__field(	unsigned,	u_len	)
1539		__field(	ext4_fsblk_t,	u_pblk	)
1540	),
1541
1542	TP_fast_assign(
1543		__entry->dev		= inode->i_sb->s_dev;
1544		__entry->ino		= inode->i_ino;
1545		__entry->m_lblk		= map->m_lblk;
1546		__entry->m_len		= map->m_len;
1547		__entry->u_lblk		= le32_to_cpu(ux->ee_block);
1548		__entry->u_len		= ext4_ext_get_actual_len(ux);
1549		__entry->u_pblk		= ext4_ext_pblock(ux);
1550	),
1551
1552	TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u u_lblk %u u_len %u "
1553		  "u_pblk %llu",
1554		  MAJOR(__entry->dev), MINOR(__entry->dev),
1555		  (unsigned long) __entry->ino,
1556		  __entry->m_lblk, __entry->m_len,
1557		  __entry->u_lblk, __entry->u_len, __entry->u_pblk)
1558);
1559
1560/*
1561 * 'ux' is the unwritten extent.
1562 * 'ix' is the initialized extent to which blocks are transferred.
1563 */
1564TRACE_EVENT(ext4_ext_convert_to_initialized_fastpath,
1565	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map,
1566		 struct ext4_extent *ux, struct ext4_extent *ix),
1567
1568	TP_ARGS(inode, map, ux, ix),
1569
1570	TP_STRUCT__entry(
1571		__field(	dev_t,		dev	)
1572		__field(	ino_t,		ino	)
1573		__field(	ext4_lblk_t,	m_lblk	)
1574		__field(	unsigned,	m_len	)
1575		__field(	ext4_lblk_t,	u_lblk	)
1576		__field(	unsigned,	u_len	)
1577		__field(	ext4_fsblk_t,	u_pblk	)
1578		__field(	ext4_lblk_t,	i_lblk	)
1579		__field(	unsigned,	i_len	)
1580		__field(	ext4_fsblk_t,	i_pblk	)
1581	),
1582
1583	TP_fast_assign(
1584		__entry->dev		= inode->i_sb->s_dev;
1585		__entry->ino		= inode->i_ino;
1586		__entry->m_lblk		= map->m_lblk;
1587		__entry->m_len		= map->m_len;
1588		__entry->u_lblk		= le32_to_cpu(ux->ee_block);
1589		__entry->u_len		= ext4_ext_get_actual_len(ux);
1590		__entry->u_pblk		= ext4_ext_pblock(ux);
1591		__entry->i_lblk		= le32_to_cpu(ix->ee_block);
1592		__entry->i_len		= ext4_ext_get_actual_len(ix);
1593		__entry->i_pblk		= ext4_ext_pblock(ix);
1594	),
1595
1596	TP_printk("dev %d,%d ino %lu m_lblk %u m_len %u "
1597		  "u_lblk %u u_len %u u_pblk %llu "
1598		  "i_lblk %u i_len %u i_pblk %llu ",
1599		  MAJOR(__entry->dev), MINOR(__entry->dev),
1600		  (unsigned long) __entry->ino,
1601		  __entry->m_lblk, __entry->m_len,
1602		  __entry->u_lblk, __entry->u_len, __entry->u_pblk,
1603		  __entry->i_lblk, __entry->i_len, __entry->i_pblk)
1604);
1605
1606DECLARE_EVENT_CLASS(ext4__map_blocks_enter,
1607	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1608		 unsigned int len, unsigned int flags),
1609
1610	TP_ARGS(inode, lblk, len, flags),
1611
1612	TP_STRUCT__entry(
1613		__field(	dev_t,		dev		)
1614		__field(	ino_t,		ino		)
1615		__field(	ext4_lblk_t,	lblk		)
1616		__field(	unsigned int,	len		)
1617		__field(	unsigned int,	flags		)
1618	),
1619
1620	TP_fast_assign(
1621		__entry->dev    = inode->i_sb->s_dev;
1622		__entry->ino    = inode->i_ino;
1623		__entry->lblk	= lblk;
1624		__entry->len	= len;
1625		__entry->flags	= flags;
1626	),
1627
1628	TP_printk("dev %d,%d ino %lu lblk %u len %u flags %s",
1629		  MAJOR(__entry->dev), MINOR(__entry->dev),
1630		  (unsigned long) __entry->ino,
1631		  __entry->lblk, __entry->len, show_map_flags(__entry->flags))
1632);
1633
1634DEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter,
1635	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1636		 unsigned len, unsigned flags),
1637
1638	TP_ARGS(inode, lblk, len, flags)
1639);
1640
1641DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter,
1642	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1643		 unsigned len, unsigned flags),
1644
1645	TP_ARGS(inode, lblk, len, flags)
1646);
1647
1648DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
1649	TP_PROTO(struct inode *inode, unsigned flags, struct ext4_map_blocks *map,
1650		 int ret),
1651
1652	TP_ARGS(inode, flags, map, ret),
1653
1654	TP_STRUCT__entry(
1655		__field(	dev_t,		dev		)
1656		__field(	ino_t,		ino		)
1657		__field(	unsigned int,	flags		)
1658		__field(	ext4_fsblk_t,	pblk		)
1659		__field(	ext4_lblk_t,	lblk		)
1660		__field(	unsigned int,	len		)
1661		__field(	unsigned int,	mflags		)
1662		__field(	int,		ret		)
1663	),
1664
1665	TP_fast_assign(
1666		__entry->dev    = inode->i_sb->s_dev;
1667		__entry->ino    = inode->i_ino;
1668		__entry->flags	= flags;
1669		__entry->pblk	= map->m_pblk;
1670		__entry->lblk	= map->m_lblk;
1671		__entry->len	= map->m_len;
1672		__entry->mflags	= map->m_flags;
1673		__entry->ret	= ret;
1674	),
1675
1676	TP_printk("dev %d,%d ino %lu flags %s lblk %u pblk %llu len %u "
1677		  "mflags %s ret %d",
1678		  MAJOR(__entry->dev), MINOR(__entry->dev),
1679		  (unsigned long) __entry->ino,
1680		  show_map_flags(__entry->flags), __entry->lblk, __entry->pblk,
1681		  __entry->len, show_mflags(__entry->mflags), __entry->ret)
1682);
1683
1684DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
1685	TP_PROTO(struct inode *inode, unsigned flags,
1686		 struct ext4_map_blocks *map, int ret),
1687
1688	TP_ARGS(inode, flags, map, ret)
1689);
1690
1691DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
1692	TP_PROTO(struct inode *inode, unsigned flags,
1693		 struct ext4_map_blocks *map, int ret),
1694
1695	TP_ARGS(inode, flags, map, ret)
1696);
1697
1698TRACE_EVENT(ext4_ext_load_extent,
1699	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk),
1700
1701	TP_ARGS(inode, lblk, pblk),
1702
1703	TP_STRUCT__entry(
1704		__field(	dev_t,		dev		)
1705		__field(	ino_t,		ino		)
1706		__field(	ext4_fsblk_t,	pblk		)
1707		__field(	ext4_lblk_t,	lblk		)
1708	),
1709
1710	TP_fast_assign(
1711		__entry->dev    = inode->i_sb->s_dev;
1712		__entry->ino    = inode->i_ino;
1713		__entry->pblk	= pblk;
1714		__entry->lblk	= lblk;
1715	),
1716
1717	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu",
1718		  MAJOR(__entry->dev), MINOR(__entry->dev),
1719		  (unsigned long) __entry->ino,
1720		  __entry->lblk, __entry->pblk)
1721);
1722
1723TRACE_EVENT(ext4_load_inode,
1724	TP_PROTO(struct inode *inode),
1725
1726	TP_ARGS(inode),
1727
1728	TP_STRUCT__entry(
1729		__field(	dev_t,	dev		)
1730		__field(	ino_t,	ino		)
1731	),
1732
1733	TP_fast_assign(
1734		__entry->dev		= inode->i_sb->s_dev;
1735		__entry->ino		= inode->i_ino;
1736	),
1737
1738	TP_printk("dev %d,%d ino %ld",
1739		  MAJOR(__entry->dev), MINOR(__entry->dev),
1740		  (unsigned long) __entry->ino)
1741);
1742
1743TRACE_EVENT(ext4_journal_start,
1744	TP_PROTO(struct super_block *sb, int blocks, int rsv_blocks,
1745		 unsigned long IP),
1746
1747	TP_ARGS(sb, blocks, rsv_blocks, IP),
1748
1749	TP_STRUCT__entry(
1750		__field(	dev_t,	dev			)
1751		__field(unsigned long,	ip			)
1752		__field(	  int,	blocks			)
1753		__field(	  int,	rsv_blocks		)
1754	),
1755
1756	TP_fast_assign(
1757		__entry->dev		 = sb->s_dev;
1758		__entry->ip		 = IP;
1759		__entry->blocks		 = blocks;
1760		__entry->rsv_blocks	 = rsv_blocks;
1761	),
1762
1763	TP_printk("dev %d,%d blocks, %d rsv_blocks, %d caller %pS",
1764		  MAJOR(__entry->dev), MINOR(__entry->dev),
1765		  __entry->blocks, __entry->rsv_blocks, (void *)__entry->ip)
1766);
1767
1768TRACE_EVENT(ext4_journal_start_reserved,
1769	TP_PROTO(struct super_block *sb, int blocks, unsigned long IP),
1770
1771	TP_ARGS(sb, blocks, IP),
1772
1773	TP_STRUCT__entry(
1774		__field(	dev_t,	dev			)
1775		__field(unsigned long,	ip			)
1776		__field(	  int,	blocks			)
1777	),
1778
1779	TP_fast_assign(
1780		__entry->dev		 = sb->s_dev;
1781		__entry->ip		 = IP;
1782		__entry->blocks		 = blocks;
1783	),
1784
1785	TP_printk("dev %d,%d blocks, %d caller %pS",
1786		  MAJOR(__entry->dev), MINOR(__entry->dev),
1787		  __entry->blocks, (void *)__entry->ip)
1788);
1789
1790DECLARE_EVENT_CLASS(ext4__trim,
1791	TP_PROTO(struct super_block *sb,
1792		 ext4_group_t group,
1793		 ext4_grpblk_t start,
1794		 ext4_grpblk_t len),
1795
1796	TP_ARGS(sb, group, start, len),
1797
1798	TP_STRUCT__entry(
1799		__field(	int,	dev_major		)
1800		__field(	int,	dev_minor		)
1801		__field(	__u32, 	group			)
1802		__field(	int,	start			)
1803		__field(	int,	len			)
1804	),
1805
1806	TP_fast_assign(
1807		__entry->dev_major	= MAJOR(sb->s_dev);
1808		__entry->dev_minor	= MINOR(sb->s_dev);
1809		__entry->group		= group;
1810		__entry->start		= start;
1811		__entry->len		= len;
1812	),
1813
1814	TP_printk("dev %d,%d group %u, start %d, len %d",
1815		  __entry->dev_major, __entry->dev_minor,
1816		  __entry->group, __entry->start, __entry->len)
1817);
1818
1819DEFINE_EVENT(ext4__trim, ext4_trim_extent,
1820
1821	TP_PROTO(struct super_block *sb,
1822		 ext4_group_t group,
1823		 ext4_grpblk_t start,
1824		 ext4_grpblk_t len),
1825
1826	TP_ARGS(sb, group, start, len)
1827);
1828
1829DEFINE_EVENT(ext4__trim, ext4_trim_all_free,
1830
1831	TP_PROTO(struct super_block *sb,
1832		 ext4_group_t group,
1833		 ext4_grpblk_t start,
1834		 ext4_grpblk_t len),
1835
1836	TP_ARGS(sb, group, start, len)
1837);
1838
1839TRACE_EVENT(ext4_ext_handle_unwritten_extents,
1840	TP_PROTO(struct inode *inode, struct ext4_map_blocks *map, int flags,
1841		 unsigned int allocated, ext4_fsblk_t newblock),
1842
1843	TP_ARGS(inode, map, flags, allocated, newblock),
1844
1845	TP_STRUCT__entry(
1846		__field(	dev_t,		dev		)
1847		__field(	ino_t,		ino		)
1848		__field(	int,		flags		)
1849		__field(	ext4_lblk_t,	lblk		)
1850		__field(	ext4_fsblk_t,	pblk		)
1851		__field(	unsigned int,	len		)
1852		__field(	unsigned int,	allocated	)
1853		__field(	ext4_fsblk_t,	newblk		)
1854	),
1855
1856	TP_fast_assign(
1857		__entry->dev		= inode->i_sb->s_dev;
1858		__entry->ino		= inode->i_ino;
1859		__entry->flags		= flags;
1860		__entry->lblk		= map->m_lblk;
1861		__entry->pblk		= map->m_pblk;
1862		__entry->len		= map->m_len;
1863		__entry->allocated	= allocated;
1864		__entry->newblk		= newblock;
1865	),
1866
1867	TP_printk("dev %d,%d ino %lu m_lblk %u m_pblk %llu m_len %u flags %s "
1868		  "allocated %d newblock %llu",
1869		  MAJOR(__entry->dev), MINOR(__entry->dev),
1870		  (unsigned long) __entry->ino,
1871		  (unsigned) __entry->lblk, (unsigned long long) __entry->pblk,
1872		  __entry->len, show_map_flags(__entry->flags),
1873		  (unsigned int) __entry->allocated,
1874		  (unsigned long long) __entry->newblk)
1875);
1876
1877TRACE_EVENT(ext4_get_implied_cluster_alloc_exit,
1878	TP_PROTO(struct super_block *sb, struct ext4_map_blocks *map, int ret),
1879
1880	TP_ARGS(sb, map, ret),
1881
1882	TP_STRUCT__entry(
1883		__field(	dev_t,		dev	)
1884		__field(	unsigned int,	flags	)
1885		__field(	ext4_lblk_t,	lblk	)
1886		__field(	ext4_fsblk_t,	pblk	)
1887		__field(	unsigned int,	len	)
1888		__field(	int,		ret	)
1889	),
1890
1891	TP_fast_assign(
1892		__entry->dev	= sb->s_dev;
1893		__entry->flags	= map->m_flags;
1894		__entry->lblk	= map->m_lblk;
1895		__entry->pblk	= map->m_pblk;
1896		__entry->len	= map->m_len;
1897		__entry->ret	= ret;
1898	),
1899
1900	TP_printk("dev %d,%d m_lblk %u m_pblk %llu m_len %u m_flags %s ret %d",
1901		  MAJOR(__entry->dev), MINOR(__entry->dev),
1902		  __entry->lblk, (unsigned long long) __entry->pblk,
1903		  __entry->len, show_mflags(__entry->flags), __entry->ret)
1904);
1905
1906TRACE_EVENT(ext4_ext_put_in_cache,
1907	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len,
1908		 ext4_fsblk_t start),
1909
1910	TP_ARGS(inode, lblk, len, start),
1911
1912	TP_STRUCT__entry(
1913		__field(	dev_t,		dev	)
1914		__field(	ino_t,		ino	)
1915		__field(	ext4_lblk_t,	lblk	)
1916		__field(	unsigned int,	len	)
1917		__field(	ext4_fsblk_t,	start	)
1918	),
1919
1920	TP_fast_assign(
1921		__entry->dev	= inode->i_sb->s_dev;
1922		__entry->ino	= inode->i_ino;
1923		__entry->lblk	= lblk;
1924		__entry->len	= len;
1925		__entry->start	= start;
1926	),
1927
1928	TP_printk("dev %d,%d ino %lu lblk %u len %u start %llu",
1929		  MAJOR(__entry->dev), MINOR(__entry->dev),
1930		  (unsigned long) __entry->ino,
1931		  (unsigned) __entry->lblk,
1932		  __entry->len,
1933		  (unsigned long long) __entry->start)
1934);
1935
1936TRACE_EVENT(ext4_ext_in_cache,
1937	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, int ret),
1938
1939	TP_ARGS(inode, lblk, ret),
1940
1941	TP_STRUCT__entry(
1942		__field(	dev_t,		dev	)
1943		__field(	ino_t,		ino	)
1944		__field(	ext4_lblk_t,	lblk	)
1945		__field(	int,		ret	)
1946	),
1947
1948	TP_fast_assign(
1949		__entry->dev	= inode->i_sb->s_dev;
1950		__entry->ino	= inode->i_ino;
1951		__entry->lblk	= lblk;
1952		__entry->ret	= ret;
1953	),
1954
1955	TP_printk("dev %d,%d ino %lu lblk %u ret %d",
1956		  MAJOR(__entry->dev), MINOR(__entry->dev),
1957		  (unsigned long) __entry->ino,
1958		  (unsigned) __entry->lblk,
1959		  __entry->ret)
1960
1961);
1962
1963TRACE_EVENT(ext4_find_delalloc_range,
1964	TP_PROTO(struct inode *inode, ext4_lblk_t from, ext4_lblk_t to,
1965		int reverse, int found, ext4_lblk_t found_blk),
1966
1967	TP_ARGS(inode, from, to, reverse, found, found_blk),
1968
1969	TP_STRUCT__entry(
1970		__field(	dev_t,		dev		)
1971		__field(	ino_t,		ino		)
1972		__field(	ext4_lblk_t,	from		)
1973		__field(	ext4_lblk_t,	to		)
1974		__field(	int,		reverse		)
1975		__field(	int,		found		)
1976		__field(	ext4_lblk_t,	found_blk	)
1977	),
1978
1979	TP_fast_assign(
1980		__entry->dev		= inode->i_sb->s_dev;
1981		__entry->ino		= inode->i_ino;
1982		__entry->from		= from;
1983		__entry->to		= to;
1984		__entry->reverse	= reverse;
1985		__entry->found		= found;
1986		__entry->found_blk	= found_blk;
1987	),
1988
1989	TP_printk("dev %d,%d ino %lu from %u to %u reverse %d found %d "
1990		  "(blk = %u)",
1991		  MAJOR(__entry->dev), MINOR(__entry->dev),
1992		  (unsigned long) __entry->ino,
1993		  (unsigned) __entry->from, (unsigned) __entry->to,
1994		  __entry->reverse, __entry->found,
1995		  (unsigned) __entry->found_blk)
1996);
1997
1998TRACE_EVENT(ext4_get_reserved_cluster_alloc,
1999	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, unsigned int len),
2000
2001	TP_ARGS(inode, lblk, len),
2002
2003	TP_STRUCT__entry(
2004		__field(	dev_t,		dev	)
2005		__field(	ino_t,		ino	)
2006		__field(	ext4_lblk_t,	lblk	)
2007		__field(	unsigned int,	len	)
2008	),
2009
2010	TP_fast_assign(
2011		__entry->dev	= inode->i_sb->s_dev;
2012		__entry->ino	= inode->i_ino;
2013		__entry->lblk	= lblk;
2014		__entry->len	= len;
2015	),
2016
2017	TP_printk("dev %d,%d ino %lu lblk %u len %u",
2018		  MAJOR(__entry->dev), MINOR(__entry->dev),
2019		  (unsigned long) __entry->ino,
2020		  (unsigned) __entry->lblk,
2021		  __entry->len)
2022);
2023
2024TRACE_EVENT(ext4_ext_show_extent,
2025	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk,
2026		 unsigned short len),
2027
2028	TP_ARGS(inode, lblk, pblk, len),
2029
2030	TP_STRUCT__entry(
2031		__field(	dev_t,		dev	)
2032		__field(	ino_t,		ino	)
2033		__field(	ext4_fsblk_t,	pblk	)
2034		__field(	ext4_lblk_t,	lblk	)
2035		__field(	unsigned short,	len	)
2036	),
2037
2038	TP_fast_assign(
2039		__entry->dev	= inode->i_sb->s_dev;
2040		__entry->ino	= inode->i_ino;
2041		__entry->pblk	= pblk;
2042		__entry->lblk	= lblk;
2043		__entry->len	= len;
2044	),
2045
2046	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u",
2047		  MAJOR(__entry->dev), MINOR(__entry->dev),
2048		  (unsigned long) __entry->ino,
2049		  (unsigned) __entry->lblk,
2050		  (unsigned long long) __entry->pblk,
2051		  (unsigned short) __entry->len)
2052);
2053
2054TRACE_EVENT(ext4_remove_blocks,
2055	    TP_PROTO(struct inode *inode, struct ext4_extent *ex,
2056		ext4_lblk_t from, ext4_fsblk_t to,
2057		long long partial_cluster),
2058
2059	TP_ARGS(inode, ex, from, to, partial_cluster),
2060
2061	TP_STRUCT__entry(
2062		__field(	dev_t,		dev	)
2063		__field(	ino_t,		ino	)
2064		__field(	ext4_lblk_t,	from	)
2065		__field(	ext4_lblk_t,	to	)
2066		__field(	long long,	partial	)
2067		__field(	ext4_fsblk_t,	ee_pblk	)
2068		__field(	ext4_lblk_t,	ee_lblk	)
2069		__field(	unsigned short,	ee_len	)
2070	),
2071
2072	TP_fast_assign(
2073		__entry->dev		= inode->i_sb->s_dev;
2074		__entry->ino		= inode->i_ino;
2075		__entry->from		= from;
2076		__entry->to		= to;
2077		__entry->partial	= partial_cluster;
2078		__entry->ee_pblk	= ext4_ext_pblock(ex);
2079		__entry->ee_lblk	= le32_to_cpu(ex->ee_block);
2080		__entry->ee_len		= ext4_ext_get_actual_len(ex);
2081	),
2082
2083	TP_printk("dev %d,%d ino %lu extent [%u(%llu), %u]"
2084		  "from %u to %u partial_cluster %lld",
2085		  MAJOR(__entry->dev), MINOR(__entry->dev),
2086		  (unsigned long) __entry->ino,
2087		  (unsigned) __entry->ee_lblk,
2088		  (unsigned long long) __entry->ee_pblk,
2089		  (unsigned short) __entry->ee_len,
2090		  (unsigned) __entry->from,
2091		  (unsigned) __entry->to,
2092		  (long long) __entry->partial)
2093);
2094
2095TRACE_EVENT(ext4_ext_rm_leaf,
2096	TP_PROTO(struct inode *inode, ext4_lblk_t start,
2097		 struct ext4_extent *ex,
2098		 long long partial_cluster),
2099
2100	TP_ARGS(inode, start, ex, partial_cluster),
2101
2102	TP_STRUCT__entry(
2103		__field(	dev_t,		dev	)
2104		__field(	ino_t,		ino	)
2105		__field(	long long,	partial	)
2106		__field(	ext4_lblk_t,	start	)
2107		__field(	ext4_lblk_t,	ee_lblk	)
2108		__field(	ext4_fsblk_t,	ee_pblk	)
2109		__field(	short,		ee_len	)
2110	),
2111
2112	TP_fast_assign(
2113		__entry->dev		= inode->i_sb->s_dev;
2114		__entry->ino		= inode->i_ino;
2115		__entry->partial	= partial_cluster;
2116		__entry->start		= start;
2117		__entry->ee_lblk	= le32_to_cpu(ex->ee_block);
2118		__entry->ee_pblk	= ext4_ext_pblock(ex);
2119		__entry->ee_len		= ext4_ext_get_actual_len(ex);
2120	),
2121
2122	TP_printk("dev %d,%d ino %lu start_lblk %u last_extent [%u(%llu), %u]"
2123		  "partial_cluster %lld",
2124		  MAJOR(__entry->dev), MINOR(__entry->dev),
2125		  (unsigned long) __entry->ino,
2126		  (unsigned) __entry->start,
2127		  (unsigned) __entry->ee_lblk,
2128		  (unsigned long long) __entry->ee_pblk,
2129		  (unsigned short) __entry->ee_len,
2130		  (long long) __entry->partial)
2131);
2132
2133TRACE_EVENT(ext4_ext_rm_idx,
2134	TP_PROTO(struct inode *inode, ext4_fsblk_t pblk),
2135
2136	TP_ARGS(inode, pblk),
2137
2138	TP_STRUCT__entry(
2139		__field(	dev_t,		dev	)
2140		__field(	ino_t,		ino	)
2141		__field(	ext4_fsblk_t,	pblk	)
2142	),
2143
2144	TP_fast_assign(
2145		__entry->dev	= inode->i_sb->s_dev;
2146		__entry->ino	= inode->i_ino;
2147		__entry->pblk	= pblk;
2148	),
2149
2150	TP_printk("dev %d,%d ino %lu index_pblk %llu",
2151		  MAJOR(__entry->dev), MINOR(__entry->dev),
2152		  (unsigned long) __entry->ino,
2153		  (unsigned long long) __entry->pblk)
2154);
2155
2156TRACE_EVENT(ext4_ext_remove_space,
2157	TP_PROTO(struct inode *inode, ext4_lblk_t start,
2158		 ext4_lblk_t end, int depth),
2159
2160	TP_ARGS(inode, start, end, depth),
2161
2162	TP_STRUCT__entry(
2163		__field(	dev_t,		dev	)
2164		__field(	ino_t,		ino	)
2165		__field(	ext4_lblk_t,	start	)
2166		__field(	ext4_lblk_t,	end	)
2167		__field(	int,		depth	)
2168	),
2169
2170	TP_fast_assign(
2171		__entry->dev	= inode->i_sb->s_dev;
2172		__entry->ino	= inode->i_ino;
2173		__entry->start	= start;
2174		__entry->end	= end;
2175		__entry->depth	= depth;
2176	),
2177
2178	TP_printk("dev %d,%d ino %lu since %u end %u depth %d",
2179		  MAJOR(__entry->dev), MINOR(__entry->dev),
2180		  (unsigned long) __entry->ino,
2181		  (unsigned) __entry->start,
2182		  (unsigned) __entry->end,
2183		  __entry->depth)
2184);
2185
2186TRACE_EVENT(ext4_ext_remove_space_done,
2187	TP_PROTO(struct inode *inode, ext4_lblk_t start, ext4_lblk_t end,
2188		 int depth, long long partial, __le16 eh_entries),
2189
2190	TP_ARGS(inode, start, end, depth, partial, eh_entries),
2191
2192	TP_STRUCT__entry(
2193		__field(	dev_t,		dev		)
2194		__field(	ino_t,		ino		)
2195		__field(	ext4_lblk_t,	start		)
2196		__field(	ext4_lblk_t,	end		)
2197		__field(	int,		depth		)
2198		__field(	long long,	partial		)
2199		__field(	unsigned short,	eh_entries	)
2200	),
2201
2202	TP_fast_assign(
2203		__entry->dev		= inode->i_sb->s_dev;
2204		__entry->ino		= inode->i_ino;
2205		__entry->start		= start;
2206		__entry->end		= end;
2207		__entry->depth		= depth;
2208		__entry->partial	= partial;
2209		__entry->eh_entries	= le16_to_cpu(eh_entries);
2210	),
2211
2212	TP_printk("dev %d,%d ino %lu since %u end %u depth %d partial %lld "
2213		  "remaining_entries %u",
2214		  MAJOR(__entry->dev), MINOR(__entry->dev),
2215		  (unsigned long) __entry->ino,
2216		  (unsigned) __entry->start,
2217		  (unsigned) __entry->end,
2218		  __entry->depth,
2219		  (long long) __entry->partial,
2220		  (unsigned short) __entry->eh_entries)
2221);
2222
2223DECLARE_EVENT_CLASS(ext4__es_extent,
2224	TP_PROTO(struct inode *inode, struct extent_status *es),
2225
2226	TP_ARGS(inode, es),
2227
2228	TP_STRUCT__entry(
2229		__field(	dev_t,		dev		)
2230		__field(	ino_t,		ino		)
2231		__field(	ext4_lblk_t,	lblk		)
2232		__field(	ext4_lblk_t,	len		)
2233		__field(	ext4_fsblk_t,	pblk		)
2234		__field(	char, status	)
2235	),
2236
2237	TP_fast_assign(
2238		__entry->dev	= inode->i_sb->s_dev;
2239		__entry->ino	= inode->i_ino;
2240		__entry->lblk	= es->es_lblk;
2241		__entry->len	= es->es_len;
2242		__entry->pblk	= ext4_es_pblock(es);
2243		__entry->status	= ext4_es_status(es);
2244	),
2245
2246	TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
2247		  MAJOR(__entry->dev), MINOR(__entry->dev),
2248		  (unsigned long) __entry->ino,
2249		  __entry->lblk, __entry->len,
2250		  __entry->pblk, show_extent_status(__entry->status))
2251);
2252
2253DEFINE_EVENT(ext4__es_extent, ext4_es_insert_extent,
2254	TP_PROTO(struct inode *inode, struct extent_status *es),
2255
2256	TP_ARGS(inode, es)
2257);
2258
2259DEFINE_EVENT(ext4__es_extent, ext4_es_cache_extent,
2260	TP_PROTO(struct inode *inode, struct extent_status *es),
2261
2262	TP_ARGS(inode, es)
2263);
2264
2265TRACE_EVENT(ext4_es_remove_extent,
2266	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_lblk_t len),
2267
2268	TP_ARGS(inode, lblk, len),
2269
2270	TP_STRUCT__entry(
2271		__field(	dev_t,	dev			)
2272		__field(	ino_t,	ino			)
2273		__field(	loff_t,	lblk			)
2274		__field(	loff_t,	len			)
2275	),
2276
2277	TP_fast_assign(
2278		__entry->dev	= inode->i_sb->s_dev;
2279		__entry->ino	= inode->i_ino;
2280		__entry->lblk	= lblk;
2281		__entry->len	= len;
2282	),
2283
2284	TP_printk("dev %d,%d ino %lu es [%lld/%lld)",
2285		  MAJOR(__entry->dev), MINOR(__entry->dev),
2286		  (unsigned long) __entry->ino,
2287		  __entry->lblk, __entry->len)
2288);
2289
2290TRACE_EVENT(ext4_es_find_delayed_extent_range_enter,
2291	TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
2292
2293	TP_ARGS(inode, lblk),
2294
2295	TP_STRUCT__entry(
2296		__field(	dev_t,		dev		)
2297		__field(	ino_t,		ino		)
2298		__field(	ext4_lblk_t,	lblk		)
2299	),
2300
2301	TP_fast_assign(
2302		__entry->dev	= inode->i_sb->s_dev;
2303		__entry->ino	= inode->i_ino;
2304		__entry->lblk	= lblk;
2305	),
2306
2307	TP_printk("dev %d,%d ino %lu lblk %u",
2308		  MAJOR(__entry->dev), MINOR(__entry->dev),
2309		  (unsigned long) __entry->ino, __entry->lblk)
2310);
2311
2312TRACE_EVENT(ext4_es_find_delayed_extent_range_exit,
2313	TP_PROTO(struct inode *inode, struct extent_status *es),
2314
2315	TP_ARGS(inode, es),
2316
2317	TP_STRUCT__entry(
2318		__field(	dev_t,		dev		)
2319		__field(	ino_t,		ino		)
2320		__field(	ext4_lblk_t,	lblk		)
2321		__field(	ext4_lblk_t,	len		)
2322		__field(	ext4_fsblk_t,	pblk		)
2323		__field(	char, status	)
2324	),
2325
2326	TP_fast_assign(
2327		__entry->dev	= inode->i_sb->s_dev;
2328		__entry->ino	= inode->i_ino;
2329		__entry->lblk	= es->es_lblk;
2330		__entry->len	= es->es_len;
2331		__entry->pblk	= ext4_es_pblock(es);
2332		__entry->status	= ext4_es_status(es);
2333	),
2334
2335	TP_printk("dev %d,%d ino %lu es [%u/%u) mapped %llu status %s",
2336		  MAJOR(__entry->dev), MINOR(__entry->dev),
2337		  (unsigned long) __entry->ino,
2338		  __entry->lblk, __entry->len,
2339		  __entry->pblk, show_extent_status(__entry->status))
2340);
2341
2342TRACE_EVENT(ext4_es_lookup_extent_enter,
2343	TP_PROTO(struct inode *inode, ext4_lblk_t lblk),
2344
2345	TP_ARGS(inode, lblk),
2346
2347	TP_STRUCT__entry(
2348		__field(	dev_t,		dev		)
2349		__field(	ino_t,		ino		)
2350		__field(	ext4_lblk_t,	lblk		)
2351	),
2352
2353	TP_fast_assign(
2354		__entry->dev	= inode->i_sb->s_dev;
2355		__entry->ino	= inode->i_ino;
2356		__entry->lblk	= lblk;
2357	),
2358
2359	TP_printk("dev %d,%d ino %lu lblk %u",
2360		  MAJOR(__entry->dev), MINOR(__entry->dev),
2361		  (unsigned long) __entry->ino, __entry->lblk)
2362);
2363
2364TRACE_EVENT(ext4_es_lookup_extent_exit,
2365	TP_PROTO(struct inode *inode, struct extent_status *es,
2366		 int found),
2367
2368	TP_ARGS(inode, es, found),
2369
2370	TP_STRUCT__entry(
2371		__field(	dev_t,		dev		)
2372		__field(	ino_t,		ino		)
2373		__field(	ext4_lblk_t,	lblk		)
2374		__field(	ext4_lblk_t,	len		)
2375		__field(	ext4_fsblk_t,	pblk		)
2376		__field(	char,		status		)
2377		__field(	int,		found		)
2378	),
2379
2380	TP_fast_assign(
2381		__entry->dev	= inode->i_sb->s_dev;
2382		__entry->ino	= inode->i_ino;
2383		__entry->lblk	= es->es_lblk;
2384		__entry->len	= es->es_len;
2385		__entry->pblk	= ext4_es_pblock(es);
2386		__entry->status	= ext4_es_status(es);
2387		__entry->found	= found;
2388	),
2389
2390	TP_printk("dev %d,%d ino %lu found %d [%u/%u) %llu %s",
2391		  MAJOR(__entry->dev), MINOR(__entry->dev),
2392		  (unsigned long) __entry->ino, __entry->found,
2393		  __entry->lblk, __entry->len,
2394		  __entry->found ? __entry->pblk : 0,
2395		  show_extent_status(__entry->found ? __entry->status : 0))
2396);
2397
2398DECLARE_EVENT_CLASS(ext4__es_shrink_enter,
2399	TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
2400
2401	TP_ARGS(sb, nr_to_scan, cache_cnt),
2402
2403	TP_STRUCT__entry(
2404		__field(	dev_t,	dev			)
2405		__field(	int,	nr_to_scan		)
2406		__field(	int,	cache_cnt		)
2407	),
2408
2409	TP_fast_assign(
2410		__entry->dev		= sb->s_dev;
2411		__entry->nr_to_scan	= nr_to_scan;
2412		__entry->cache_cnt	= cache_cnt;
2413	),
2414
2415	TP_printk("dev %d,%d nr_to_scan %d cache_cnt %d",
2416		  MAJOR(__entry->dev), MINOR(__entry->dev),
2417		  __entry->nr_to_scan, __entry->cache_cnt)
2418);
2419
2420DEFINE_EVENT(ext4__es_shrink_enter, ext4_es_shrink_count,
2421	TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
2422
2423	TP_ARGS(sb, nr_to_scan, cache_cnt)
2424);
2425
2426DEFINE_EVENT(ext4__es_shrink_enter, ext4_es_shrink_scan_enter,
2427	TP_PROTO(struct super_block *sb, int nr_to_scan, int cache_cnt),
2428
2429	TP_ARGS(sb, nr_to_scan, cache_cnt)
2430);
2431
2432TRACE_EVENT(ext4_es_shrink_scan_exit,
2433	TP_PROTO(struct super_block *sb, int nr_shrunk, int cache_cnt),
2434
2435	TP_ARGS(sb, nr_shrunk, cache_cnt),
2436
2437	TP_STRUCT__entry(
2438		__field(	dev_t,	dev			)
2439		__field(	int,	nr_shrunk		)
2440		__field(	int,	cache_cnt		)
2441	),
2442
2443	TP_fast_assign(
2444		__entry->dev		= sb->s_dev;
2445		__entry->nr_shrunk	= nr_shrunk;
2446		__entry->cache_cnt	= cache_cnt;
2447	),
2448
2449	TP_printk("dev %d,%d nr_shrunk %d cache_cnt %d",
2450		  MAJOR(__entry->dev), MINOR(__entry->dev),
2451		  __entry->nr_shrunk, __entry->cache_cnt)
2452);
2453
2454TRACE_EVENT(ext4_collapse_range,
2455	TP_PROTO(struct inode *inode, loff_t offset, loff_t len),
2456
2457	TP_ARGS(inode, offset, len),
2458
2459	TP_STRUCT__entry(
2460		__field(dev_t,	dev)
2461		__field(ino_t,	ino)
2462		__field(loff_t,	offset)
2463		__field(loff_t, len)
2464	),
2465
2466	TP_fast_assign(
2467		__entry->dev	= inode->i_sb->s_dev;
2468		__entry->ino	= inode->i_ino;
2469		__entry->offset	= offset;
2470		__entry->len	= len;
2471	),
2472
2473	TP_printk("dev %d,%d ino %lu offset %lld len %lld",
2474		  MAJOR(__entry->dev), MINOR(__entry->dev),
2475		  (unsigned long) __entry->ino,
2476		  __entry->offset, __entry->len)
2477);
2478
2479TRACE_EVENT(ext4_insert_range,
2480	TP_PROTO(struct inode *inode, loff_t offset, loff_t len),
2481
2482	TP_ARGS(inode, offset, len),
2483
2484	TP_STRUCT__entry(
2485		__field(dev_t,	dev)
2486		__field(ino_t,	ino)
2487		__field(loff_t,	offset)
2488		__field(loff_t, len)
2489	),
2490
2491	TP_fast_assign(
2492		__entry->dev	= inode->i_sb->s_dev;
2493		__entry->ino	= inode->i_ino;
2494		__entry->offset	= offset;
2495		__entry->len	= len;
2496	),
2497
2498	TP_printk("dev %d,%d ino %lu offset %lld len %lld",
2499		  MAJOR(__entry->dev), MINOR(__entry->dev),
2500		  (unsigned long) __entry->ino,
2501		  __entry->offset, __entry->len)
2502);
2503
2504TRACE_EVENT(ext4_es_shrink,
2505	TP_PROTO(struct super_block *sb, int nr_shrunk, u64 scan_time,
2506		 int nr_skipped, int retried),
2507
2508	TP_ARGS(sb, nr_shrunk, scan_time, nr_skipped, retried),
2509
2510	TP_STRUCT__entry(
2511		__field(	dev_t,		dev		)
2512		__field(	int,		nr_shrunk	)
2513		__field(	unsigned long long, scan_time	)
2514		__field(	int,		nr_skipped	)
2515		__field(	int,		retried		)
2516	),
2517
2518	TP_fast_assign(
2519		__entry->dev		= sb->s_dev;
2520		__entry->nr_shrunk	= nr_shrunk;
2521		__entry->scan_time	= div_u64(scan_time, 1000);
2522		__entry->nr_skipped	= nr_skipped;
2523		__entry->retried	= retried;
2524	),
2525
2526	TP_printk("dev %d,%d nr_shrunk %d, scan_time %llu "
2527		  "nr_skipped %d retried %d",
2528		  MAJOR(__entry->dev), MINOR(__entry->dev), __entry->nr_shrunk,
2529		  __entry->scan_time, __entry->nr_skipped, __entry->retried)
2530);
2531
2532#endif /* _TRACE_EXT4_H */
2533
2534/* This part must be outside protection */
2535#include <trace/define_trace.h>
2536