1 #if !defined(_TRACE_EXT4_H) || defined(TRACE_HEADER_MULTI_READ)
5 #define TRACE_SYSTEM ext4
7 #include <linux/writeback.h>
8 #include "../../../fs/ext4/ext4.h"
9 #include "../../../fs/ext4/mballoc.h"
10 #include <linux/tracepoint.h>
12 TRACE_EVENT(ext4_free_inode
,
13 TP_PROTO(struct inode
*inode
),
20 __field( umode_t
, mode
)
23 __field( blkcnt_t
, blocks
)
27 __entry
->dev
= inode
->i_sb
->s_dev
;
28 __entry
->ino
= inode
->i_ino
;
29 __entry
->mode
= inode
->i_mode
;
30 __entry
->uid
= inode
->i_uid
;
31 __entry
->gid
= inode
->i_gid
;
32 __entry
->blocks
= inode
->i_blocks
;
35 TP_printk("dev %s ino %lu mode %d uid %u gid %u blocks %llu",
36 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->mode
,
37 __entry
->uid
, __entry
->gid
, __entry
->blocks
)
40 TRACE_EVENT(ext4_request_inode
,
41 TP_PROTO(struct inode
*dir
, int mode
),
48 __field( umode_t
, mode
)
52 __entry
->dev
= dir
->i_sb
->s_dev
;
53 __entry
->dir
= dir
->i_ino
;
57 TP_printk("dev %s dir %lu mode %d",
58 jbd2_dev_to_name(__entry
->dev
), __entry
->dir
, __entry
->mode
)
61 TRACE_EVENT(ext4_allocate_inode
,
62 TP_PROTO(struct inode
*inode
, struct inode
*dir
, int mode
),
64 TP_ARGS(inode
, dir
, mode
),
70 __field( umode_t
, mode
)
74 __entry
->dev
= inode
->i_sb
->s_dev
;
75 __entry
->ino
= inode
->i_ino
;
76 __entry
->dir
= dir
->i_ino
;
80 TP_printk("dev %s ino %lu dir %lu mode %d",
81 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->dir
, __entry
->mode
)
84 TRACE_EVENT(ext4_write_begin
,
86 TP_PROTO(struct inode
*inode
, loff_t pos
, unsigned int len
,
89 TP_ARGS(inode
, pos
, len
, flags
),
94 __field( loff_t
, pos
)
95 __field( unsigned int, len
)
96 __field( unsigned int, flags
)
100 __entry
->dev
= inode
->i_sb
->s_dev
;
101 __entry
->ino
= inode
->i_ino
;
104 __entry
->flags
= flags
;
107 TP_printk("dev %s ino %lu pos %llu len %u flags %u",
108 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->pos
, __entry
->len
,
112 TRACE_EVENT(ext4_ordered_write_end
,
113 TP_PROTO(struct inode
*inode
, loff_t pos
, unsigned int len
,
114 unsigned int copied
),
116 TP_ARGS(inode
, pos
, len
, copied
),
119 __field( dev_t
, dev
)
120 __field( ino_t
, ino
)
121 __field( loff_t
, pos
)
122 __field( unsigned int, len
)
123 __field( unsigned int, copied
)
127 __entry
->dev
= inode
->i_sb
->s_dev
;
128 __entry
->ino
= inode
->i_ino
;
131 __entry
->copied
= copied
;
134 TP_printk("dev %s ino %lu pos %llu len %u copied %u",
135 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->pos
, __entry
->len
,
139 TRACE_EVENT(ext4_writeback_write_end
,
140 TP_PROTO(struct inode
*inode
, loff_t pos
, unsigned int len
,
141 unsigned int copied
),
143 TP_ARGS(inode
, pos
, len
, copied
),
146 __field( dev_t
, dev
)
147 __field( ino_t
, ino
)
148 __field( loff_t
, pos
)
149 __field( unsigned int, len
)
150 __field( unsigned int, copied
)
154 __entry
->dev
= inode
->i_sb
->s_dev
;
155 __entry
->ino
= inode
->i_ino
;
158 __entry
->copied
= copied
;
161 TP_printk("dev %s ino %lu pos %llu len %u copied %u",
162 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->pos
, __entry
->len
,
166 TRACE_EVENT(ext4_journalled_write_end
,
167 TP_PROTO(struct inode
*inode
, loff_t pos
, unsigned int len
,
168 unsigned int copied
),
169 TP_ARGS(inode
, pos
, len
, copied
),
172 __field( dev_t
, dev
)
173 __field( ino_t
, ino
)
174 __field( loff_t
, pos
)
175 __field( unsigned int, len
)
176 __field( unsigned int, copied
)
180 __entry
->dev
= inode
->i_sb
->s_dev
;
181 __entry
->ino
= inode
->i_ino
;
184 __entry
->copied
= copied
;
187 TP_printk("dev %s ino %lu pos %llu len %u copied %u",
188 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->pos
, __entry
->len
,
192 TRACE_EVENT(ext4_da_writepage
,
193 TP_PROTO(struct inode
*inode
, struct page
*page
),
195 TP_ARGS(inode
, page
),
198 __field( dev_t
, dev
)
199 __field( ino_t
, ino
)
200 __field( pgoff_t
, index
)
205 __entry
->dev
= inode
->i_sb
->s_dev
;
206 __entry
->ino
= inode
->i_ino
;
207 __entry
->index
= page
->index
;
210 TP_printk("dev %s ino %lu page_index %lu",
211 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->index
)
214 TRACE_EVENT(ext4_da_writepages
,
215 TP_PROTO(struct inode
*inode
, struct writeback_control
*wbc
),
220 __field( dev_t
, dev
)
221 __field( ino_t
, ino
)
222 __field( long, nr_to_write
)
223 __field( long, pages_skipped
)
224 __field( loff_t
, range_start
)
225 __field( loff_t
, range_end
)
226 __field( char, nonblocking
)
227 __field( char, for_kupdate
)
228 __field( char, for_reclaim
)
229 __field( char, for_writepages
)
230 __field( char, range_cyclic
)
234 __entry
->dev
= inode
->i_sb
->s_dev
;
235 __entry
->ino
= inode
->i_ino
;
236 __entry
->nr_to_write
= wbc
->nr_to_write
;
237 __entry
->pages_skipped
= wbc
->pages_skipped
;
238 __entry
->range_start
= wbc
->range_start
;
239 __entry
->range_end
= wbc
->range_end
;
240 __entry
->nonblocking
= wbc
->nonblocking
;
241 __entry
->for_kupdate
= wbc
->for_kupdate
;
242 __entry
->for_reclaim
= wbc
->for_reclaim
;
243 __entry
->for_writepages
= wbc
->for_writepages
;
244 __entry
->range_cyclic
= wbc
->range_cyclic
;
247 TP_printk("dev %s ino %lu nr_t_write %ld pages_skipped %ld range_start %llu range_end %llu nonblocking %d for_kupdate %d for_reclaim %d for_writepages %d range_cyclic %d",
248 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->nr_to_write
,
249 __entry
->pages_skipped
, __entry
->range_start
,
250 __entry
->range_end
, __entry
->nonblocking
,
251 __entry
->for_kupdate
, __entry
->for_reclaim
,
252 __entry
->for_writepages
, __entry
->range_cyclic
)
255 TRACE_EVENT(ext4_da_writepages_result
,
256 TP_PROTO(struct inode
*inode
, struct writeback_control
*wbc
,
257 int ret
, int pages_written
),
259 TP_ARGS(inode
, wbc
, ret
, pages_written
),
262 __field( dev_t
, dev
)
263 __field( ino_t
, ino
)
265 __field( int, pages_written
)
266 __field( long, pages_skipped
)
267 __field( char, encountered_congestion
)
268 __field( char, more_io
)
269 __field( char, no_nrwrite_index_update
)
273 __entry
->dev
= inode
->i_sb
->s_dev
;
274 __entry
->ino
= inode
->i_ino
;
276 __entry
->pages_written
= pages_written
;
277 __entry
->pages_skipped
= wbc
->pages_skipped
;
278 __entry
->encountered_congestion
= wbc
->encountered_congestion
;
279 __entry
->more_io
= wbc
->more_io
;
280 __entry
->no_nrwrite_index_update
= wbc
->no_nrwrite_index_update
;
283 TP_printk("dev %s ino %lu ret %d pages_written %d pages_skipped %ld congestion %d more_io %d no_nrwrite_index_update %d",
284 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->ret
,
285 __entry
->pages_written
, __entry
->pages_skipped
,
286 __entry
->encountered_congestion
, __entry
->more_io
,
287 __entry
->no_nrwrite_index_update
)
290 TRACE_EVENT(ext4_da_write_begin
,
291 TP_PROTO(struct inode
*inode
, loff_t pos
, unsigned int len
,
294 TP_ARGS(inode
, pos
, len
, flags
),
297 __field( dev_t
, dev
)
298 __field( ino_t
, ino
)
299 __field( loff_t
, pos
)
300 __field( unsigned int, len
)
301 __field( unsigned int, flags
)
305 __entry
->dev
= inode
->i_sb
->s_dev
;
306 __entry
->ino
= inode
->i_ino
;
309 __entry
->flags
= flags
;
312 TP_printk("dev %s ino %lu pos %llu len %u flags %u",
313 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->pos
, __entry
->len
,
317 TRACE_EVENT(ext4_da_write_end
,
318 TP_PROTO(struct inode
*inode
, loff_t pos
, unsigned int len
,
319 unsigned int copied
),
321 TP_ARGS(inode
, pos
, len
, copied
),
324 __field( dev_t
, dev
)
325 __field( ino_t
, ino
)
326 __field( loff_t
, pos
)
327 __field( unsigned int, len
)
328 __field( unsigned int, copied
)
332 __entry
->dev
= inode
->i_sb
->s_dev
;
333 __entry
->ino
= inode
->i_ino
;
336 __entry
->copied
= copied
;
339 TP_printk("dev %s ino %lu pos %llu len %u copied %u",
340 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->pos
, __entry
->len
,
344 TRACE_EVENT(ext4_normal_writepage
,
345 TP_PROTO(struct inode
*inode
, struct page
*page
),
347 TP_ARGS(inode
, page
),
350 __field( dev_t
, dev
)
351 __field( ino_t
, ino
)
352 __field( pgoff_t
, index
)
356 __entry
->dev
= inode
->i_sb
->s_dev
;
357 __entry
->ino
= inode
->i_ino
;
358 __entry
->index
= page
->index
;
361 TP_printk("dev %s ino %lu page_index %lu",
362 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->index
)
365 TRACE_EVENT(ext4_journalled_writepage
,
366 TP_PROTO(struct inode
*inode
, struct page
*page
),
368 TP_ARGS(inode
, page
),
371 __field( dev_t
, dev
)
372 __field( ino_t
, ino
)
373 __field( pgoff_t
, index
)
378 __entry
->dev
= inode
->i_sb
->s_dev
;
379 __entry
->ino
= inode
->i_ino
;
380 __entry
->index
= page
->index
;
383 TP_printk("dev %s ino %lu page_index %lu",
384 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->index
)
387 TRACE_EVENT(ext4_discard_blocks
,
388 TP_PROTO(struct super_block
*sb
, unsigned long long blk
,
389 unsigned long long count
),
391 TP_ARGS(sb
, blk
, count
),
394 __field( dev_t
, dev
)
395 __field( __u64
, blk
)
396 __field( __u64
, count
)
401 __entry
->dev
= sb
->s_dev
;
403 __entry
->count
= count
;
406 TP_printk("dev %s blk %llu count %llu",
407 jbd2_dev_to_name(__entry
->dev
), __entry
->blk
, __entry
->count
)
410 TRACE_EVENT(ext4_mb_new_inode_pa
,
411 TP_PROTO(struct ext4_allocation_context
*ac
,
412 struct ext4_prealloc_space
*pa
),
417 __field( dev_t
, dev
)
418 __field( ino_t
, ino
)
419 __field( __u64
, pa_pstart
)
420 __field( __u32
, pa_len
)
421 __field( __u64
, pa_lstart
)
426 __entry
->dev
= ac
->ac_sb
->s_dev
;
427 __entry
->ino
= ac
->ac_inode
->i_ino
;
428 __entry
->pa_pstart
= pa
->pa_pstart
;
429 __entry
->pa_len
= pa
->pa_len
;
430 __entry
->pa_lstart
= pa
->pa_lstart
;
433 TP_printk("dev %s ino %lu pstart %llu len %u lstart %llu",
434 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->pa_pstart
,
435 __entry
->pa_len
, __entry
->pa_lstart
)
438 TRACE_EVENT(ext4_mb_new_group_pa
,
439 TP_PROTO(struct ext4_allocation_context
*ac
,
440 struct ext4_prealloc_space
*pa
),
445 __field( dev_t
, dev
)
446 __field( ino_t
, ino
)
447 __field( __u64
, pa_pstart
)
448 __field( __u32
, pa_len
)
449 __field( __u64
, pa_lstart
)
454 __entry
->dev
= ac
->ac_sb
->s_dev
;
455 __entry
->ino
= ac
->ac_inode
->i_ino
;
456 __entry
->pa_pstart
= pa
->pa_pstart
;
457 __entry
->pa_len
= pa
->pa_len
;
458 __entry
->pa_lstart
= pa
->pa_lstart
;
461 TP_printk("dev %s ino %lu pstart %llu len %u lstart %llu",
462 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->pa_pstart
,
463 __entry
->pa_len
, __entry
->pa_lstart
)
466 TRACE_EVENT(ext4_mb_release_inode_pa
,
467 TP_PROTO(struct ext4_allocation_context
*ac
,
468 struct ext4_prealloc_space
*pa
,
469 unsigned long long block
, unsigned int count
),
471 TP_ARGS(ac
, pa
, block
, count
),
474 __field( dev_t
, dev
)
475 __field( ino_t
, ino
)
476 __field( __u64
, block
)
477 __field( __u32
, count
)
482 __entry
->dev
= ac
->ac_sb
->s_dev
;
483 __entry
->ino
= ac
->ac_inode
->i_ino
;
484 __entry
->block
= block
;
485 __entry
->count
= count
;
488 TP_printk("dev %s ino %lu block %llu count %u",
489 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->block
,
493 TRACE_EVENT(ext4_mb_release_group_pa
,
494 TP_PROTO(struct ext4_allocation_context
*ac
,
495 struct ext4_prealloc_space
*pa
),
500 __field( dev_t
, dev
)
501 __field( ino_t
, ino
)
502 __field( __u64
, pa_pstart
)
503 __field( __u32
, pa_len
)
508 __entry
->dev
= ac
->ac_sb
->s_dev
;
509 __entry
->ino
= ac
->ac_inode
->i_ino
;
510 __entry
->pa_pstart
= pa
->pa_pstart
;
511 __entry
->pa_len
= pa
->pa_len
;
514 TP_printk("dev %s pstart %llu len %u",
515 jbd2_dev_to_name(__entry
->dev
), __entry
->pa_pstart
, __entry
->pa_len
)
518 TRACE_EVENT(ext4_discard_preallocations
,
519 TP_PROTO(struct inode
*inode
),
524 __field( dev_t
, dev
)
525 __field( ino_t
, ino
)
530 __entry
->dev
= inode
->i_sb
->s_dev
;
531 __entry
->ino
= inode
->i_ino
;
534 TP_printk("dev %s ino %lu",
535 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
)
538 TRACE_EVENT(ext4_mb_discard_preallocations
,
539 TP_PROTO(struct super_block
*sb
, int needed
),
544 __field( dev_t
, dev
)
545 __field( int, needed
)
550 __entry
->dev
= sb
->s_dev
;
551 __entry
->needed
= needed
;
554 TP_printk("dev %s needed %d",
555 jbd2_dev_to_name(__entry
->dev
), __entry
->needed
)
558 TRACE_EVENT(ext4_request_blocks
,
559 TP_PROTO(struct ext4_allocation_request
*ar
),
564 __field( dev_t
, dev
)
565 __field( ino_t
, ino
)
566 __field( unsigned int, flags
)
567 __field( unsigned int, len
)
568 __field( __u64
, logical
)
569 __field( __u64
, goal
)
570 __field( __u64
, lleft
)
571 __field( __u64
, lright
)
572 __field( __u64
, pleft
)
573 __field( __u64
, pright
)
577 __entry
->dev
= ar
->inode
->i_sb
->s_dev
;
578 __entry
->ino
= ar
->inode
->i_ino
;
579 __entry
->flags
= ar
->flags
;
580 __entry
->len
= ar
->len
;
581 __entry
->logical
= ar
->logical
;
582 __entry
->goal
= ar
->goal
;
583 __entry
->lleft
= ar
->lleft
;
584 __entry
->lright
= ar
->lright
;
585 __entry
->pleft
= ar
->pleft
;
586 __entry
->pright
= ar
->pright
;
589 TP_printk("dev %s ino %lu flags %u len %u lblk %llu goal %llu lleft %llu lright %llu pleft %llu pright %llu ",
590 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->flags
,
592 (unsigned long long) __entry
->logical
,
593 (unsigned long long) __entry
->goal
,
594 (unsigned long long) __entry
->lleft
,
595 (unsigned long long) __entry
->lright
,
596 (unsigned long long) __entry
->pleft
,
597 (unsigned long long) __entry
->pright
)
600 TRACE_EVENT(ext4_allocate_blocks
,
601 TP_PROTO(struct ext4_allocation_request
*ar
, unsigned long long block
),
606 __field( dev_t
, dev
)
607 __field( ino_t
, ino
)
608 __field( __u64
, block
)
609 __field( unsigned int, flags
)
610 __field( unsigned int, len
)
611 __field( __u64
, logical
)
612 __field( __u64
, goal
)
613 __field( __u64
, lleft
)
614 __field( __u64
, lright
)
615 __field( __u64
, pleft
)
616 __field( __u64
, pright
)
620 __entry
->dev
= ar
->inode
->i_sb
->s_dev
;
621 __entry
->ino
= ar
->inode
->i_ino
;
622 __entry
->block
= block
;
623 __entry
->flags
= ar
->flags
;
624 __entry
->len
= ar
->len
;
625 __entry
->logical
= ar
->logical
;
626 __entry
->goal
= ar
->goal
;
627 __entry
->lleft
= ar
->lleft
;
628 __entry
->lright
= ar
->lright
;
629 __entry
->pleft
= ar
->pleft
;
630 __entry
->pright
= ar
->pright
;
633 TP_printk("dev %s ino %lu flags %u len %u block %llu lblk %llu goal %llu lleft %llu lright %llu pleft %llu pright %llu ",
634 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->flags
,
635 __entry
->len
, __entry
->block
,
636 (unsigned long long) __entry
->logical
,
637 (unsigned long long) __entry
->goal
,
638 (unsigned long long) __entry
->lleft
,
639 (unsigned long long) __entry
->lright
,
640 (unsigned long long) __entry
->pleft
,
641 (unsigned long long) __entry
->pright
)
644 TRACE_EVENT(ext4_free_blocks
,
645 TP_PROTO(struct inode
*inode
, __u64 block
, unsigned long count
,
648 TP_ARGS(inode
, block
, count
, metadata
),
651 __field( dev_t
, dev
)
652 __field( ino_t
, ino
)
653 __field( __u64
, block
)
654 __field( unsigned long, count
)
655 __field( int, metadata
)
660 __entry
->dev
= inode
->i_sb
->s_dev
;
661 __entry
->ino
= inode
->i_ino
;
662 __entry
->block
= block
;
663 __entry
->count
= count
;
664 __entry
->metadata
= metadata
;
667 TP_printk("dev %s ino %lu block %llu count %lu metadata %d",
668 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->block
,
669 __entry
->count
, __entry
->metadata
)
672 TRACE_EVENT(ext4_sync_file
,
673 TP_PROTO(struct file
*file
, struct dentry
*dentry
, int datasync
),
675 TP_ARGS(file
, dentry
, datasync
),
678 __field( dev_t
, dev
)
679 __field( ino_t
, ino
)
680 __field( ino_t
, parent
)
681 __field( int, datasync
)
685 __entry
->dev
= dentry
->d_inode
->i_sb
->s_dev
;
686 __entry
->ino
= dentry
->d_inode
->i_ino
;
687 __entry
->datasync
= datasync
;
688 __entry
->parent
= dentry
->d_parent
->d_inode
->i_ino
;
691 TP_printk("dev %s ino %ld parent %ld datasync %d ",
692 jbd2_dev_to_name(__entry
->dev
), __entry
->ino
, __entry
->parent
,
696 TRACE_EVENT(ext4_sync_fs
,
697 TP_PROTO(struct super_block
*sb
, int wait
),
702 __field( dev_t
, dev
)
708 __entry
->dev
= sb
->s_dev
;
709 __entry
->wait
= wait
;
712 TP_printk("dev %s wait %d", jbd2_dev_to_name(__entry
->dev
),
716 #endif /* _TRACE_EXT4_H */
718 /* This part must be outside protection */
719 #include <trace/define_trace.h>