]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blob - include/trace/events/ext4.h
ext4: add more tracepoints and use dev_t in the trace buffer
[mirror_ubuntu-zesty-kernel.git] / include / trace / events / ext4.h
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>