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