xref: /openbmc/linux/include/trace/events/ext4.h (revision 81d67439)
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(	umode_t, 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(	umode_t, 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(	umode_t, 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(	char,	more_io			)
384 		__field(       pgoff_t,	writeback_index		)
385 	),
386 
387 	TP_fast_assign(
388 		__entry->dev		= inode->i_sb->s_dev;
389 		__entry->ino		= inode->i_ino;
390 		__entry->ret		= ret;
391 		__entry->pages_written	= pages_written;
392 		__entry->pages_skipped	= wbc->pages_skipped;
393 		__entry->sync_mode	= wbc->sync_mode;
394 		__entry->more_io	= wbc->more_io;
395 		__entry->writeback_index = inode->i_mapping->writeback_index;
396 	),
397 
398 	TP_printk("dev %d,%d ino %lu ret %d pages_written %d pages_skipped %ld "
399 		  " more_io %d sync_mode %d writeback_index %lu",
400 		  MAJOR(__entry->dev), MINOR(__entry->dev),
401 		  (unsigned long) __entry->ino, __entry->ret,
402 		  __entry->pages_written, __entry->pages_skipped,
403 		  __entry->more_io, __entry->sync_mode,
404 		  (unsigned long) __entry->writeback_index)
405 );
406 
407 DECLARE_EVENT_CLASS(ext4__page_op,
408 	TP_PROTO(struct page *page),
409 
410 	TP_ARGS(page),
411 
412 	TP_STRUCT__entry(
413 		__field(	pgoff_t, index			)
414 		__field(	ino_t,	ino			)
415 		__field(	dev_t,	dev			)
416 
417 	),
418 
419 	TP_fast_assign(
420 		__entry->index	= page->index;
421 		__entry->ino	= page->mapping->host->i_ino;
422 		__entry->dev	= page->mapping->host->i_sb->s_dev;
423 	),
424 
425 	TP_printk("dev %d,%d ino %lu page_index %lu",
426 		  MAJOR(__entry->dev), MINOR(__entry->dev),
427 		  (unsigned long) __entry->ino,
428 		  (unsigned long) __entry->index)
429 );
430 
431 DEFINE_EVENT(ext4__page_op, ext4_writepage,
432 
433 	TP_PROTO(struct page *page),
434 
435 	TP_ARGS(page)
436 );
437 
438 DEFINE_EVENT(ext4__page_op, ext4_readpage,
439 
440 	TP_PROTO(struct page *page),
441 
442 	TP_ARGS(page)
443 );
444 
445 DEFINE_EVENT(ext4__page_op, ext4_releasepage,
446 
447 	TP_PROTO(struct page *page),
448 
449 	TP_ARGS(page)
450 );
451 
452 TRACE_EVENT(ext4_invalidatepage,
453 	TP_PROTO(struct page *page, unsigned long offset),
454 
455 	TP_ARGS(page, offset),
456 
457 	TP_STRUCT__entry(
458 		__field(	pgoff_t, index			)
459 		__field(	unsigned long, offset		)
460 		__field(	ino_t,	ino			)
461 		__field(	dev_t,	dev			)
462 
463 	),
464 
465 	TP_fast_assign(
466 		__entry->index	= page->index;
467 		__entry->offset	= offset;
468 		__entry->ino	= page->mapping->host->i_ino;
469 		__entry->dev	= page->mapping->host->i_sb->s_dev;
470 	),
471 
472 	TP_printk("dev %d,%d ino %lu page_index %lu offset %lu",
473 		  MAJOR(__entry->dev), MINOR(__entry->dev),
474 		  (unsigned long) __entry->ino,
475 		  (unsigned long) __entry->index, __entry->offset)
476 );
477 
478 TRACE_EVENT(ext4_discard_blocks,
479 	TP_PROTO(struct super_block *sb, unsigned long long blk,
480 			unsigned long long count),
481 
482 	TP_ARGS(sb, blk, count),
483 
484 	TP_STRUCT__entry(
485 		__field(	dev_t,	dev			)
486 		__field(	__u64,	blk			)
487 		__field(	__u64,	count			)
488 
489 	),
490 
491 	TP_fast_assign(
492 		__entry->dev	= sb->s_dev;
493 		__entry->blk	= blk;
494 		__entry->count	= count;
495 	),
496 
497 	TP_printk("dev %d,%d blk %llu count %llu",
498 		  MAJOR(__entry->dev), MINOR(__entry->dev),
499 		  __entry->blk, __entry->count)
500 );
501 
502 DECLARE_EVENT_CLASS(ext4__mb_new_pa,
503 	TP_PROTO(struct ext4_allocation_context *ac,
504 		 struct ext4_prealloc_space *pa),
505 
506 	TP_ARGS(ac, pa),
507 
508 	TP_STRUCT__entry(
509 		__field(	dev_t,	dev			)
510 		__field(	ino_t,	ino			)
511 		__field(	__u64,	pa_pstart		)
512 		__field(	__u32,	pa_len			)
513 		__field(	__u64,	pa_lstart		)
514 
515 	),
516 
517 	TP_fast_assign(
518 		__entry->dev		= ac->ac_sb->s_dev;
519 		__entry->ino		= ac->ac_inode->i_ino;
520 		__entry->pa_pstart	= pa->pa_pstart;
521 		__entry->pa_len		= pa->pa_len;
522 		__entry->pa_lstart	= pa->pa_lstart;
523 	),
524 
525 	TP_printk("dev %d,%d ino %lu pstart %llu len %u lstart %llu",
526 		  MAJOR(__entry->dev), MINOR(__entry->dev),
527 		  (unsigned long) __entry->ino,
528 		  __entry->pa_pstart, __entry->pa_len, __entry->pa_lstart)
529 );
530 
531 DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_inode_pa,
532 
533 	TP_PROTO(struct ext4_allocation_context *ac,
534 		 struct ext4_prealloc_space *pa),
535 
536 	TP_ARGS(ac, pa)
537 );
538 
539 DEFINE_EVENT(ext4__mb_new_pa, ext4_mb_new_group_pa,
540 
541 	TP_PROTO(struct ext4_allocation_context *ac,
542 		 struct ext4_prealloc_space *pa),
543 
544 	TP_ARGS(ac, pa)
545 );
546 
547 TRACE_EVENT(ext4_mb_release_inode_pa,
548 	TP_PROTO(struct ext4_prealloc_space *pa,
549 		 unsigned long long block, unsigned int count),
550 
551 	TP_ARGS(pa, block, count),
552 
553 	TP_STRUCT__entry(
554 		__field(	dev_t,	dev			)
555 		__field(	ino_t,	ino			)
556 		__field(	__u64,	block			)
557 		__field(	__u32,	count			)
558 
559 	),
560 
561 	TP_fast_assign(
562 		__entry->dev		= pa->pa_inode->i_sb->s_dev;
563 		__entry->ino		= pa->pa_inode->i_ino;
564 		__entry->block		= block;
565 		__entry->count		= count;
566 	),
567 
568 	TP_printk("dev %d,%d ino %lu block %llu count %u",
569 		  MAJOR(__entry->dev), MINOR(__entry->dev),
570 		  (unsigned long) __entry->ino,
571 		  __entry->block, __entry->count)
572 );
573 
574 TRACE_EVENT(ext4_mb_release_group_pa,
575 	TP_PROTO(struct ext4_prealloc_space *pa),
576 
577 	TP_ARGS(pa),
578 
579 	TP_STRUCT__entry(
580 		__field(	dev_t,	dev			)
581 		__field(	__u64,	pa_pstart		)
582 		__field(	__u32,	pa_len			)
583 
584 	),
585 
586 	TP_fast_assign(
587 		__entry->dev		= pa->pa_inode->i_sb->s_dev;
588 		__entry->pa_pstart	= pa->pa_pstart;
589 		__entry->pa_len		= pa->pa_len;
590 	),
591 
592 	TP_printk("dev %d,%d pstart %llu len %u",
593 		  MAJOR(__entry->dev), MINOR(__entry->dev),
594 		  __entry->pa_pstart, __entry->pa_len)
595 );
596 
597 TRACE_EVENT(ext4_discard_preallocations,
598 	TP_PROTO(struct inode *inode),
599 
600 	TP_ARGS(inode),
601 
602 	TP_STRUCT__entry(
603 		__field(	dev_t,	dev			)
604 		__field(	ino_t,	ino			)
605 
606 	),
607 
608 	TP_fast_assign(
609 		__entry->dev	= inode->i_sb->s_dev;
610 		__entry->ino	= inode->i_ino;
611 	),
612 
613 	TP_printk("dev %d,%d ino %lu",
614 		  MAJOR(__entry->dev), MINOR(__entry->dev),
615 		  (unsigned long) __entry->ino)
616 );
617 
618 TRACE_EVENT(ext4_mb_discard_preallocations,
619 	TP_PROTO(struct super_block *sb, int needed),
620 
621 	TP_ARGS(sb, needed),
622 
623 	TP_STRUCT__entry(
624 		__field(	dev_t,	dev			)
625 		__field(	int,	needed			)
626 
627 	),
628 
629 	TP_fast_assign(
630 		__entry->dev	= sb->s_dev;
631 		__entry->needed	= needed;
632 	),
633 
634 	TP_printk("dev %d,%d needed %d",
635 		  MAJOR(__entry->dev), MINOR(__entry->dev),
636 		  __entry->needed)
637 );
638 
639 TRACE_EVENT(ext4_request_blocks,
640 	TP_PROTO(struct ext4_allocation_request *ar),
641 
642 	TP_ARGS(ar),
643 
644 	TP_STRUCT__entry(
645 		__field(	dev_t,	dev			)
646 		__field(	ino_t,	ino			)
647 		__field(	unsigned int, flags		)
648 		__field(	unsigned int, len		)
649 		__field(	__u32,  logical			)
650 		__field(	__u32,	lleft			)
651 		__field(	__u32,	lright			)
652 		__field(	__u64,	goal			)
653 		__field(	__u64,	pleft			)
654 		__field(	__u64,	pright			)
655 	),
656 
657 	TP_fast_assign(
658 		__entry->dev	= ar->inode->i_sb->s_dev;
659 		__entry->ino	= ar->inode->i_ino;
660 		__entry->flags	= ar->flags;
661 		__entry->len	= ar->len;
662 		__entry->logical = ar->logical;
663 		__entry->goal	= ar->goal;
664 		__entry->lleft	= ar->lleft;
665 		__entry->lright	= ar->lright;
666 		__entry->pleft	= ar->pleft;
667 		__entry->pright	= ar->pright;
668 	),
669 
670 	TP_printk("dev %d,%d ino %lu flags %u len %u lblk %u goal %llu "
671 		  "lleft %u lright %u pleft %llu pright %llu ",
672 		  MAJOR(__entry->dev), MINOR(__entry->dev),
673 		  (unsigned long) __entry->ino, __entry->flags,
674 		  __entry->len, __entry->logical, __entry->goal,
675 		  __entry->lleft, __entry->lright, __entry->pleft,
676 		  __entry->pright)
677 );
678 
679 TRACE_EVENT(ext4_allocate_blocks,
680 	TP_PROTO(struct ext4_allocation_request *ar, unsigned long long block),
681 
682 	TP_ARGS(ar, block),
683 
684 	TP_STRUCT__entry(
685 		__field(	dev_t,	dev			)
686 		__field(	ino_t,	ino			)
687 		__field(	__u64,	block			)
688 		__field(	unsigned int, flags		)
689 		__field(	unsigned int, len		)
690 		__field(	__u32,  logical			)
691 		__field(	__u32,	lleft			)
692 		__field(	__u32,	lright			)
693 		__field(	__u64,	goal			)
694 		__field(	__u64,	pleft			)
695 		__field(	__u64,	pright			)
696 	),
697 
698 	TP_fast_assign(
699 		__entry->dev	= ar->inode->i_sb->s_dev;
700 		__entry->ino	= ar->inode->i_ino;
701 		__entry->block	= block;
702 		__entry->flags	= ar->flags;
703 		__entry->len	= ar->len;
704 		__entry->logical = ar->logical;
705 		__entry->goal	= ar->goal;
706 		__entry->lleft	= ar->lleft;
707 		__entry->lright	= ar->lright;
708 		__entry->pleft	= ar->pleft;
709 		__entry->pright	= ar->pright;
710 	),
711 
712 	TP_printk("dev %d,%d ino %lu flags %u len %u block %llu lblk %u "
713 		  "goal %llu lleft %u lright %u pleft %llu pright %llu",
714 		  MAJOR(__entry->dev), MINOR(__entry->dev),
715 		  (unsigned long) __entry->ino, __entry->flags,
716 		  __entry->len, __entry->block, __entry->logical,
717 		  __entry->goal,  __entry->lleft, __entry->lright,
718 		  __entry->pleft, __entry->pright)
719 );
720 
721 TRACE_EVENT(ext4_free_blocks,
722 	TP_PROTO(struct inode *inode, __u64 block, unsigned long count,
723 		 int flags),
724 
725 	TP_ARGS(inode, block, count, flags),
726 
727 	TP_STRUCT__entry(
728 		__field(	dev_t,	dev			)
729 		__field(	ino_t,	ino			)
730 		__field(	umode_t, mode			)
731 		__field(	__u64,	block			)
732 		__field(	unsigned long,	count		)
733 		__field(	int,	flags			)
734 	),
735 
736 	TP_fast_assign(
737 		__entry->dev		= inode->i_sb->s_dev;
738 		__entry->ino		= inode->i_ino;
739 		__entry->mode		= inode->i_mode;
740 		__entry->block		= block;
741 		__entry->count		= count;
742 		__entry->flags		= flags;
743 	),
744 
745 	TP_printk("dev %d,%d ino %lu mode 0%o block %llu count %lu flags %d",
746 		  MAJOR(__entry->dev), MINOR(__entry->dev),
747 		  (unsigned long) __entry->ino,
748 		  __entry->mode, __entry->block, __entry->count,
749 		  __entry->flags)
750 );
751 
752 TRACE_EVENT(ext4_sync_file_enter,
753 	TP_PROTO(struct file *file, int datasync),
754 
755 	TP_ARGS(file, datasync),
756 
757 	TP_STRUCT__entry(
758 		__field(	dev_t,	dev			)
759 		__field(	ino_t,	ino			)
760 		__field(	ino_t,	parent			)
761 		__field(	int,	datasync		)
762 	),
763 
764 	TP_fast_assign(
765 		struct dentry *dentry = file->f_path.dentry;
766 
767 		__entry->dev		= dentry->d_inode->i_sb->s_dev;
768 		__entry->ino		= dentry->d_inode->i_ino;
769 		__entry->datasync	= datasync;
770 		__entry->parent		= dentry->d_parent->d_inode->i_ino;
771 	),
772 
773 	TP_printk("dev %d,%d ino %lu parent %lu datasync %d ",
774 		  MAJOR(__entry->dev), MINOR(__entry->dev),
775 		  (unsigned long) __entry->ino,
776 		  (unsigned long) __entry->parent, __entry->datasync)
777 );
778 
779 TRACE_EVENT(ext4_sync_file_exit,
780 	TP_PROTO(struct inode *inode, int ret),
781 
782 	TP_ARGS(inode, ret),
783 
784 	TP_STRUCT__entry(
785 		__field(	int,	ret			)
786 		__field(	ino_t,	ino			)
787 		__field(	dev_t,	dev			)
788 	),
789 
790 	TP_fast_assign(
791 		__entry->ret		= ret;
792 		__entry->ino		= inode->i_ino;
793 		__entry->dev		= inode->i_sb->s_dev;
794 	),
795 
796 	TP_printk("dev %d,%d ino %lu ret %d",
797 		  MAJOR(__entry->dev), MINOR(__entry->dev),
798 		  (unsigned long) __entry->ino,
799 		  __entry->ret)
800 );
801 
802 TRACE_EVENT(ext4_sync_fs,
803 	TP_PROTO(struct super_block *sb, int wait),
804 
805 	TP_ARGS(sb, wait),
806 
807 	TP_STRUCT__entry(
808 		__field(	dev_t,	dev			)
809 		__field(	int,	wait			)
810 
811 	),
812 
813 	TP_fast_assign(
814 		__entry->dev	= sb->s_dev;
815 		__entry->wait	= wait;
816 	),
817 
818 	TP_printk("dev %d,%d wait %d",
819 		  MAJOR(__entry->dev), MINOR(__entry->dev),
820 		  __entry->wait)
821 );
822 
823 TRACE_EVENT(ext4_alloc_da_blocks,
824 	TP_PROTO(struct inode *inode),
825 
826 	TP_ARGS(inode),
827 
828 	TP_STRUCT__entry(
829 		__field(	dev_t,	dev			)
830 		__field(	ino_t,	ino			)
831 		__field( unsigned int,	data_blocks	)
832 		__field( unsigned int,	meta_blocks	)
833 	),
834 
835 	TP_fast_assign(
836 		__entry->dev	= inode->i_sb->s_dev;
837 		__entry->ino	= inode->i_ino;
838 		__entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
839 		__entry->meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
840 	),
841 
842 	TP_printk("dev %d,%d ino %lu data_blocks %u meta_blocks %u",
843 		  MAJOR(__entry->dev), MINOR(__entry->dev),
844 		  (unsigned long) __entry->ino,
845 		  __entry->data_blocks, __entry->meta_blocks)
846 );
847 
848 TRACE_EVENT(ext4_mballoc_alloc,
849 	TP_PROTO(struct ext4_allocation_context *ac),
850 
851 	TP_ARGS(ac),
852 
853 	TP_STRUCT__entry(
854 		__field(	dev_t,	dev			)
855 		__field(	ino_t,	ino			)
856 		__field(	__u16,	found			)
857 		__field(	__u16,	groups			)
858 		__field(	__u16,	buddy			)
859 		__field(	__u16,	flags			)
860 		__field(	__u16,	tail			)
861 		__field(	__u8,	cr			)
862 		__field(	__u32, 	orig_logical		)
863 		__field(	  int,	orig_start		)
864 		__field(	__u32, 	orig_group		)
865 		__field(	  int,	orig_len		)
866 		__field(	__u32, 	goal_logical		)
867 		__field(	  int,	goal_start		)
868 		__field(	__u32, 	goal_group		)
869 		__field(	  int,	goal_len		)
870 		__field(	__u32, 	result_logical		)
871 		__field(	  int,	result_start		)
872 		__field(	__u32, 	result_group		)
873 		__field(	  int,	result_len		)
874 	),
875 
876 	TP_fast_assign(
877 		__entry->dev		= ac->ac_inode->i_sb->s_dev;
878 		__entry->ino		= ac->ac_inode->i_ino;
879 		__entry->found		= ac->ac_found;
880 		__entry->flags		= ac->ac_flags;
881 		__entry->groups		= ac->ac_groups_scanned;
882 		__entry->buddy		= ac->ac_buddy;
883 		__entry->tail		= ac->ac_tail;
884 		__entry->cr		= ac->ac_criteria;
885 		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
886 		__entry->orig_start	= ac->ac_o_ex.fe_start;
887 		__entry->orig_group	= ac->ac_o_ex.fe_group;
888 		__entry->orig_len	= ac->ac_o_ex.fe_len;
889 		__entry->goal_logical	= ac->ac_g_ex.fe_logical;
890 		__entry->goal_start	= ac->ac_g_ex.fe_start;
891 		__entry->goal_group	= ac->ac_g_ex.fe_group;
892 		__entry->goal_len	= ac->ac_g_ex.fe_len;
893 		__entry->result_logical	= ac->ac_f_ex.fe_logical;
894 		__entry->result_start	= ac->ac_f_ex.fe_start;
895 		__entry->result_group	= ac->ac_f_ex.fe_group;
896 		__entry->result_len	= ac->ac_f_ex.fe_len;
897 	),
898 
899 	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u goal %u/%d/%u@%u "
900 		  "result %u/%d/%u@%u blks %u grps %u cr %u flags 0x%04x "
901 		  "tail %u broken %u",
902 		  MAJOR(__entry->dev), MINOR(__entry->dev),
903 		  (unsigned long) __entry->ino,
904 		  __entry->orig_group, __entry->orig_start,
905 		  __entry->orig_len, __entry->orig_logical,
906 		  __entry->goal_group, __entry->goal_start,
907 		  __entry->goal_len, __entry->goal_logical,
908 		  __entry->result_group, __entry->result_start,
909 		  __entry->result_len, __entry->result_logical,
910 		  __entry->found, __entry->groups, __entry->cr,
911 		  __entry->flags, __entry->tail,
912 		  __entry->buddy ? 1 << __entry->buddy : 0)
913 );
914 
915 TRACE_EVENT(ext4_mballoc_prealloc,
916 	TP_PROTO(struct ext4_allocation_context *ac),
917 
918 	TP_ARGS(ac),
919 
920 	TP_STRUCT__entry(
921 		__field(	dev_t,	dev			)
922 		__field(	ino_t,	ino			)
923 		__field(	__u32, 	orig_logical		)
924 		__field(	  int,	orig_start		)
925 		__field(	__u32, 	orig_group		)
926 		__field(	  int,	orig_len		)
927 		__field(	__u32, 	result_logical		)
928 		__field(	  int,	result_start		)
929 		__field(	__u32, 	result_group		)
930 		__field(	  int,	result_len		)
931 	),
932 
933 	TP_fast_assign(
934 		__entry->dev		= ac->ac_inode->i_sb->s_dev;
935 		__entry->ino		= ac->ac_inode->i_ino;
936 		__entry->orig_logical	= ac->ac_o_ex.fe_logical;
937 		__entry->orig_start	= ac->ac_o_ex.fe_start;
938 		__entry->orig_group	= ac->ac_o_ex.fe_group;
939 		__entry->orig_len	= ac->ac_o_ex.fe_len;
940 		__entry->result_logical	= ac->ac_b_ex.fe_logical;
941 		__entry->result_start	= ac->ac_b_ex.fe_start;
942 		__entry->result_group	= ac->ac_b_ex.fe_group;
943 		__entry->result_len	= ac->ac_b_ex.fe_len;
944 	),
945 
946 	TP_printk("dev %d,%d inode %lu orig %u/%d/%u@%u result %u/%d/%u@%u",
947 		  MAJOR(__entry->dev), MINOR(__entry->dev),
948 		  (unsigned long) __entry->ino,
949 		  __entry->orig_group, __entry->orig_start,
950 		  __entry->orig_len, __entry->orig_logical,
951 		  __entry->result_group, __entry->result_start,
952 		  __entry->result_len, __entry->result_logical)
953 );
954 
955 DECLARE_EVENT_CLASS(ext4__mballoc,
956 	TP_PROTO(struct super_block *sb,
957 		 struct inode *inode,
958 		 ext4_group_t group,
959 		 ext4_grpblk_t start,
960 		 ext4_grpblk_t len),
961 
962 	TP_ARGS(sb, inode, group, start, len),
963 
964 	TP_STRUCT__entry(
965 		__field(	dev_t,	dev			)
966 		__field(	ino_t,	ino			)
967 		__field(	  int,	result_start		)
968 		__field(	__u32, 	result_group		)
969 		__field(	  int,	result_len		)
970 	),
971 
972 	TP_fast_assign(
973 		__entry->dev		= sb->s_dev;
974 		__entry->ino		= inode ? inode->i_ino : 0;
975 		__entry->result_start	= start;
976 		__entry->result_group	= group;
977 		__entry->result_len	= len;
978 	),
979 
980 	TP_printk("dev %d,%d inode %lu extent %u/%d/%d ",
981 		  MAJOR(__entry->dev), MINOR(__entry->dev),
982 		  (unsigned long) __entry->ino,
983 		  __entry->result_group, __entry->result_start,
984 		  __entry->result_len)
985 );
986 
987 DEFINE_EVENT(ext4__mballoc, ext4_mballoc_discard,
988 
989 	TP_PROTO(struct super_block *sb,
990 		 struct inode *inode,
991 		 ext4_group_t group,
992 		 ext4_grpblk_t start,
993 		 ext4_grpblk_t len),
994 
995 	TP_ARGS(sb, inode, group, start, len)
996 );
997 
998 DEFINE_EVENT(ext4__mballoc, ext4_mballoc_free,
999 
1000 	TP_PROTO(struct super_block *sb,
1001 		 struct inode *inode,
1002 		 ext4_group_t group,
1003 		 ext4_grpblk_t start,
1004 		 ext4_grpblk_t len),
1005 
1006 	TP_ARGS(sb, inode, group, start, len)
1007 );
1008 
1009 TRACE_EVENT(ext4_forget,
1010 	TP_PROTO(struct inode *inode, int is_metadata, __u64 block),
1011 
1012 	TP_ARGS(inode, is_metadata, block),
1013 
1014 	TP_STRUCT__entry(
1015 		__field(	dev_t,	dev			)
1016 		__field(	ino_t,	ino			)
1017 		__field(	umode_t, mode			)
1018 		__field(	int,	is_metadata		)
1019 		__field(	__u64,	block			)
1020 	),
1021 
1022 	TP_fast_assign(
1023 		__entry->dev	= inode->i_sb->s_dev;
1024 		__entry->ino	= inode->i_ino;
1025 		__entry->mode	= inode->i_mode;
1026 		__entry->is_metadata = is_metadata;
1027 		__entry->block	= block;
1028 	),
1029 
1030 	TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %llu",
1031 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1032 		  (unsigned long) __entry->ino,
1033 		  __entry->mode, __entry->is_metadata, __entry->block)
1034 );
1035 
1036 TRACE_EVENT(ext4_da_update_reserve_space,
1037 	TP_PROTO(struct inode *inode, int used_blocks),
1038 
1039 	TP_ARGS(inode, used_blocks),
1040 
1041 	TP_STRUCT__entry(
1042 		__field(	dev_t,	dev			)
1043 		__field(	ino_t,	ino			)
1044 		__field(	umode_t, mode			)
1045 		__field(	__u64,	i_blocks		)
1046 		__field(	int,	used_blocks		)
1047 		__field(	int,	reserved_data_blocks	)
1048 		__field(	int,	reserved_meta_blocks	)
1049 		__field(	int,	allocated_meta_blocks	)
1050 	),
1051 
1052 	TP_fast_assign(
1053 		__entry->dev	= inode->i_sb->s_dev;
1054 		__entry->ino	= inode->i_ino;
1055 		__entry->mode	= inode->i_mode;
1056 		__entry->i_blocks = inode->i_blocks;
1057 		__entry->used_blocks = used_blocks;
1058 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1059 		__entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1060 		__entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks;
1061 	),
1062 
1063 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d "
1064 		  "reserved_data_blocks %d reserved_meta_blocks %d "
1065 		  "allocated_meta_blocks %d",
1066 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1067 		  (unsigned long) __entry->ino,
1068 		  __entry->mode, __entry->i_blocks,
1069 		  __entry->used_blocks, __entry->reserved_data_blocks,
1070 		  __entry->reserved_meta_blocks, __entry->allocated_meta_blocks)
1071 );
1072 
1073 TRACE_EVENT(ext4_da_reserve_space,
1074 	TP_PROTO(struct inode *inode, int md_needed),
1075 
1076 	TP_ARGS(inode, md_needed),
1077 
1078 	TP_STRUCT__entry(
1079 		__field(	dev_t,	dev			)
1080 		__field(	ino_t,	ino			)
1081 		__field(	umode_t, mode			)
1082 		__field(	__u64,	i_blocks		)
1083 		__field(	int,	md_needed		)
1084 		__field(	int,	reserved_data_blocks	)
1085 		__field(	int,	reserved_meta_blocks	)
1086 	),
1087 
1088 	TP_fast_assign(
1089 		__entry->dev	= inode->i_sb->s_dev;
1090 		__entry->ino	= inode->i_ino;
1091 		__entry->mode	= inode->i_mode;
1092 		__entry->i_blocks = inode->i_blocks;
1093 		__entry->md_needed = md_needed;
1094 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1095 		__entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1096 	),
1097 
1098 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu md_needed %d "
1099 		  "reserved_data_blocks %d reserved_meta_blocks %d",
1100 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1101 		  (unsigned long) __entry->ino,
1102 		  __entry->mode, __entry->i_blocks,
1103 		  __entry->md_needed, __entry->reserved_data_blocks,
1104 		  __entry->reserved_meta_blocks)
1105 );
1106 
1107 TRACE_EVENT(ext4_da_release_space,
1108 	TP_PROTO(struct inode *inode, int freed_blocks),
1109 
1110 	TP_ARGS(inode, freed_blocks),
1111 
1112 	TP_STRUCT__entry(
1113 		__field(	dev_t,	dev			)
1114 		__field(	ino_t,	ino			)
1115 		__field(	umode_t, mode			)
1116 		__field(	__u64,	i_blocks		)
1117 		__field(	int,	freed_blocks		)
1118 		__field(	int,	reserved_data_blocks	)
1119 		__field(	int,	reserved_meta_blocks	)
1120 		__field(	int,	allocated_meta_blocks	)
1121 	),
1122 
1123 	TP_fast_assign(
1124 		__entry->dev	= inode->i_sb->s_dev;
1125 		__entry->ino	= inode->i_ino;
1126 		__entry->mode	= inode->i_mode;
1127 		__entry->i_blocks = inode->i_blocks;
1128 		__entry->freed_blocks = freed_blocks;
1129 		__entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1130 		__entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1131 		__entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks;
1132 	),
1133 
1134 	TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d "
1135 		  "reserved_data_blocks %d reserved_meta_blocks %d "
1136 		  "allocated_meta_blocks %d",
1137 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1138 		  (unsigned long) __entry->ino,
1139 		  __entry->mode, __entry->i_blocks,
1140 		  __entry->freed_blocks, __entry->reserved_data_blocks,
1141 		  __entry->reserved_meta_blocks, __entry->allocated_meta_blocks)
1142 );
1143 
1144 DECLARE_EVENT_CLASS(ext4__bitmap_load,
1145 	TP_PROTO(struct super_block *sb, unsigned long group),
1146 
1147 	TP_ARGS(sb, group),
1148 
1149 	TP_STRUCT__entry(
1150 		__field(	dev_t,	dev			)
1151 		__field(	__u32,	group			)
1152 
1153 	),
1154 
1155 	TP_fast_assign(
1156 		__entry->dev	= sb->s_dev;
1157 		__entry->group	= group;
1158 	),
1159 
1160 	TP_printk("dev %d,%d group %u",
1161 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1162 		  __entry->group)
1163 );
1164 
1165 DEFINE_EVENT(ext4__bitmap_load, ext4_mb_bitmap_load,
1166 
1167 	TP_PROTO(struct super_block *sb, unsigned long group),
1168 
1169 	TP_ARGS(sb, group)
1170 );
1171 
1172 DEFINE_EVENT(ext4__bitmap_load, ext4_mb_buddy_bitmap_load,
1173 
1174 	TP_PROTO(struct super_block *sb, unsigned long group),
1175 
1176 	TP_ARGS(sb, group)
1177 );
1178 
1179 DEFINE_EVENT(ext4__bitmap_load, ext4_read_block_bitmap_load,
1180 
1181 	TP_PROTO(struct super_block *sb, unsigned long group),
1182 
1183 	TP_ARGS(sb, group)
1184 );
1185 
1186 DEFINE_EVENT(ext4__bitmap_load, ext4_load_inode_bitmap,
1187 
1188 	TP_PROTO(struct super_block *sb, unsigned long group),
1189 
1190 	TP_ARGS(sb, group)
1191 );
1192 
1193 TRACE_EVENT(ext4_direct_IO_enter,
1194 	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw),
1195 
1196 	TP_ARGS(inode, offset, len, rw),
1197 
1198 	TP_STRUCT__entry(
1199 		__field(	ino_t,	ino			)
1200 		__field(	dev_t,	dev			)
1201 		__field(	loff_t,	pos			)
1202 		__field(	unsigned long,	len		)
1203 		__field(	int,	rw			)
1204 	),
1205 
1206 	TP_fast_assign(
1207 		__entry->ino	= inode->i_ino;
1208 		__entry->dev	= inode->i_sb->s_dev;
1209 		__entry->pos	= offset;
1210 		__entry->len	= len;
1211 		__entry->rw	= rw;
1212 	),
1213 
1214 	TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d",
1215 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1216 		  (unsigned long) __entry->ino,
1217 		  __entry->pos, __entry->len, __entry->rw)
1218 );
1219 
1220 TRACE_EVENT(ext4_direct_IO_exit,
1221 	TP_PROTO(struct inode *inode, loff_t offset, unsigned long len,
1222 		 int rw, int ret),
1223 
1224 	TP_ARGS(inode, offset, len, rw, ret),
1225 
1226 	TP_STRUCT__entry(
1227 		__field(	ino_t,	ino			)
1228 		__field(	dev_t,	dev			)
1229 		__field(	loff_t,	pos			)
1230 		__field(	unsigned long,	len		)
1231 		__field(	int,	rw			)
1232 		__field(	int,	ret			)
1233 	),
1234 
1235 	TP_fast_assign(
1236 		__entry->ino	= inode->i_ino;
1237 		__entry->dev	= inode->i_sb->s_dev;
1238 		__entry->pos	= offset;
1239 		__entry->len	= len;
1240 		__entry->rw	= rw;
1241 		__entry->ret	= ret;
1242 	),
1243 
1244 	TP_printk("dev %d,%d ino %lu pos %lld len %lu rw %d ret %d",
1245 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1246 		  (unsigned long) __entry->ino,
1247 		  __entry->pos, __entry->len,
1248 		  __entry->rw, __entry->ret)
1249 );
1250 
1251 TRACE_EVENT(ext4_fallocate_enter,
1252 	TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode),
1253 
1254 	TP_ARGS(inode, offset, len, mode),
1255 
1256 	TP_STRUCT__entry(
1257 		__field(	ino_t,	ino			)
1258 		__field(	dev_t,	dev			)
1259 		__field(	loff_t,	pos			)
1260 		__field(	loff_t,	len			)
1261 		__field(	int,	mode			)
1262 	),
1263 
1264 	TP_fast_assign(
1265 		__entry->ino	= inode->i_ino;
1266 		__entry->dev	= inode->i_sb->s_dev;
1267 		__entry->pos	= offset;
1268 		__entry->len	= len;
1269 		__entry->mode	= mode;
1270 	),
1271 
1272 	TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %d",
1273 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1274 		  (unsigned long) __entry->ino, __entry->pos,
1275 		  __entry->len, __entry->mode)
1276 );
1277 
1278 TRACE_EVENT(ext4_fallocate_exit,
1279 	TP_PROTO(struct inode *inode, loff_t offset,
1280 		 unsigned int max_blocks, int ret),
1281 
1282 	TP_ARGS(inode, offset, max_blocks, ret),
1283 
1284 	TP_STRUCT__entry(
1285 		__field(	ino_t,	ino			)
1286 		__field(	dev_t,	dev			)
1287 		__field(	loff_t,	pos			)
1288 		__field(	unsigned int,	blocks		)
1289 		__field(	int, 	ret			)
1290 	),
1291 
1292 	TP_fast_assign(
1293 		__entry->ino	= inode->i_ino;
1294 		__entry->dev	= inode->i_sb->s_dev;
1295 		__entry->pos	= offset;
1296 		__entry->blocks	= max_blocks;
1297 		__entry->ret	= ret;
1298 	),
1299 
1300 	TP_printk("dev %d,%d ino %lu pos %lld blocks %u ret %d",
1301 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1302 		  (unsigned long) __entry->ino,
1303 		  __entry->pos, __entry->blocks,
1304 		  __entry->ret)
1305 );
1306 
1307 TRACE_EVENT(ext4_unlink_enter,
1308 	TP_PROTO(struct inode *parent, struct dentry *dentry),
1309 
1310 	TP_ARGS(parent, dentry),
1311 
1312 	TP_STRUCT__entry(
1313 		__field(	ino_t,	parent			)
1314 		__field(	ino_t,	ino			)
1315 		__field(	loff_t,	size			)
1316 		__field(	dev_t,	dev			)
1317 	),
1318 
1319 	TP_fast_assign(
1320 		__entry->parent		= parent->i_ino;
1321 		__entry->ino		= dentry->d_inode->i_ino;
1322 		__entry->size		= dentry->d_inode->i_size;
1323 		__entry->dev		= dentry->d_inode->i_sb->s_dev;
1324 	),
1325 
1326 	TP_printk("dev %d,%d ino %lu size %lld parent %lu",
1327 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1328 		  (unsigned long) __entry->ino, __entry->size,
1329 		  (unsigned long) __entry->parent)
1330 );
1331 
1332 TRACE_EVENT(ext4_unlink_exit,
1333 	TP_PROTO(struct dentry *dentry, int ret),
1334 
1335 	TP_ARGS(dentry, ret),
1336 
1337 	TP_STRUCT__entry(
1338 		__field(	ino_t,	ino			)
1339 		__field(	dev_t,	dev			)
1340 		__field(	int,	ret			)
1341 	),
1342 
1343 	TP_fast_assign(
1344 		__entry->ino		= dentry->d_inode->i_ino;
1345 		__entry->dev		= dentry->d_inode->i_sb->s_dev;
1346 		__entry->ret		= ret;
1347 	),
1348 
1349 	TP_printk("dev %d,%d ino %lu ret %d",
1350 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1351 		  (unsigned long) __entry->ino,
1352 		  __entry->ret)
1353 );
1354 
1355 DECLARE_EVENT_CLASS(ext4__truncate,
1356 	TP_PROTO(struct inode *inode),
1357 
1358 	TP_ARGS(inode),
1359 
1360 	TP_STRUCT__entry(
1361 		__field(	ino_t,  	ino		)
1362 		__field(	dev_t,  	dev		)
1363 		__field(	__u64,		blocks		)
1364 	),
1365 
1366 	TP_fast_assign(
1367 		__entry->ino    = inode->i_ino;
1368 		__entry->dev    = inode->i_sb->s_dev;
1369 		__entry->blocks	= inode->i_blocks;
1370 	),
1371 
1372 	TP_printk("dev %d,%d ino %lu blocks %llu",
1373 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1374 		  (unsigned long) __entry->ino, __entry->blocks)
1375 );
1376 
1377 DEFINE_EVENT(ext4__truncate, ext4_truncate_enter,
1378 
1379 	TP_PROTO(struct inode *inode),
1380 
1381 	TP_ARGS(inode)
1382 );
1383 
1384 DEFINE_EVENT(ext4__truncate, ext4_truncate_exit,
1385 
1386 	TP_PROTO(struct inode *inode),
1387 
1388 	TP_ARGS(inode)
1389 );
1390 
1391 DECLARE_EVENT_CLASS(ext4__map_blocks_enter,
1392 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1393 		 unsigned int len, unsigned int flags),
1394 
1395 	TP_ARGS(inode, lblk, len, flags),
1396 
1397 	TP_STRUCT__entry(
1398 		__field(	ino_t,  	ino		)
1399 		__field(	dev_t,  	dev		)
1400 		__field(	ext4_lblk_t,	lblk		)
1401 		__field(	unsigned int,	len		)
1402 		__field(	unsigned int,	flags		)
1403 	),
1404 
1405 	TP_fast_assign(
1406 		__entry->ino    = inode->i_ino;
1407 		__entry->dev    = inode->i_sb->s_dev;
1408 		__entry->lblk	= lblk;
1409 		__entry->len	= len;
1410 		__entry->flags	= flags;
1411 	),
1412 
1413 	TP_printk("dev %d,%d ino %lu lblk %u len %u flags %u",
1414 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1415 		  (unsigned long) __entry->ino,
1416 		  __entry->lblk, __entry->len, __entry->flags)
1417 );
1418 
1419 DEFINE_EVENT(ext4__map_blocks_enter, ext4_ext_map_blocks_enter,
1420 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1421 		 unsigned len, unsigned flags),
1422 
1423 	TP_ARGS(inode, lblk, len, flags)
1424 );
1425 
1426 DEFINE_EVENT(ext4__map_blocks_enter, ext4_ind_map_blocks_enter,
1427 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1428 		 unsigned len, unsigned flags),
1429 
1430 	TP_ARGS(inode, lblk, len, flags)
1431 );
1432 
1433 DECLARE_EVENT_CLASS(ext4__map_blocks_exit,
1434 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1435 		 ext4_fsblk_t pblk, unsigned int len, int ret),
1436 
1437 	TP_ARGS(inode, lblk, pblk, len, ret),
1438 
1439 	TP_STRUCT__entry(
1440 		__field(	ino_t,		ino		)
1441 		__field(	dev_t,		dev		)
1442 		__field(	ext4_lblk_t,	lblk		)
1443 		__field(	ext4_fsblk_t,	pblk		)
1444 		__field(	unsigned int,	len		)
1445 		__field(	int,		ret		)
1446 	),
1447 
1448 	TP_fast_assign(
1449 		__entry->ino    = inode->i_ino;
1450 		__entry->dev    = inode->i_sb->s_dev;
1451 		__entry->lblk	= lblk;
1452 		__entry->pblk	= pblk;
1453 		__entry->len	= len;
1454 		__entry->ret	= ret;
1455 	),
1456 
1457 	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu len %u ret %d",
1458 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1459 		  (unsigned long) __entry->ino,
1460 		  __entry->lblk, __entry->pblk,
1461 		  __entry->len, __entry->ret)
1462 );
1463 
1464 DEFINE_EVENT(ext4__map_blocks_exit, ext4_ext_map_blocks_exit,
1465 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1466 		 ext4_fsblk_t pblk, unsigned len, int ret),
1467 
1468 	TP_ARGS(inode, lblk, pblk, len, ret)
1469 );
1470 
1471 DEFINE_EVENT(ext4__map_blocks_exit, ext4_ind_map_blocks_exit,
1472 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk,
1473 		 ext4_fsblk_t pblk, unsigned len, int ret),
1474 
1475 	TP_ARGS(inode, lblk, pblk, len, ret)
1476 );
1477 
1478 TRACE_EVENT(ext4_ext_load_extent,
1479 	TP_PROTO(struct inode *inode, ext4_lblk_t lblk, ext4_fsblk_t pblk),
1480 
1481 	TP_ARGS(inode, lblk, pblk),
1482 
1483 	TP_STRUCT__entry(
1484 		__field(	ino_t,		ino		)
1485 		__field(	dev_t,		dev		)
1486 		__field(	ext4_lblk_t,	lblk		)
1487 		__field(	ext4_fsblk_t,	pblk		)
1488 	),
1489 
1490 	TP_fast_assign(
1491 		__entry->ino    = inode->i_ino;
1492 		__entry->dev    = inode->i_sb->s_dev;
1493 		__entry->lblk	= lblk;
1494 		__entry->pblk	= pblk;
1495 	),
1496 
1497 	TP_printk("dev %d,%d ino %lu lblk %u pblk %llu",
1498 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1499 		  (unsigned long) __entry->ino,
1500 		  __entry->lblk, __entry->pblk)
1501 );
1502 
1503 TRACE_EVENT(ext4_load_inode,
1504 	TP_PROTO(struct inode *inode),
1505 
1506 	TP_ARGS(inode),
1507 
1508 	TP_STRUCT__entry(
1509 		__field(	ino_t,	ino		)
1510 		__field(	dev_t,	dev		)
1511 	),
1512 
1513 	TP_fast_assign(
1514 		__entry->ino		= inode->i_ino;
1515 		__entry->dev		= inode->i_sb->s_dev;
1516 	),
1517 
1518 	TP_printk("dev %d,%d ino %ld",
1519 		  MAJOR(__entry->dev), MINOR(__entry->dev),
1520 		  (unsigned long) __entry->ino)
1521 );
1522 
1523 #endif /* _TRACE_EXT4_H */
1524 
1525 /* This part must be outside protection */
1526 #include <trace/define_trace.h>
1527