xref: /linux/include/trace/events/ext4.h (revision db4e83957f961f9053282409c5062c6baef857a4)
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 
10 struct ext4_allocation_context;
11 struct ext4_allocation_request;
12 struct ext4_prealloc_space;
13 struct ext4_inode_info;
14 struct mpage_da_data;
15 
16 #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode))
17 
18 TRACE_EVENT(ext4_free_inode,
19 	TP_PROTO(struct inode *inode),
20 
21 	TP_ARGS(inode),
22 
23 	TP_STRUCT__entry(
24 		__field(	dev_t,	dev			)
25 		__field(	ino_t,	ino			)
26 		__field(	__u16, mode			)
27 		__field(	uid_t,	uid			)
28 		__field(	gid_t,	gid			)
29 		__field(	__u64, blocks			)
30 	),
31 
32 	TP_fast_assign(
33 		__entry->dev	= inode->i_sb->s_dev;
34 		__entry->ino	= inode->i_ino;
35 		__entry->mode	= inode->i_mode;
36 		__entry->uid	= inode->i_uid;
37 		__entry->gid	= inode->i_gid;
38 		__entry->blocks	= inode->i_blocks;
39 	),
40 
41 	TP_printk("dev %d,%d ino %lu mode 0%o uid %u gid %u blocks %llu",
42 		  MAJOR(__entry->dev), MINOR(__entry->dev),
43 		  (unsigned long) __entry->ino, __entry->mode,
44 		  __entry->uid, __entry->gid, __entry->blocks)
45 );
46 
47 TRACE_EVENT(ext4_request_inode,
48 	TP_PROTO(struct inode *dir, int mode),
49 
50 	TP_ARGS(dir, mode),
51 
52 	TP_STRUCT__entry(
53 		__field(	dev_t,	dev			)
54 		__field(	ino_t,	dir			)
55 		__field(	__u16, mode			)
56 	),
57 
58 	TP_fast_assign(
59 		__entry->dev	= dir->i_sb->s_dev;
60 		__entry->dir	= dir->i_ino;
61 		__entry->mode	= mode;
62 	),
63 
64 	TP_printk("dev %d,%d dir %lu mode 0%o",
65 		  MAJOR(__entry->dev), MINOR(__entry->dev),
66 		  (unsigned long) __entry->dir, __entry->mode)
67 );
68 
69 TRACE_EVENT(ext4_allocate_inode,
70 	TP_PROTO(struct inode *inode, struct inode *dir, int mode),
71 
72 	TP_ARGS(inode, dir, mode),
73 
74 	TP_STRUCT__entry(
75 		__field(	dev_t,	dev			)
76 		__field(	ino_t,	ino			)
77 		__field(	ino_t,	dir			)
78 		__field(	__u16,	mode			)
79 	),
80 
81 	TP_fast_assign(
82 		__entry->dev	= inode->i_sb->s_dev;
83 		__entry->ino	= inode->i_ino;
84 		__entry->dir	= dir->i_ino;
85 		__entry->mode	= mode;
86 	),
87 
88 	TP_printk("dev %d,%d ino %lu dir %lu mode 0%o",
89 		  MAJOR(__entry->dev), MINOR(__entry->dev),
90 		  (unsigned long) __entry->ino,
91 		  (unsigned long) __entry->dir, __entry->mode)
92 );
93 
94 TRACE_EVENT(ext4_evict_inode,
95 	TP_PROTO(struct inode *inode),
96 
97 	TP_ARGS(inode),
98 
99 	TP_STRUCT__entry(
100 		__field(	dev_t,	dev			)
101 		__field(	ino_t,	ino			)
102 		__field(	int,	nlink			)
103 	),
104 
105 	TP_fast_assign(
106 		__entry->dev	= inode->i_sb->s_dev;
107 		__entry->ino	= inode->i_ino;
108 		__entry->nlink	= inode->i_nlink;
109 	),
110 
111 	TP_printk("dev %d,%d ino %lu nlink %d",
112 		  MAJOR(__entry->dev), MINOR(__entry->dev),
113 		  (unsigned long) __entry->ino, __entry->nlink)
114 );
115 
116 TRACE_EVENT(ext4_drop_inode,
117 	TP_PROTO(struct inode *inode, int drop),
118 
119 	TP_ARGS(inode, drop),
120 
121 	TP_STRUCT__entry(
122 		__field(	dev_t,	dev			)
123 		__field(	ino_t,	ino			)
124 		__field(	int,	drop			)
125 	),
126 
127 	TP_fast_assign(
128 		__entry->dev	= inode->i_sb->s_dev;
129 		__entry->ino	= inode->i_ino;
130 		__entry->drop	= drop;
131 	),
132 
133 	TP_printk("dev %d,%d ino %lu drop %d",
134 		  MAJOR(__entry->dev), MINOR(__entry->dev),
135 		  (unsigned long) __entry->ino, __entry->drop)
136 );
137 
138 TRACE_EVENT(ext4_mark_inode_dirty,
139 	TP_PROTO(struct inode *inode, unsigned long IP),
140 
141 	TP_ARGS(inode, IP),
142 
143 	TP_STRUCT__entry(
144 		__field(	dev_t,	dev			)
145 		__field(	ino_t,	ino			)
146 		__field(unsigned long,	ip			)
147 	),
148 
149 	TP_fast_assign(
150 		__entry->dev	= inode->i_sb->s_dev;
151 		__entry->ino	= inode->i_ino;
152 		__entry->ip	= IP;
153 	),
154 
155 	TP_printk("dev %d,%d ino %lu caller %pF",
156 		  MAJOR(__entry->dev), MINOR(__entry->dev),
157 		  (unsigned long) __entry->ino, (void *)__entry->ip)
158 );
159 
160 TRACE_EVENT(ext4_begin_ordered_truncate,
161 	TP_PROTO(struct inode *inode, loff_t new_size),
162 
163 	TP_ARGS(inode, new_size),
164 
165 	TP_STRUCT__entry(
166 		__field(	dev_t,	dev			)
167 		__field(	ino_t,	ino			)
168 		__field(	loff_t,	new_size		)
169 	),
170 
171 	TP_fast_assign(
172 		__entry->dev		= inode->i_sb->s_dev;
173 		__entry->ino		= inode->i_ino;
174 		__entry->new_size	= new_size;
175 	),
176 
177 	TP_printk("dev %d,%d ino %lu new_size %lld",
178 		  MAJOR(__entry->dev), MINOR(__entry->dev),
179 		  (unsigned long) __entry->ino,
180 		  __entry->new_size)
181 );
182 
183 DECLARE_EVENT_CLASS(ext4__write_begin,
184 
185 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
186 		 unsigned int flags),
187 
188 	TP_ARGS(inode, pos, len, flags),
189 
190 	TP_STRUCT__entry(
191 		__field(	dev_t,	dev			)
192 		__field(	ino_t,	ino			)
193 		__field(	loff_t,	pos			)
194 		__field(	unsigned int, len		)
195 		__field(	unsigned int, flags		)
196 	),
197 
198 	TP_fast_assign(
199 		__entry->dev	= inode->i_sb->s_dev;
200 		__entry->ino	= inode->i_ino;
201 		__entry->pos	= pos;
202 		__entry->len	= len;
203 		__entry->flags	= flags;
204 	),
205 
206 	TP_printk("dev %d,%d ino %lu pos %lld len %u flags %u",
207 		  MAJOR(__entry->dev), MINOR(__entry->dev),
208 		  (unsigned long) __entry->ino,
209 		  __entry->pos, __entry->len, __entry->flags)
210 );
211 
212 DEFINE_EVENT(ext4__write_begin, ext4_write_begin,
213 
214 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
215 		 unsigned int flags),
216 
217 	TP_ARGS(inode, pos, len, flags)
218 );
219 
220 DEFINE_EVENT(ext4__write_begin, ext4_da_write_begin,
221 
222 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
223 		 unsigned int flags),
224 
225 	TP_ARGS(inode, pos, len, flags)
226 );
227 
228 DECLARE_EVENT_CLASS(ext4__write_end,
229 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
230 			unsigned int copied),
231 
232 	TP_ARGS(inode, pos, len, copied),
233 
234 	TP_STRUCT__entry(
235 		__field(	dev_t,	dev			)
236 		__field(	ino_t,	ino			)
237 		__field(	loff_t,	pos			)
238 		__field(	unsigned int, len		)
239 		__field(	unsigned int, copied		)
240 	),
241 
242 	TP_fast_assign(
243 		__entry->dev	= inode->i_sb->s_dev;
244 		__entry->ino	= inode->i_ino;
245 		__entry->pos	= pos;
246 		__entry->len	= len;
247 		__entry->copied	= copied;
248 	),
249 
250 	TP_printk("dev %d,%d ino %lu pos %lld len %u copied %u",
251 		  MAJOR(__entry->dev), MINOR(__entry->dev),
252 		  (unsigned long) __entry->ino,
253 		  __entry->pos, __entry->len, __entry->copied)
254 );
255 
256 DEFINE_EVENT(ext4__write_end, ext4_ordered_write_end,
257 
258 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
259 		 unsigned int copied),
260 
261 	TP_ARGS(inode, pos, len, copied)
262 );
263 
264 DEFINE_EVENT(ext4__write_end, ext4_writeback_write_end,
265 
266 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
267 		 unsigned int copied),
268 
269 	TP_ARGS(inode, pos, len, copied)
270 );
271 
272 DEFINE_EVENT(ext4__write_end, ext4_journalled_write_end,
273 
274 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
275 		 unsigned int copied),
276 
277 	TP_ARGS(inode, pos, len, copied)
278 );
279 
280 DEFINE_EVENT(ext4__write_end, ext4_da_write_end,
281 
282 	TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
283 		 unsigned int copied),
284 
285 	TP_ARGS(inode, pos, len, copied)
286 );
287 
288 TRACE_EVENT(ext4_da_writepages,
289 	TP_PROTO(struct inode *inode, struct writeback_control *wbc),
290 
291 	TP_ARGS(inode, wbc),
292 
293 	TP_STRUCT__entry(
294 		__field(	dev_t,	dev			)
295 		__field(	ino_t,	ino			)
296 		__field(	long,	nr_to_write		)
297 		__field(	long,	pages_skipped		)
298 		__field(	loff_t,	range_start		)
299 		__field(	loff_t,	range_end		)
300 		__field(	int,	sync_mode		)
301 		__field(	char,	for_kupdate		)
302 		__field(	char,	range_cyclic		)
303 		__field(       pgoff_t,	writeback_index		)
304 	),
305 
306 	TP_fast_assign(
307 		__entry->dev		= inode->i_sb->s_dev;
308 		__entry->ino		= inode->i_ino;
309 		__entry->nr_to_write	= wbc->nr_to_write;
310 		__entry->pages_skipped	= wbc->pages_skipped;
311 		__entry->range_start	= wbc->range_start;
312 		__entry->range_end	= wbc->range_end;
313 		__entry->sync_mode	= wbc->sync_mode;
314 		__entry->for_kupdate	= wbc->for_kupdate;
315 		__entry->range_cyclic	= wbc->range_cyclic;
316 		__entry->writeback_index = inode->i_mapping->writeback_index;
317 	),
318 
319 	TP_printk("dev %d,%d ino %lu nr_to_write %ld pages_skipped %ld "
320 		  "range_start %lld range_end %lld sync_mode %d"
321 		  "for_kupdate %d range_cyclic %d writeback_index %lu",
322 		  MAJOR(__entry->dev), MINOR(__entry->dev),
323 		  (unsigned long) __entry->ino, __entry->nr_to_write,
324 		  __entry->pages_skipped, __entry->range_start,
325 		  __entry->range_end, __entry->sync_mode,
326 		  __entry->for_kupdate, __entry->range_cyclic,
327 		  (unsigned long) __entry->writeback_index)
328 );
329 
330 TRACE_EVENT(ext4_da_write_pages,
331 	TP_PROTO(struct inode *inode, struct mpage_da_data *mpd),
332 
333 	TP_ARGS(inode, mpd),
334 
335 	TP_STRUCT__entry(
336 		__field(	dev_t,	dev			)
337 		__field(	ino_t,	ino			)
338 		__field(	__u64,	b_blocknr		)
339 		__field(	__u32,	b_size			)
340 		__field(	__u32,	b_state			)
341 		__field(	unsigned long,	first_page	)
342 		__field(	int,	io_done			)
343 		__field(	int,	pages_written		)
344 		__field(	int,	sync_mode		)
345 	),
346 
347 	TP_fast_assign(
348 		__entry->dev		= inode->i_sb->s_dev;
349 		__entry->ino		= inode->i_ino;
350 		__entry->b_blocknr	= mpd->b_blocknr;
351 		__entry->b_size		= mpd->b_size;
352 		__entry->b_state	= mpd->b_state;
353 		__entry->first_page	= mpd->first_page;
354 		__entry->io_done	= mpd->io_done;
355 		__entry->pages_written	= mpd->pages_written;
356 		__entry->sync_mode	= mpd->wbc->sync_mode;
357 	),
358 
359 	TP_printk("dev %d,%d ino %lu b_blocknr %llu b_size %u b_state 0x%04x "
360 		  "first_page %lu io_done %d pages_written %d sync_mode %d",
361 		  MAJOR(__entry->dev), MINOR(__entry->dev),
362 		  (unsigned long) __entry->ino,
363 		  __entry->b_blocknr, __entry->b_size,
364 		  __entry->b_state, __entry->first_page,
365 		  __entry->io_done, __entry->pages_written,
366 		  __entry->sync_mode
367                   )
368 );
369 
370 TRACE_EVENT(ext4_da_writepages_result,
371 	TP_PROTO(struct inode *inode, struct writeback_control *wbc,
372 			int ret, int pages_written),
373 
374 	TP_ARGS(inode, wbc, ret, pages_written),
375 
376 	TP_STRUCT__entry(
377 		__field(	dev_t,	dev			)
378 		__field(	ino_t,	ino			)
379 		__field(	int,	ret			)
380 		__field(	int,	pages_written		)
381 		__field(	long,	pages_skipped		)
382 		__field(	int,	sync_mode		)
383 		__field(       pgoff_t,	writeback_index		)
384 	),
385 
386 	TP_fast_assign(
387 		__entry->dev		= inode->i_sb->s_dev;
388 		__entry->ino		= inode->i_ino;
389 		__entry->ret		= ret;
390 		__entry->pages_written	= pages_written;
391 		__entry->pages_skipped	= wbc->pages_skipped;
392 		__entry->sync_mode	= wbc->sync_mode;
393 		__entry->writeback_index = inode->i_mapping->writeback_index;
394 	),
395 
396 	TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld "
397 		  "sync_mode %d writeback_index %lu",
398 		  MAJOR(__entry->dev), MINOR(__entry->dev),
399 		  (unsigned long) __entry->ino, __entry->ret,
400 		  __entry->pages_written, __entry->pages_skipped,
401 		  __entry->sync_mode,
402 		  (unsigned long) __entry->writeback_index)
403 );
404 
405 DECLARE_EVENT_CLASS(ext4__page_op,
406 	TP_PROTO(struct page *page),
407 
408 	TP_ARGS(page),
409 
410 	TP_STRUCT__entry(
411 		__field(	pgoff_t, index			)
412 		__field(	ino_t,	ino			)
413 		__field(	dev_t,	dev			)
414 
415 	),
416 
417 	TP_fast_assign(
418 		__entry->index	= page->index;
419 		__entry->ino	= page->mapping->host->i_ino;
420 		__entry->dev	= page->mapping->host->i_sb->s_dev;
421 	),
422 
423 	TP_printk("dev %d,%d ino %lu page_index %lu",
424 		  MAJOR(__entry->dev), MINOR(__entry->dev),
425 		  (unsigned long) __entry->ino,
426 		  (unsigned long) __entry->index)
427 );
428 
429 DEFINE_EVENT(ext4__page_op, ext4_writepage,
430 
431 	TP_PROTO(struct page *page),
432 
433 	TP_ARGS(page)
434 );
435 
436 DEFINE_EVENT(ext4__page_op, ext4_readpage,
437 
438 	TP_PROTO(struct page *page),
439 
440 	TP_ARGS(page)
441 );
442 
443 DEFINE_EVENT(ext4__page_op, ext4_releasepage,
444 
445 	TP_PROTO(struct page *page),
446 
447 	TP_ARGS(page)
448 );
449 
450 TRACE_EVENT(ext4_invalidatepage,
451 	TP_PROTO(struct page *page, unsigned long offset),
452 
453 	TP_ARGS(page, offset),
454 
455 	TP_STRUCT__entry(
456 		__field(	pgoff_t, index			)
457 		__field(	unsigned long, offset		)
458 		__field(	ino_t,	ino			)
459 		__field(	dev_t,	dev			)
460 
461 	),
462 
463 	TP_fast_assign(
464 		__entry->index	= page->index;
465 		__entry->offset	= offset;
466 		__entry->ino	= page->mapping->host->i_ino;
467 		__entry->dev	= page->mapping->host->i_sb->s_dev;
468 	),
469 
470 	TP_printk("dev %d,%d ino %lu page_index %lu offset %lu",
471 		  MAJOR(__entry->dev), MINOR(__entry->dev),
472 		  (unsigned long) __entry->ino,
473 		  (unsigned long) __entry->index, __entry->offset)
474 );
475 
476 TRACE_EVENT(ext4_discard_blocks,
477 	TP_PROTO(struct super_block *sb, unsigned long long blk,
478 			unsigned long long count),
479 
480 	TP_ARGS(sb, blk, count),
481 
482 	TP_STRUCT__entry(
483 		__field(	dev_t,	dev			)
484 		__field(	__u64,	blk			)
485 		__field(	__u64,	count			)
486 
487 	),
488 
489 	TP_fast_assign(
490 		__entry->dev	= sb->s_dev;
491 		__entry->blk	= blk;
492 		__entry->count	= count;
493 	),
494 
495 	TP_printk("dev %d,%d blk %llu count %llu",
496 		  MAJOR(__entry->dev), MINOR(__entry->dev),
497 		  __entry->blk, __entry->count)
498 );
499 
500 DECLARE_EVENT_CLASS(ext4__mb_new_pa,
501 	TP_PROTO(struct ext4_allocation_context *ac,
502 		 struct ext4_prealloc_space *pa),
503 
504 	TP_ARGS(ac, pa),
505 
506 	TP_STRUCT__entry(
507 		__field(	dev_t,	dev			)
508 		__field(	ino_t,	ino			)
509 		__field(	__u64,	pa_pstart		)
510 		__field(	__u32,	pa_len			)
511 		__field(	__u64,	pa_lstart		)
512 
513 	),
514 
515 	TP_fast_assign(
516 		__entry->dev		= ac->ac_sb->s_dev;
517 		__entry->ino		= ac->ac_inode->i_ino;
518 		__entry->pa_pstart	= pa->pa_pstart;
519 		__entry->pa_len		= pa->pa_len;
520 		__entry->pa_lstart	= pa->pa_lstart;
521 	),
522 
523 	TP_printk("dev %d,%d ino %lu pstart %llu len %u lstart %llu",
524 		  MAJOR(__entry->dev), MINOR(__entry->dev),
525 		  (unsigned long) __entry->ino,
526 		  __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart)
527 );
528 
529 DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_inode_pa,
530 
531 	TP_PROTO(struct ext4_allocation_context *ac,
532 		 struct ext4_prealloc_space *pa),
533 
534 	TP_ARGS(ac, pa)
535 );
536 
537 DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_group_pa,
538 
539 	TP_PROTO(struct ext4_allocation_context *ac,
540 		 struct ext4_prealloc_space *pa),
541 
542 	TP_ARGS(ac, pa)
543 );
544 
545 TRACE_EVENT(ext4_mb_release_inode_pa,
546 	TP_PROTO(struct ext4_prealloc_space *pa,
547 		 unsigned long long block, unsigned int count),
548 
549 	TP_ARGS(pa, block, count),
550 
551 	TP_STRUCT__entry(
552 		__field(	dev_t,	dev			)
553 		__field(	ino_t,	ino			)
554 		__field(	__u64,	block			)
555 		__field(	__u32,	count			)
556 
557 	),
558 
559 	TP_fast_assign(
560 		__entry->dev		= pa->pa_inode->i_sb->s_dev;
561 		__entry->ino		= pa->pa_inode->i_ino;
562 		__entry->block		= block;
563 		__entry->count		= count;
564 	),
565 
566 	TP_printk("dev %d,%d ino %lu block %llu count %u",
567 		  MAJOR(__entry->dev), MINOR(__entry->dev),
568 		  (unsigned long) __entry->ino,
569 		  __entry->block, __entry->count)
570 );
571 
572 TRACE_EVENT(ext4_mb_release_group_pa,
573 	TP_PROTO(struct ext4_prealloc_space *pa),
574 
575 	TP_ARGS(pa),
576 
577 	TP_STRUCT__entry(
578 		__field(	dev_t,	dev			)
579 		__field(	__u64,	pa_pstart		)
580 		__field(	__u32,	pa_len			)
581 
582 	),
583 
584 	TP_fast_assign(
585 		__entry->dev		= pa->pa_inode->i_sb->s_dev;
586 		__entry->pa_pstart	= pa->pa_pstart;
587 		__entry->pa_len		= pa->pa_len;
588 	),
589 
590 	TP_printk("dev %d,%d pstart %llu len %u",
591 		  MAJOR(__entry->dev), MINOR(__entry->dev),
592 		  __entry->pa_pstart, __entry->pa_len)
593 );
594 
595 TRACE_EVENT(ext4_discard_preallocations,
596 	TP_PROTO(struct inode *inode),
597 
598 	TP_ARGS(inode),
599 
600 	TP_STRUCT__entry(
601 		__field(	dev_t,	dev			)
602 		__field(	ino_t,	ino			)
603 
604 	),
605 
606 	TP_fast_assign(
607 		__entry->dev	= inode->i_sb->s_dev;
608 		__entry->ino	= inode->i_ino;
609 	),
610 
611 	TP_printk("dev %d,%d ino %lu",
612 		  MAJOR(__entry->dev), MINOR(__entry->dev),
613 		  (unsigned long) __entry->ino)
614 );
615 
616 TRACE_EVENT(ext4_mb_discard_preallocations,
617 	TP_PROTO(struct super_block *sb, int needed),
618 
619 	TP_ARGS(sb, needed),
620 
621 	TP_STRUCT__entry(
622 		__field(	dev_t,	dev			)
623 		__field(	int,	needed			)
624 
625 	),
626 
627 	TP_fast_assign(
628 		__entry->dev	= sb->s_dev;
629 		__entry->needed	= needed;
630 	),
631 
632 	TP_printk("dev %d,%d needed %d",
633 		  MAJOR(__entry->dev), MINOR(__entry->dev),
634 		  __entry->needed)
635 );
636 
637 TRACE_EVENT(ext4_request_blocks,
638 	TP_PROTO(struct ext4_allocation_request *ar),
639 
640 	TP_ARGS(ar),
641 
642 	TP_STRUCT__entry(
643 		__field(	dev_t,	dev			)
644 		__field(	ino_t,	ino			)
645 		__field(	unsigned int, flags		)
646 		__field(	unsigned int, len		)
647 		__field(	__u32,  logical			)
648 		__field(	__u32,	lleft			)
649 		__field(	__u32,	lright			)
650 		__field(	__u64,	goal			)
651 		__field(	__u64,	pleft			)
652 		__field(	__u64,	pright			)
653 	),
654 
655 	TP_fast_assign(
656 		__entry->dev	= ar->inode->i_sb->s_dev;
657 		__entry->ino	= ar->inode->i_ino;
658 		__entry->flags	= ar->flags;
659 		__entry->len	= ar->len;
660 		__entry->logical = ar->logical;
661 		__entry->goal	= ar->goal;
662 		__entry->lleft	= ar->lleft;
663 		__entry->lright	= ar->lright;
664 		__entry->pleft	= ar->pleft;
665 		__entry->pright	= ar->pright;
666 	),
667 
668 	TP_printk("dev %d,%d ino %lu flags %u len %u lblk %u goal %llu "
669 		  "lleft %u lright %u pleft %llu pright %llu ",
670 		  MAJOR(__entry->dev), MINOR(__entry->dev),
671 		  (unsigned long) __entry->ino, __entry->flags,
672 		  __entry->len, __entry->logical, __entry->goal,
673 		  __entry->lleft, __entry->lright, __entry->pleft,
674 		  __entry->pright)
675 );
676 
677 TRACE_EVENT(ext4_allocate_blocks,
678 	TP_PROTO(struct ext4_allocation_request *ar, unsigned long long block),
679 
680 	TP_ARGS(ar, block),
681 
682 	TP_STRUCT__entry(
683 		__field(	dev_t,	dev			)
684 		__field(	ino_t,	ino			)
685 		__field(	__u64,	block			)
686 		__field(	unsigned int, flags		)
687 		__field(	unsigned int, len		)
688 		__field(	__u32,  logical			)
689 		__field(	__u32,	lleft			)
690 		__field(	__u32,	lright			)
691 		__field(	__u64,	goal			)
692 		__field(	__u64,	pleft			)
693 		__field(	__u64,	pright			)
694 	),
695 
696 	TP_fast_assign(
697 		__entry->dev	= ar->inode->i_sb->s_dev;
698 		__entry->ino	= ar->inode->i_ino;
699 		__entry->block	= block;
700 		__entry->flags	= ar->flags;
701 		__entry->len	= ar->len;
702 		__entry->logical = ar->logical;
703 		__entry->goal	= ar->goal;
704 		__entry->lleft	= ar->lleft;
705 		__entry->lright	= ar->lright;
706 		__entry->pleft	= ar->pleft;
707 		__entry->pright	= ar->pright;
708 	),
709 
710 	TP_printk("dev %d,%d ino %lu flags %u len %u block %llu lblk %u "
711 		  "goal %llu lleft %u lright %u pleft %llu pright %llu",
712 		  MAJOR(__entry->dev), MINOR(__entry->dev),
713 		  (unsigned long) __entry->ino, __entry->flags,
714 		  __entry->len, __entry->block, __entry->logical,
715 		  __entry->goal,  __entry->lleft, __entry->lright,
716 		  __entry->pleft, __entry->pright)
717 );
718 
719 TRACE_EVENT(ext4_free_blocks,
720 	TP_PROTO(struct inode *inode, __u64 block, unsigned long count,
721 		 int flags),
722 
723 	TP_ARGS(inode, block, count, flags),
724 
725 	TP_STRUCT__entry(
726 		__field(	dev_t,	dev			)
727 		__field(	ino_t,	ino			)
728 		__field(	__u16,	mode			)
729 		__field(	__u64,	block			)
730 		__field(	unsigned long,	count		)
731 		__field(	int,	flags			)
732 	),
733 
734 	TP_fast_assign(
735 		__entry->dev		= inode->i_sb->s_dev;
736 		__entry->ino		= inode->i_ino;
737 		__entry->mode		= inode->i_mode;
738 		__entry->block		= block;
739 		__entry->count		= count;
740 		__entry->flags		= flags;
741 	),
742 
743 	TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %d",
744 		  MAJOR(__entry->dev), MINOR(__entry->dev),
745 		  (unsigned long) __entry->ino,
746 		  __entry->mode, __entry->block, __entry->count,
747 		  __entry->flags)
748 );
749 
750 TRACE_EVENT(ext4_sync_file_enter,
751 	TP_PROTO(struct file *file, int datasync),
752 
753 	TP_ARGS(file, datasync),
754 
755 	TP_STRUCT__entry(
756 		__field(	dev_t,	dev			)
757 		__field(	ino_t,	ino			)
758 		__field(	ino_t,	parent			)
759 		__field(	int,	datasync		)
760 	),
761 
762 	TP_fast_assign(
763 		struct dentry *dentry = file->f_path.dentry;
764 
765 		__entry->dev		= dentry->d_inode->i_sb->s_dev;
766 		__entry->ino		= dentry->d_inode->i_ino;
767 		__entry->datasync	= datasync;
768 		__entry->parent		= dentry->d_parent->d_inode->i_ino;
769 	),
770 
771 	TP_printk("dev %d,%d ino %lu parent %lu datasync %d ",
772 		  MAJOR(__entry->dev), MINOR(__entry->dev),
773 		  (unsigned long) __entry->ino,
774 		  (unsigned long) __entry->parent, __entry->datasync)
775 );
776 
777 TRACE_EVENT(ext4_sync_file_exit,
778 	TP_PROTO(struct inode *inode, int ret),
779 
780 	TP_ARGS(inode, ret),
781 
782 	TP_STRUCT__entry(
783 		__field(	int,	ret			)
784 		__field(	ino_t,	ino			)
785 		__field(	dev_t,	dev			)
786 	),
787 
788 	TP_fast_assign(
789 		__entry->ret		= ret;
790 		__entry->ino		= inode->i_ino;
791 		__entry->dev		= inode->i_sb->s_dev;
792 	),
793 
794 	TP_printk("dev %d,%d ino %lu ret %d",
795 		  MAJOR(__entry->dev), MINOR(__entry->dev),
796 		  (unsigned long) __entry->ino,
797 		  __entry->ret)
798 );
799 
800 TRACE_EVENT(ext4_sync_fs,
801 	TP_PROTO(struct super_block *sb, int wait),
802 
803 	TP_ARGS(sb, wait),
804 
805 	TP_STRUCT__entry(
806 		__field(	dev_t,	dev			)
807 		__field(	int,	wait			)
808 
809 	),
810 
811 	TP_fast_assign(
812 		__entry->dev	= sb->s_dev;
813 		__entry->wait	= wait;
814 	),
815 
816 	TP_printk("dev %d,%d wait %d",
817 		  MAJOR(__entry->dev), MINOR(__entry->dev),
818 		  __entry->wait)
819 );
820 
821 TRACE_EVENT(ext4_alloc_da_blocks,
822 	TP_PROTO(struct inode *inode),
823 
824 	TP_ARGS(inode),
825 
826 	TP_STRUCT__entry(
827 		__field(	dev_t,	dev			)
828 		__field(	ino_t,	ino			)
829 		__field( unsigned int,	data_blocks	)
830 		__field( unsigned int,	meta_blocks	)
831 	),
832 
833 	TP_fast_assign(
834 		__entry->dev	= inode->i_sb->s_dev;
835 		__entry->ino	= inode->i_ino;
836 		__entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
837 		__entry->meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
838 	),
839 
840 	TP_printk("dev %d,%d ino %lu data_blocks %u meta_blocks %u",
841 		  MAJOR(__entry->dev), MINOR(__entry->dev),
842 		  (unsigned long) __entry->ino,
843 		  __entry->data_blocks, __entry->meta_blocks)
844 );
845 
846 TRACE_EVENT(ext4_mballoc_alloc,
847 	TP_PROTO(struct ext4_allocation_context *ac),
848 
849 	TP_ARGS(ac),
850 
851 	TP_STRUCT__entry(
852 		__field(	dev_t,	dev			)
853 		__field(	ino_t,	ino			)
854 		__field(	__u16,	found			)
855 		__field(	__u16,	groups			)
856 		__field(	__u16,	buddy			)
857 		__field(	__u16,	flags			)
858 		__field(	__u16,	tail			)
859 		__field(	__u8,	cr			)
860 		__field(	__u32, 	orig_logical		)
861 		__field(	  int,	orig_start		)
862 		__field(	__u32, 	orig_group		)
863 		__field(	  int,	orig_len		)
864 		__field(	__u32, 	goal_logical		)
865 		__field(	  int,	goal_start		)
866 		__field(	__u32, 	goal_group		)
867 		__field(	  int,	goal_len		)
868 		__field(	__u32, 	result_logical		)
869 		__field(	  int,	result_start		)
870 		__field(	__u32, 	result_group		)
871 		__field(	  int,	result_len		)
872 	),
873 
874 	TP_fast_assign(
875 		__entry->dev		= ac->ac_inode->i_sb->s_dev;
876 		__entry->ino		= ac->ac_inode->i_ino;
877 		__entry->found		= ac->ac_found;
878 		__entry->flags		= ac->ac_flags;
879 		__entry->groups		= ac->ac_groups_scanned;
880 		__entry->buddy		= ac->ac_buddy;
881 		__entry->tail		= ac->ac_tail;
882 		__entry->cr		= ac->ac_criteria;
883 		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
884 		__entry->orig_start	= ac->ac_o_ex.fe_start;
885 		__entry->orig_group	= ac->ac_o_ex.fe_group;
886 		__entry->orig_len	= ac->ac_o_ex.fe_len;
887 		__entry->goal_logical	= ac->ac_g_ex.fe_logical;
888 		__entry->goal_start	= ac->ac_g_ex.fe_start;
889 		__entry->goal_group	= ac->ac_g_ex.fe_group;
890 		__entry->goal_len	= ac->ac_g_ex.fe_len;
891 		__entry->result_logical	= ac->ac_f_ex.fe_logical;
892 		__entry->result_start	= ac->ac_f_ex.fe_start;
893 		__entry->result_group	= ac->ac_f_ex.fe_group;
894 		__entry->result_len	= ac->ac_f_ex.fe_len;
895 	),
896 
897 	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u "
898 		  "result %u/%d/%u@%u blks %u grps %u cr %u flags 0x%04x "
899 		  "tail %u broken %u",
900 		  MAJOR(__entry->dev), MINOR(__entry->dev),
901 		  (unsigned long) __entry->ino,
902 		  __entry->orig_group, __entry->orig_start,
903 		  __entry->orig_len, __entry->orig_logical,
904 		  __entry->goal_group, __entry->goal_start,
905 		  __entry->goal_len, __entry->goal_logical,
906 		  __entry->result_group, __entry->result_start,
907 		  __entry->result_len, __entry->result_logical,
908 		  __entry->found, __entry->groups, __entry->cr,
909 		  __entry->flags, __entry->tail,
910 		  __entry->buddy ? 1 << __entry->buddy : 0)
911 );
912 
913 TRACE_EVENT(ext4_mballoc_prealloc,
914 	TP_PROTO(struct ext4_allocation_context *ac),
915 
916 	TP_ARGS(ac),
917 
918 	TP_STRUCT__entry(
919 		__field(	dev_t,	dev			)
920 		__field(	ino_t,	ino			)
921 		__field(	__u32, 	orig_logical		)
922 		__field(	  int,	orig_start		)
923 		__field(	__u32, 	orig_group		)
924 		__field(	  int,	orig_len		)
925 		__field(	__u32, 	result_logical		)
926 		__field(	  int,	result_start		)
927 		__field(	__u32, 	result_group		)
928 		__field(	  int,	result_len		)
929 	),
930 
931 	TP_fast_assign(
932 		__entry->dev		= ac->ac_inode->i_sb->s_dev;
933 		__entry->ino		= ac->ac_inode->i_ino;
934 		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
935 		__entry->orig_start	= ac->ac_o_ex.fe_start;
936 		__entry->orig_group	= ac->ac_o_ex.fe_group;
937 		__entry->orig_len	= ac->ac_o_ex.fe_len;
938 		__entry->result_logical	= ac->ac_b_ex.fe_logical;
939 		__entry->result_start	= ac->ac_b_ex.fe_start;
940 		__entry->result_group	= ac->ac_b_ex.fe_group;
941 		__entry->result_len	= ac->ac_b_ex.fe_len;
942 	),
943 
944 	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u",
945 		  MAJOR(__entry->dev), MINOR(__entry->dev),
946 		  (unsigned long) __entry->ino,
947 		  __entry->orig_group, __entry->orig_start,
948 		  __entry->orig_len, __entry->orig_logical,
949 		  __entry->result_group, __entry->result_start,
950 		  __entry->result_len, __entry->result_logical)
951 );
952 
953 DECLARE_EVENT_CLASS(ext4__mballoc,
954 	TP_PROTO(struct super_block *sb,
955 		 struct inode *inode,
956 		 ext4_group_t group,
957 		 ext4_grpblk_t start,
958 		 ext4_grpblk_t len),
959 
960 	TP_ARGS(sb, inode, group, start, len),
961 
962 	TP_STRUCT__entry(
963 		__field(	dev_t,	dev			)
964 		__field(	ino_t,	ino			)
965 		__field(	  int,	result_start		)
966 		__field(	__u32, 	result_group		)
967 		__field(	  int,	result_len		)
968 	),
969 
970 	TP_fast_assign(
971 		__entry->dev		= sb->s_dev;
972 		__entry->ino		= inode ? inode->i_ino : 0;
973 		__entry->result_start	= start;
974 		__entry->result_group	= group;
975 		__entry->result_len	= len;
976 	),
977 
978 	TP_printk("dev %d,%d inode %lu extent %u/%d/%d ",
979 		  MAJOR(__entry->dev), MINOR(__entry->dev),
980 		  (unsigned long) __entry->ino,
981 		  __entry->result_group, __entry->result_start,
982 		  __entry->result_len)
983 );
984 
985 DEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard,
986 
987 	TP_PROTO(struct super_block *sb,
988 		 struct inode *inode,
989 		 ext4_group_t group,
990 		 ext4_grpblk_t start,
991 		 ext4_grpblk_t len),
992 
993 	TP_ARGS(sb, inode, group, start, len)
994 );
995 
996 DEFINE_EVENT(ext4__mballoc, ext4_mballoc_free,
997 
998 	TP_PROTO(struct super_block *sb,
999 		 struct inode *inode,
1000 		 ext4_group_t group,
1001 		 ext4_grpblk_t start,
1002 		 ext4_grpblk_t len),
1003 
1004 	TP_ARGS(sb, inode, group, start, len)
1005 );
1006 
1007 TRACE_EVENT(ext4_forget,
1008 	TP_PROTO(struct inode *inode, int is_metadata, __u64 block),
1009 
1010 	TP_ARGS(inode, is_metadata, block),
1011 
1012 	TP_STRUCT__entry(
1013 		__field(	dev_t,	dev			)
1014 		__field(	ino_t,	ino			)
1015 		__field(	__u16,	mode			)
1016 		__field(	int,	is_metadata		)
1017 		__field(	__u64,	block			)
1018 	),
1019 
1020 	TP_fast_assign(
1021 		__entry->dev	= inode->i_sb->s_dev;
1022 		__entry->ino	= inode->i_ino;
1023 		__entry->mode	= inode->i_mode;
1024 		__entry->is_metadata = is_metadata;
1025 		__entry->block	= block;
1026 	),
1027 
1028 	TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %llu",
1029 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1030 		  (unsigned long) __entry->ino,
1031 		  __entry->mode, __entry->is_metadata, __entry->block)
1032 );
1033 
1034 TRACE_EVENT(ext4_da_update_reserve_space,
1035 	TP_PROTO(struct inode *inode, int used_blocks),
1036 
1037 	TP_ARGS(inode, used_blocks),
1038 
1039 	TP_STRUCT__entry(
1040 		__field(	dev_t,	dev			)
1041 		__field(	ino_t,	ino			)
1042 		__field(	__u16,	mode			)
1043 		__field(	__u64,	i_blocks		)
1044 		__field(	int,	used_blocks		)
1045 		__field(	int,	reserved_data_blocks	)
1046 		__field(	int,	reserved_meta_blocks	)
1047 		__field(	int,	allocated_meta_blocks	)
1048 	),
1049 
1050 	TP_fast_assign(
1051 		__entry->dev	= inode->i_sb->s_dev;
1052 		__entry->ino	= inode->i_ino;
1053 		__entry->mode	= inode->i_mode;
1054 		__entry->i_blocks = inode->i_blocks;
1055 		__entry->used_blocks = used_blocks;
1056 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1057 		__entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1058 		__entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks;
1059 	),
1060 
1061 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d "
1062 		  "reserved_data_blocks %d reserved_meta_blocks %d "
1063 		  "allocated_meta_blocks %d",
1064 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1065 		  (unsigned long) __entry->ino,
1066 		  __entry->mode, __entry->i_blocks,
1067 		  __entry->used_blocks, __entry->reserved_data_blocks,
1068 		  __entry->reserved_meta_blocks, __entry->allocated_meta_blocks)
1069 );
1070 
1071 TRACE_EVENT(ext4_da_reserve_space,
1072 	TP_PROTO(struct inode *inode, int md_needed),
1073 
1074 	TP_ARGS(inode, md_needed),
1075 
1076 	TP_STRUCT__entry(
1077 		__field(	dev_t,	dev			)
1078 		__field(	ino_t,	ino			)
1079 		__field(	__u16,  mode			)
1080 		__field(	__u64,	i_blocks		)
1081 		__field(	int,	md_needed		)
1082 		__field(	int,	reserved_data_blocks	)
1083 		__field(	int,	reserved_meta_blocks	)
1084 	),
1085 
1086 	TP_fast_assign(
1087 		__entry->dev	= inode->i_sb->s_dev;
1088 		__entry->ino	= inode->i_ino;
1089 		__entry->mode	= inode->i_mode;
1090 		__entry->i_blocks = inode->i_blocks;
1091 		__entry->md_needed = md_needed;
1092 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1093 		__entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1094 	),
1095 
1096 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu md_needed %d "
1097 		  "reserved_data_blocks %d reserved_meta_blocks %d",
1098 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1099 		  (unsigned long) __entry->ino,
1100 		  __entry->mode, __entry->i_blocks,
1101 		  __entry->md_needed, __entry->reserved_data_blocks,
1102 		  __entry->reserved_meta_blocks)
1103 );
1104 
1105 TRACE_EVENT(ext4_da_release_space,
1106 	TP_PROTO(struct inode *inode, int freed_blocks),
1107 
1108 	TP_ARGS(inode, freed_blocks),
1109 
1110 	TP_STRUCT__entry(
1111 		__field(	dev_t,	dev			)
1112 		__field(	ino_t,	ino			)
1113 		__field(	__u16,  mode			)
1114 		__field(	__u64,	i_blocks		)
1115 		__field(	int,	freed_blocks		)
1116 		__field(	int,	reserved_data_blocks	)
1117 		__field(	int,	reserved_meta_blocks	)
1118 		__field(	int,	allocated_meta_blocks	)
1119 	),
1120 
1121 	TP_fast_assign(
1122 		__entry->dev	= inode->i_sb->s_dev;
1123 		__entry->ino	= inode->i_ino;
1124 		__entry->mode	= inode->i_mode;
1125 		__entry->i_blocks = inode->i_blocks;
1126 		__entry->freed_blocks = freed_blocks;
1127 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1128 		__entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1129 		__entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks;
1130 	),
1131 
1132 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d "
1133 		  "reserved_data_blocks %d reserved_meta_blocks %d "
1134 		  "allocated_meta_blocks %d",
1135 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1136 		  (unsigned long) __entry->ino,
1137 		  __entry->mode, __entry->i_blocks,
1138 		  __entry->freed_blocks, __entry->reserved_data_blocks,
1139 		  __entry->reserved_meta_blocks, __entry->allocated_meta_blocks)
1140 );
1141 
1142 DECLARE_EVENT_CLASS(ext4__bitmap_load,
1143 	TP_PROTO(struct super_block *sb, unsigned long group),
1144 
1145 	TP_ARGS(sb, group),
1146 
1147 	TP_STRUCT__entry(
1148 		__field(	dev_t,	dev			)
1149 		__field(	__u32,	group			)
1150 
1151 	),
1152 
1153 	TP_fast_assign(
1154 		__entry->dev	= sb->s_dev;
1155 		__entry->group	= group;
1156 	),
1157 
1158 	TP_printk("dev %d,%d group %u",
1159 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1160 		  __entry->group)
1161 );
1162 
1163 DEFINE_EVENT(ext4__bitmap_load, ext4_mb_bitmap_load,
1164 
1165 	TP_PROTO(struct super_block *sb, unsigned long group),
1166 
1167 	TP_ARGS(sb, group)
1168 );
1169 
1170 DEFINE_EVENT(ext4__bitmap_load, ext4_mb_buddy_bitmap_load,
1171 
1172 	TP_PROTO(struct super_block *sb, unsigned long group),
1173 
1174 	TP_ARGS(sb, group)
1175 );
1176 
1177 DEFINE_EVENT(ext4__bitmap_load, ext4_read_block_bitmap_load,
1178 
1179 	TP_PROTO(struct super_block *sb, unsigned long group),
1180 
1181 	TP_ARGS(sb, group)
1182 );
1183 
1184 DEFINE_EVENT(ext4__bitmap_load, ext4_load_inode_bitmap,
1185 
1186 	TP_PROTO(struct super_block *sb, unsigned long group),
1187 
1188 	TP_ARGS(sb, group)
1189 );
1190 
1191 TRACE_EVENT(ext4_direct_IO_enter,
1192 	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw),
1193 
1194 	TP_ARGS(inode, offset, len, rw),
1195 
1196 	TP_STRUCT__entry(
1197 		__field(	ino_t,	ino			)
1198 		__field(	dev_t,	dev			)
1199 		__field(	loff_t,	pos			)
1200 		__field(	unsigned long,	len		)
1201 		__field(	int,	rw			)
1202 	),
1203 
1204 	TP_fast_assign(
1205 		__entry->ino	= inode->i_ino;
1206 		__entry->dev	= inode->i_sb->s_dev;
1207 		__entry->pos	= offset;
1208 		__entry->len	= len;
1209 		__entry->rw	= rw;
1210 	),
1211 
1212 	TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d",
1213 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1214 		  (unsigned long) __entry->ino,
1215 		  __entry->pos, __entry->len, __entry->rw)
1216 );
1217 
1218 TRACE_EVENT(ext4_direct_IO_exit,
1219 	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len,
1220 		 int rw, int ret),
1221 
1222 	TP_ARGS(inode, offset, len, rw, ret),
1223 
1224 	TP_STRUCT__entry(
1225 		__field(	ino_t,	ino			)
1226 		__field(	dev_t,	dev			)
1227 		__field(	loff_t,	pos			)
1228 		__field(	unsigned long,	len		)
1229 		__field(	int,	rw			)
1230 		__field(	int,	ret			)
1231 	),
1232 
1233 	TP_fast_assign(
1234 		__entry->ino	= inode->i_ino;
1235 		__entry->dev	= inode->i_sb->s_dev;
1236 		__entry->pos	= offset;
1237 		__entry->len	= len;
1238 		__entry->rw	= rw;
1239 		__entry->ret	= ret;
1240 	),
1241 
1242 	TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d ret %d",
1243 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1244 		  (unsigned long) __entry->ino,
1245 		  __entry->pos, __entry->len,
1246 		  __entry->rw, __entry->ret)
1247 );
1248 
1249 TRACE_EVENT(ext4_fallocate_enter,
1250 	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
1251 
1252 	TP_ARGS(inode, offset, len, mode),
1253 
1254 	TP_STRUCT__entry(
1255 		__field(	ino_t,	ino			)
1256 		__field(	dev_t,	dev			)
1257 		__field(	loff_t,	pos			)
1258 		__field(	loff_t,	len			)
1259 		__field(	int,	mode			)
1260 	),
1261 
1262 	TP_fast_assign(
1263 		__entry->ino	= inode->i_ino;
1264 		__entry->dev	= inode->i_sb->s_dev;
1265 		__entry->pos	= offset;
1266 		__entry->len	= len;
1267 		__entry->mode	= mode;
1268 	),
1269 
1270 	TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %d",
1271 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1272 		  (unsigned long) __entry->ino, __entry->pos,
1273 		  __entry->len, __entry->mode)
1274 );
1275 
1276 TRACE_EVENT(ext4_fallocate_exit,
1277 	TP_PROTO(struct inode *inode, loff_t offset,
1278 		 unsigned int max_blocks, int ret),
1279 
1280 	TP_ARGS(inode, offset, max_blocks, ret),
1281 
1282 	TP_STRUCT__entry(
1283 		__field(	ino_t,	ino			)
1284 		__field(	dev_t,	dev			)
1285 		__field(	loff_t,	pos			)
1286 		__field(	unsigned int,	blocks		)
1287 		__field(	int, 	ret			)
1288 	),
1289 
1290 	TP_fast_assign(
1291 		__entry->ino	= inode->i_ino;
1292 		__entry->dev	= inode->i_sb->s_dev;
1293 		__entry->pos	= offset;
1294 		__entry->blocks	= max_blocks;
1295 		__entry->ret	= ret;
1296 	),
1297 
1298 	TP_printk("dev %d,%d ino %lu pos %lld blocks %u ret %d",
1299 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1300 		  (unsigned long) __entry->ino,
1301 		  __entry->pos, __entry->blocks,
1302 		  __entry->ret)
1303 );
1304 
1305 TRACE_EVENT(ext4_unlink_enter,
1306 	TP_PROTO(struct inode *parent, struct dentry *dentry),
1307 
1308 	TP_ARGS(parent, dentry),
1309 
1310 	TP_STRUCT__entry(
1311 		__field(	ino_t,	parent			)
1312 		__field(	ino_t,	ino			)
1313 		__field(	loff_t,	size			)
1314 		__field(	dev_t,	dev			)
1315 	),
1316 
1317 	TP_fast_assign(
1318 		__entry->parent		= parent->i_ino;
1319 		__entry->ino		= dentry->d_inode->i_ino;
1320 		__entry->size		= dentry->d_inode->i_size;
1321 		__entry->dev		= dentry->d_inode->i_sb->s_dev;
1322 	),
1323 
1324 	TP_printk("dev %d,%d ino %lu size %lld parent %lu",
1325 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1326 		  (unsigned long) __entry->ino, __entry->size,
1327 		  (unsigned long) __entry->parent)
1328 );
1329 
1330 TRACE_EVENT(ext4_unlink_exit,
1331 	TP_PROTO(struct dentry *dentry, int ret),
1332 
1333 	TP_ARGS(dentry, ret),
1334 
1335 	TP_STRUCT__entry(
1336 		__field(	ino_t,	ino			)
1337 		__field(	dev_t,	dev			)
1338 		__field(	int,	ret			)
1339 	),
1340 
1341 	TP_fast_assign(
1342 		__entry->ino		= dentry->d_inode->i_ino;
1343 		__entry->dev		= dentry->d_inode->i_sb->s_dev;
1344 		__entry->ret		= ret;
1345 	),
1346 
1347 	TP_printk("dev %d,%d ino %lu ret %d",
1348 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1349 		  (unsigned long) __entry->ino,
1350 		  __entry->ret)
1351 );
1352 
1353 DECLARE_EVENT_CLASS(ext4__truncate,
1354 	TP_PROTO(struct inode *inode),
1355 
1356 	TP_ARGS(inode),
1357 
1358 	TP_STRUCT__entry(
1359 		__field(	ino_t,  	ino		)
1360 		__field(	dev_t,  	dev		)
1361 		__field(	__u64,		blocks		)
1362 	),
1363 
1364 	TP_fast_assign(
1365 		__entry->ino    = inode->i_ino;
1366 		__entry->dev    = inode->i_sb->s_dev;
1367 		__entry->blocks	= inode->i_blocks;
1368 	),
1369 
1370 	TP_printk("dev %d,%d ino %lu blocks %llu",
1371 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1372 		  (unsigned long) __entry->ino, __entry->blocks)
1373 );
1374 
1375 DEFINE_EVENT(ext4__truncate, ext4_truncate_enter,
1376 
1377 	TP_PROTO(struct inode *inode),
1378 
1379 	TP_ARGS(inode)
1380 );
1381 
1382 DEFINE_EVENT(ext4__truncate, ext4_truncate_exit,
1383 
1384 	TP_PROTO(struct inode *inode),
1385 
1386 	TP_ARGS(inode)
1387 );
1388 
1389 DECLARE_EVENT_CLASS(ext4__map_blocks_enter,
1390 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1391 		 unsigned int len, unsigned int flags),
1392 
1393 	TP_ARGS(inode, lblk, len, flags),
1394 
1395 	TP_STRUCT__entry(
1396 		__field(	ino_t,  	ino		)
1397 		__field(	dev_t,  	dev		)
1398 		__field(	ext4_lblk_t,	lblk		)
1399 		__field(	unsigned int,	len		)
1400 		__field(	unsigned int,	flags		)
1401 	),
1402 
1403 	TP_fast_assign(
1404 		__entry->ino    = inode->i_ino;
1405 		__entry->dev    = inode->i_sb->s_dev;
1406 		__entry->lblk	= lblk;
1407 		__entry->len	= len;
1408 		__entry->flags	= flags;
1409 	),
1410 
1411 	TP_printk("dev %d,%d ino %lu lblk %u len %u flags %u",
1412 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1413 		  (unsigned long) __entry->ino,
1414 		  __entry->lblk, __entry->len, __entry->flags)
1415 );
1416 
1417 DEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter,
1418 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1419 		 unsigned len, unsigned flags),
1420 
1421 	TP_ARGS(inode, lblk, len, flags)
1422 );
1423 
1424 DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter,
1425 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1426 		 unsigned len, unsigned flags),
1427 
1428 	TP_ARGS(inode, lblk, len, flags)
1429 );
1430 
1431 DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
1432 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1433 		 ext4_fsblk_t pblk, unsigned int len, int ret),
1434 
1435 	TP_ARGS(inode, lblk, pblk, len, ret),
1436 
1437 	TP_STRUCT__entry(
1438 		__field(	ino_t,		ino		)
1439 		__field(	dev_t,		dev		)
1440 		__field(	ext4_lblk_t,	lblk		)
1441 		__field(	ext4_fsblk_t,	pblk		)
1442 		__field(	unsigned int,	len		)
1443 		__field(	int,		ret		)
1444 	),
1445 
1446 	TP_fast_assign(
1447 		__entry->ino    = inode->i_ino;
1448 		__entry->dev    = inode->i_sb->s_dev;
1449 		__entry->lblk	= lblk;
1450 		__entry->pblk	= pblk;
1451 		__entry->len	= len;
1452 		__entry->ret	= ret;
1453 	),
1454 
1455 	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u ret %d",
1456 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1457 		  (unsigned long) __entry->ino,
1458 		  __entry->lblk, __entry->pblk,
1459 		  __entry->len, __entry->ret)
1460 );
1461 
1462 DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
1463 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1464 		 ext4_fsblk_t pblk, unsigned len, int ret),
1465 
1466 	TP_ARGS(inode, lblk, pblk, len, ret)
1467 );
1468 
1469 DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
1470 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1471 		 ext4_fsblk_t pblk, unsigned len, int ret),
1472 
1473 	TP_ARGS(inode, lblk, pblk, len, ret)
1474 );
1475 
1476 TRACE_EVENT(ext4_ext_load_extent,
1477 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk),
1478 
1479 	TP_ARGS(inode, lblk, pblk),
1480 
1481 	TP_STRUCT__entry(
1482 		__field(	ino_t,		ino		)
1483 		__field(	dev_t,		dev		)
1484 		__field(	ext4_lblk_t,	lblk		)
1485 		__field(	ext4_fsblk_t,	pblk		)
1486 	),
1487 
1488 	TP_fast_assign(
1489 		__entry->ino    = inode->i_ino;
1490 		__entry->dev    = inode->i_sb->s_dev;
1491 		__entry->lblk	= lblk;
1492 		__entry->pblk	= pblk;
1493 	),
1494 
1495 	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu",
1496 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1497 		  (unsigned long) __entry->ino,
1498 		  __entry->lblk, __entry->pblk)
1499 );
1500 
1501 TRACE_EVENT(ext4_load_inode,
1502 	TP_PROTO(struct inode *inode),
1503 
1504 	TP_ARGS(inode),
1505 
1506 	TP_STRUCT__entry(
1507 		__field(	ino_t,	ino		)
1508 		__field(	dev_t,	dev		)
1509 	),
1510 
1511 	TP_fast_assign(
1512 		__entry->ino		= inode->i_ino;
1513 		__entry->dev		= inode->i_sb->s_dev;
1514 	),
1515 
1516 	TP_printk("dev %d,%d ino %ld",
1517 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1518 		  (unsigned long) __entry->ino)
1519 );
1520 
1521 TRACE_EVENT(ext4_journal_start,
1522 	TP_PROTO(struct super_block *sb, int nblocks, unsigned long IP),
1523 
1524 	TP_ARGS(sb, nblocks, IP),
1525 
1526 	TP_STRUCT__entry(
1527 		__field(	dev_t,	dev			)
1528 		__field(	  int, 	nblocks			)
1529 		__field(unsigned long,	ip			)
1530 	),
1531 
1532 	TP_fast_assign(
1533 		__entry->dev	 = sb->s_dev;
1534 		__entry->nblocks = nblocks;
1535 		__entry->ip	 = IP;
1536 	),
1537 
1538 	TP_printk("dev %d,%d nblocks %d caller %pF",
1539 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1540 		  __entry->nblocks, (void *)__entry->ip)
1541 );
1542 
1543 DECLARE_EVENT_CLASS(ext4__trim,
1544 	TP_PROTO(struct super_block *sb,
1545 		 ext4_group_t group,
1546 		 ext4_grpblk_t start,
1547 		 ext4_grpblk_t len),
1548 
1549 	TP_ARGS(sb, group, start, len),
1550 
1551 	TP_STRUCT__entry(
1552 		__field(	int,	dev_major		)
1553 		__field(	int,	dev_minor		)
1554 		__field(	__u32, 	group			)
1555 		__field(	int,	start			)
1556 		__field(	int,	len			)
1557 	),
1558 
1559 	TP_fast_assign(
1560 		__entry->dev_major	= MAJOR(sb->s_dev);
1561 		__entry->dev_minor	= MINOR(sb->s_dev);
1562 		__entry->group		= group;
1563 		__entry->start		= start;
1564 		__entry->len		= len;
1565 	),
1566 
1567 	TP_printk("dev %d,%d group %u, start %d, len %d",
1568 		  __entry->dev_major, __entry->dev_minor,
1569 		  __entry->group, __entry->start, __entry->len)
1570 );
1571 
1572 DEFINE_EVENT(ext4__trim, ext4_trim_extent,
1573 
1574 	TP_PROTO(struct super_block *sb,
1575 		 ext4_group_t group,
1576 		 ext4_grpblk_t start,
1577 		 ext4_grpblk_t len),
1578 
1579 	TP_ARGS(sb, group, start, len)
1580 );
1581 
1582 DEFINE_EVENT(ext4__trim, ext4_trim_all_free,
1583 
1584 	TP_PROTO(struct super_block *sb,
1585 		 ext4_group_t group,
1586 		 ext4_grpblk_t start,
1587 		 ext4_grpblk_t len),
1588 
1589 	TP_ARGS(sb, group, start, len)
1590 );
1591 
1592 #endif /* _TRACE_EXT4_H */
1593 
1594 /* This part must be outside protection */
1595 #include <trace/define_trace.h>
1596