2 #define TRACE_SYSTEM ext3
4 #if !defined(_TRACE_EXT3_H) || defined(TRACE_HEADER_MULTI_READ)
7 #include <linux/tracepoint.h>
8 #include <linux/version.h>
10 TRACE_EVENT(ext3_free_inode,
11 TP_PROTO(struct inode *inode),
18 __field( umode_t, mode )
21 __field( blkcnt_t, blocks )
25 tp_assign(dev, inode->i_sb->s_dev)
26 tp_assign(ino, inode->i_ino)
27 tp_assign(mode, inode->i_mode)
28 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0))
29 tp_assign(uid, i_uid_read(inode))
30 tp_assign(gid, i_gid_read(inode))
32 tp_assign(uid, inode->i_uid)
33 tp_assign(gid, inode->i_gid)
35 tp_assign(blocks, inode->i_blocks)
38 TP_printk("dev %d,%d ino %lu mode 0%o uid %u gid %u blocks %lu",
39 MAJOR(__entry->dev), MINOR(__entry->dev),
40 (unsigned long) __entry->ino,
41 __entry->mode, __entry->uid, __entry->gid,
42 (unsigned long) __entry->blocks)
45 TRACE_EVENT(ext3_request_inode,
46 TP_PROTO(struct inode *dir, int mode),
53 __field( umode_t, mode )
57 tp_assign(dev, dir->i_sb->s_dev)
58 tp_assign(dir, dir->i_ino)
62 TP_printk("dev %d,%d dir %lu mode 0%o",
63 MAJOR(__entry->dev), MINOR(__entry->dev),
64 (unsigned long) __entry->dir, __entry->mode)
67 TRACE_EVENT(ext3_allocate_inode,
68 TP_PROTO(struct inode *inode, struct inode *dir, int mode),
70 TP_ARGS(inode, dir, mode),
76 __field( umode_t, mode )
80 tp_assign(dev, inode->i_sb->s_dev)
81 tp_assign(ino, inode->i_ino)
82 tp_assign(dir, dir->i_ino)
86 TP_printk("dev %d,%d ino %lu dir %lu mode 0%o",
87 MAJOR(__entry->dev), MINOR(__entry->dev),
88 (unsigned long) __entry->ino,
89 (unsigned long) __entry->dir, __entry->mode)
92 TRACE_EVENT(ext3_evict_inode,
93 TP_PROTO(struct inode *inode),
100 __field( int, nlink )
104 tp_assign(dev, inode->i_sb->s_dev)
105 tp_assign(ino, inode->i_ino)
106 tp_assign(nlink, inode->i_nlink)
109 TP_printk("dev %d,%d ino %lu nlink %d",
110 MAJOR(__entry->dev), MINOR(__entry->dev),
111 (unsigned long) __entry->ino, __entry->nlink)
114 TRACE_EVENT(ext3_drop_inode,
115 TP_PROTO(struct inode *inode, int drop),
117 TP_ARGS(inode, drop),
120 __field( dev_t, dev )
121 __field( ino_t, ino )
126 tp_assign(dev, inode->i_sb->s_dev)
127 tp_assign(ino, inode->i_ino)
128 tp_assign(drop, drop)
131 TP_printk("dev %d,%d ino %lu drop %d",
132 MAJOR(__entry->dev), MINOR(__entry->dev),
133 (unsigned long) __entry->ino, __entry->drop)
136 TRACE_EVENT(ext3_mark_inode_dirty,
137 TP_PROTO(struct inode *inode, unsigned long IP),
142 __field( dev_t, dev )
143 __field( ino_t, ino )
144 __field(unsigned long, ip )
148 tp_assign(dev, inode->i_sb->s_dev)
149 tp_assign(ino, inode->i_ino)
153 TP_printk("dev %d,%d ino %lu caller %pF",
154 MAJOR(__entry->dev), MINOR(__entry->dev),
155 (unsigned long) __entry->ino, (void *)__entry->ip)
158 TRACE_EVENT(ext3_write_begin,
159 TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
162 TP_ARGS(inode, pos, len, flags),
165 __field( dev_t, dev )
166 __field( ino_t, ino )
167 __field( loff_t, pos )
168 __field( unsigned int, len )
169 __field( unsigned int, flags )
173 tp_assign(dev, inode->i_sb->s_dev)
174 tp_assign(ino, inode->i_ino)
177 tp_assign(flags, flags)
180 TP_printk("dev %d,%d ino %lu pos %llu len %u flags %u",
181 MAJOR(__entry->dev), MINOR(__entry->dev),
182 (unsigned long) __entry->ino,
183 (unsigned long long) __entry->pos, __entry->len,
187 DECLARE_EVENT_CLASS(ext3__write_end,
188 TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
189 unsigned int copied),
191 TP_ARGS(inode, pos, len, copied),
194 __field( dev_t, dev )
195 __field( ino_t, ino )
196 __field( loff_t, pos )
197 __field( unsigned int, len )
198 __field( unsigned int, copied )
202 tp_assign(dev, inode->i_sb->s_dev)
203 tp_assign(ino, inode->i_ino)
206 tp_assign(copied, copied)
209 TP_printk("dev %d,%d ino %lu pos %llu len %u copied %u",
210 MAJOR(__entry->dev), MINOR(__entry->dev),
211 (unsigned long) __entry->ino,
212 (unsigned long long) __entry->pos, __entry->len,
216 DEFINE_EVENT(ext3__write_end, ext3_ordered_write_end,
218 TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
219 unsigned int copied),
221 TP_ARGS(inode, pos, len, copied)
224 DEFINE_EVENT(ext3__write_end, ext3_writeback_write_end,
226 TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
227 unsigned int copied),
229 TP_ARGS(inode, pos, len, copied)
232 DEFINE_EVENT(ext3__write_end, ext3_journalled_write_end,
234 TP_PROTO(struct inode *inode, loff_t pos, unsigned int len,
235 unsigned int copied),
237 TP_ARGS(inode, pos, len, copied)
240 DECLARE_EVENT_CLASS(ext3__page_op,
241 TP_PROTO(struct page *page),
246 __field( dev_t, dev )
247 __field( ino_t, ino )
248 __field( pgoff_t, index )
253 tp_assign(index, page->index)
254 tp_assign(ino, page->mapping->host->i_ino)
255 tp_assign(dev, page->mapping->host->i_sb->s_dev)
258 TP_printk("dev %d,%d ino %lu page_index %lu",
259 MAJOR(__entry->dev), MINOR(__entry->dev),
260 (unsigned long) __entry->ino, __entry->index)
263 DEFINE_EVENT(ext3__page_op, ext3_ordered_writepage,
265 TP_PROTO(struct page *page),
270 DEFINE_EVENT(ext3__page_op, ext3_writeback_writepage,
272 TP_PROTO(struct page *page),
277 DEFINE_EVENT(ext3__page_op, ext3_journalled_writepage,
279 TP_PROTO(struct page *page),
284 DEFINE_EVENT(ext3__page_op, ext3_readpage,
286 TP_PROTO(struct page *page),
291 DEFINE_EVENT(ext3__page_op, ext3_releasepage,
293 TP_PROTO(struct page *page),
298 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0))
300 TRACE_EVENT(ext3_invalidatepage,
301 TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
303 TP_ARGS(page, offset, length),
306 __field( pgoff_t, index )
307 __field( unsigned int, offset )
308 __field( unsigned int, length )
309 __field( ino_t, ino )
310 __field( dev_t, dev )
315 tp_assign(index, page->index)
316 tp_assign(offset, offset)
317 tp_assign(length, length)
318 tp_assign(ino, page->mapping->host->i_ino)
319 tp_assign(dev, page->mapping->host->i_sb->s_dev)
322 TP_printk("dev %d,%d ino %lu page_index %lu offset %u length %u",
323 MAJOR(__entry->dev), MINOR(__entry->dev),
324 (unsigned long) __entry->ino,
325 __entry->index, __entry->offset, __entry->length)
330 TRACE_EVENT(ext3_invalidatepage,
331 TP_PROTO(struct page *page, unsigned long offset),
333 TP_ARGS(page, offset),
336 __field( pgoff_t, index )
337 __field( unsigned long, offset )
338 __field( ino_t, ino )
339 __field( dev_t, dev )
344 tp_assign(index, page->index)
345 tp_assign(offset, offset)
346 tp_assign(ino, page->mapping->host->i_ino)
347 tp_assign(dev, page->mapping->host->i_sb->s_dev)
350 TP_printk("dev %d,%d ino %lu page_index %lu offset %lu",
351 MAJOR(__entry->dev), MINOR(__entry->dev),
352 (unsigned long) __entry->ino,
353 __entry->index, __entry->offset)
358 TRACE_EVENT(ext3_discard_blocks,
359 TP_PROTO(struct super_block *sb, unsigned long blk,
360 unsigned long count),
362 TP_ARGS(sb, blk, count),
365 __field( dev_t, dev )
366 __field( unsigned long, blk )
367 __field( unsigned long, count )
372 tp_assign(dev, sb->s_dev)
374 tp_assign(count, count)
377 TP_printk("dev %d,%d blk %lu count %lu",
378 MAJOR(__entry->dev), MINOR(__entry->dev),
379 __entry->blk, __entry->count)
382 TRACE_EVENT(ext3_request_blocks,
383 TP_PROTO(struct inode *inode, unsigned long goal,
384 unsigned long count),
386 TP_ARGS(inode, goal, count),
389 __field( dev_t, dev )
390 __field( ino_t, ino )
391 __field( unsigned long, count )
392 __field( unsigned long, goal )
396 tp_assign(dev, inode->i_sb->s_dev)
397 tp_assign(ino, inode->i_ino)
398 tp_assign(count, count)
399 tp_assign(goal, goal)
402 TP_printk("dev %d,%d ino %lu count %lu goal %lu ",
403 MAJOR(__entry->dev), MINOR(__entry->dev),
404 (unsigned long) __entry->ino,
405 __entry->count, __entry->goal)
408 TRACE_EVENT(ext3_allocate_blocks,
409 TP_PROTO(struct inode *inode, unsigned long goal,
410 unsigned long count, unsigned long block),
412 TP_ARGS(inode, goal, count, block),
415 __field( dev_t, dev )
416 __field( ino_t, ino )
417 __field( unsigned long, block )
418 __field( unsigned long, count )
419 __field( unsigned long, goal )
423 tp_assign(dev, inode->i_sb->s_dev)
424 tp_assign(ino, inode->i_ino)
425 tp_assign(block, block)
426 tp_assign(count, count)
427 tp_assign(goal, goal)
430 TP_printk("dev %d,%d ino %lu count %lu block %lu goal %lu",
431 MAJOR(__entry->dev), MINOR(__entry->dev),
432 (unsigned long) __entry->ino,
433 __entry->count, __entry->block,
437 TRACE_EVENT(ext3_free_blocks,
438 TP_PROTO(struct inode *inode, unsigned long block,
439 unsigned long count),
441 TP_ARGS(inode, block, count),
444 __field( dev_t, dev )
445 __field( ino_t, ino )
446 __field( umode_t, mode )
447 __field( unsigned long, block )
448 __field( unsigned long, count )
452 tp_assign(dev, inode->i_sb->s_dev)
453 tp_assign(ino, inode->i_ino)
454 tp_assign(mode, inode->i_mode)
455 tp_assign(block, block)
456 tp_assign(count, count)
459 TP_printk("dev %d,%d ino %lu mode 0%o block %lu count %lu",
460 MAJOR(__entry->dev), MINOR(__entry->dev),
461 (unsigned long) __entry->ino,
462 __entry->mode, __entry->block, __entry->count)
465 TRACE_EVENT(ext3_sync_file_enter,
466 TP_PROTO(struct file *file, int datasync),
468 TP_ARGS(file, datasync),
471 __field( dev_t, dev )
472 __field( ino_t, ino )
473 __field( ino_t, parent )
474 __field( int, datasync )
478 tp_assign(dev, file->f_path.dentry->d_inode->i_sb->s_dev)
479 tp_assign(ino, file->f_path.dentry->d_inode->i_ino)
480 tp_assign(datasync, datasync)
481 tp_assign(parent, file->f_path.dentry->d_parent->d_inode->i_ino)
484 TP_printk("dev %d,%d ino %lu parent %ld datasync %d ",
485 MAJOR(__entry->dev), MINOR(__entry->dev),
486 (unsigned long) __entry->ino,
487 (unsigned long) __entry->parent, __entry->datasync)
490 TRACE_EVENT(ext3_sync_file_exit,
491 TP_PROTO(struct inode *inode, int ret),
497 __field( ino_t, ino )
498 __field( dev_t, dev )
503 tp_assign(ino, inode->i_ino)
504 tp_assign(dev, inode->i_sb->s_dev)
507 TP_printk("dev %d,%d ino %lu ret %d",
508 MAJOR(__entry->dev), MINOR(__entry->dev),
509 (unsigned long) __entry->ino,
513 TRACE_EVENT(ext3_sync_fs,
514 TP_PROTO(struct super_block *sb, int wait),
519 __field( dev_t, dev )
525 tp_assign(dev, sb->s_dev)
526 tp_assign(wait, wait)
529 TP_printk("dev %d,%d wait %d",
530 MAJOR(__entry->dev), MINOR(__entry->dev),
534 TRACE_EVENT(ext3_rsv_window_add,
535 TP_PROTO(struct super_block *sb,
536 struct ext3_reserve_window_node *rsv_node),
538 TP_ARGS(sb, rsv_node),
541 __field( unsigned long, start )
542 __field( unsigned long, end )
543 __field( dev_t, dev )
547 tp_assign(dev, sb->s_dev)
548 tp_assign(start, rsv_node->rsv_window._rsv_start)
549 tp_assign(end, rsv_node->rsv_window._rsv_end)
552 TP_printk("dev %d,%d start %lu end %lu",
553 MAJOR(__entry->dev), MINOR(__entry->dev),
554 __entry->start, __entry->end)
557 TRACE_EVENT(ext3_discard_reservation,
558 TP_PROTO(struct inode *inode,
559 struct ext3_reserve_window_node *rsv_node),
561 TP_ARGS(inode, rsv_node),
564 __field( unsigned long, start )
565 __field( unsigned long, end )
566 __field( ino_t, ino )
567 __field( dev_t, dev )
571 tp_assign(start, rsv_node->rsv_window._rsv_start)
572 tp_assign(end, rsv_node->rsv_window._rsv_end)
573 tp_assign(ino, inode->i_ino)
574 tp_assign(dev, inode->i_sb->s_dev)
577 TP_printk("dev %d,%d ino %lu start %lu end %lu",
578 MAJOR(__entry->dev), MINOR(__entry->dev),
579 (unsigned long)__entry->ino, __entry->start,
583 TRACE_EVENT(ext3_alloc_new_reservation,
584 TP_PROTO(struct super_block *sb, unsigned long goal),
589 __field( dev_t, dev )
590 __field( unsigned long, goal )
594 tp_assign(dev, sb->s_dev)
595 tp_assign(goal, goal)
598 TP_printk("dev %d,%d goal %lu",
599 MAJOR(__entry->dev), MINOR(__entry->dev),
603 TRACE_EVENT(ext3_reserved,
604 TP_PROTO(struct super_block *sb, unsigned long block,
605 struct ext3_reserve_window_node *rsv_node),
607 TP_ARGS(sb, block, rsv_node),
610 __field( unsigned long, block )
611 __field( unsigned long, start )
612 __field( unsigned long, end )
613 __field( dev_t, dev )
617 tp_assign(block, block)
618 tp_assign(start, rsv_node->rsv_window._rsv_start)
619 tp_assign(end, rsv_node->rsv_window._rsv_end)
620 tp_assign(dev, sb->s_dev)
623 TP_printk("dev %d,%d block %lu, start %lu end %lu",
624 MAJOR(__entry->dev), MINOR(__entry->dev),
625 __entry->block, __entry->start, __entry->end)
628 TRACE_EVENT(ext3_forget,
629 TP_PROTO(struct inode *inode, int is_metadata, unsigned long block),
631 TP_ARGS(inode, is_metadata, block),
634 __field( dev_t, dev )
635 __field( ino_t, ino )
636 __field( umode_t, mode )
637 __field( int, is_metadata )
638 __field( unsigned long, block )
642 tp_assign(dev, inode->i_sb->s_dev)
643 tp_assign(ino, inode->i_ino)
644 tp_assign(mode, inode->i_mode)
645 tp_assign(is_metadata, is_metadata)
646 tp_assign(block, block)
649 TP_printk("dev %d,%d ino %lu mode 0%o is_metadata %d block %lu",
650 MAJOR(__entry->dev), MINOR(__entry->dev),
651 (unsigned long) __entry->ino,
652 __entry->mode, __entry->is_metadata, __entry->block)
655 TRACE_EVENT(ext3_read_block_bitmap,
656 TP_PROTO(struct super_block *sb, unsigned int group),
661 __field( dev_t, dev )
662 __field( __u32, group )
667 tp_assign(dev, sb->s_dev)
668 tp_assign(group, group)
671 TP_printk("dev %d,%d group %u",
672 MAJOR(__entry->dev), MINOR(__entry->dev),
676 TRACE_EVENT(ext3_direct_IO_enter,
677 TP_PROTO(struct inode *inode, loff_t offset, unsigned long len, int rw),
679 TP_ARGS(inode, offset, len, rw),
682 __field( ino_t, ino )
683 __field( dev_t, dev )
684 __field( loff_t, pos )
685 __field( unsigned long, len )
690 tp_assign(ino, inode->i_ino)
691 tp_assign(dev, inode->i_sb->s_dev)
692 tp_assign(pos, offset)
697 TP_printk("dev %d,%d ino %lu pos %llu len %lu rw %d",
698 MAJOR(__entry->dev), MINOR(__entry->dev),
699 (unsigned long) __entry->ino,
700 (unsigned long long) __entry->pos, __entry->len,
704 TRACE_EVENT(ext3_direct_IO_exit,
705 TP_PROTO(struct inode *inode, loff_t offset, unsigned long len,
708 TP_ARGS(inode, offset, len, rw, ret),
711 __field( ino_t, ino )
712 __field( dev_t, dev )
713 __field( loff_t, pos )
714 __field( unsigned long, len )
720 tp_assign(ino, inode->i_ino)
721 tp_assign(dev, inode->i_sb->s_dev)
722 tp_assign(pos, offset)
728 TP_printk("dev %d,%d ino %lu pos %llu len %lu rw %d ret %d",
729 MAJOR(__entry->dev), MINOR(__entry->dev),
730 (unsigned long) __entry->ino,
731 (unsigned long long) __entry->pos, __entry->len,
732 __entry->rw, __entry->ret)
735 TRACE_EVENT(ext3_unlink_enter,
736 TP_PROTO(struct inode *parent, struct dentry *dentry),
738 TP_ARGS(parent, dentry),
741 __field( ino_t, parent )
742 __field( ino_t, ino )
743 __field( loff_t, size )
744 __field( dev_t, dev )
748 tp_assign(parent, parent->i_ino)
749 tp_assign(ino, dentry->d_inode->i_ino)
750 tp_assign(size, dentry->d_inode->i_size)
751 tp_assign(dev, dentry->d_inode->i_sb->s_dev)
754 TP_printk("dev %d,%d ino %lu size %lld parent %ld",
755 MAJOR(__entry->dev), MINOR(__entry->dev),
756 (unsigned long) __entry->ino,
757 (unsigned long long)__entry->size,
758 (unsigned long) __entry->parent)
761 TRACE_EVENT(ext3_unlink_exit,
762 TP_PROTO(struct dentry *dentry, int ret),
764 TP_ARGS(dentry, ret),
767 __field( ino_t, ino )
768 __field( dev_t, dev )
773 tp_assign(ino, dentry->d_inode->i_ino)
774 tp_assign(dev, dentry->d_inode->i_sb->s_dev)
778 TP_printk("dev %d,%d ino %lu ret %d",
779 MAJOR(__entry->dev), MINOR(__entry->dev),
780 (unsigned long) __entry->ino,
784 DECLARE_EVENT_CLASS(ext3__truncate,
785 TP_PROTO(struct inode *inode),
790 __field( ino_t, ino )
791 __field( dev_t, dev )
792 __field( blkcnt_t, blocks )
796 tp_assign(ino, inode->i_ino)
797 tp_assign(dev, inode->i_sb->s_dev)
798 tp_assign(blocks, inode->i_blocks)
801 TP_printk("dev %d,%d ino %lu blocks %lu",
802 MAJOR(__entry->dev), MINOR(__entry->dev),
803 (unsigned long) __entry->ino, (unsigned long) __entry->blocks)
806 DEFINE_EVENT(ext3__truncate, ext3_truncate_enter,
808 TP_PROTO(struct inode *inode),
813 DEFINE_EVENT(ext3__truncate, ext3_truncate_exit,
815 TP_PROTO(struct inode *inode),
820 TRACE_EVENT(ext3_get_blocks_enter,
821 TP_PROTO(struct inode *inode, unsigned long lblk,
822 unsigned long len, int create),
824 TP_ARGS(inode, lblk, len, create),
827 __field( ino_t, ino )
828 __field( dev_t, dev )
829 __field( unsigned long, lblk )
830 __field( unsigned long, len )
831 __field( int, create )
835 tp_assign(ino, inode->i_ino)
836 tp_assign(dev, inode->i_sb->s_dev)
837 tp_assign(lblk, lblk)
839 tp_assign(create, create)
842 TP_printk("dev %d,%d ino %lu lblk %lu len %lu create %u",
843 MAJOR(__entry->dev), MINOR(__entry->dev),
844 (unsigned long) __entry->ino,
845 __entry->lblk, __entry->len, __entry->create)
848 TRACE_EVENT(ext3_get_blocks_exit,
849 TP_PROTO(struct inode *inode, unsigned long lblk,
850 unsigned long pblk, unsigned long len, int ret),
852 TP_ARGS(inode, lblk, pblk, len, ret),
855 __field( ino_t, ino )
856 __field( dev_t, dev )
857 __field( unsigned long, lblk )
858 __field( unsigned long, pblk )
859 __field( unsigned long, len )
864 tp_assign(ino, inode->i_ino)
865 tp_assign(dev, inode->i_sb->s_dev)
866 tp_assign(lblk, lblk)
867 tp_assign(pblk, pblk)
872 TP_printk("dev %d,%d ino %lu lblk %lu pblk %lu len %lu ret %d",
873 MAJOR(__entry->dev), MINOR(__entry->dev),
874 (unsigned long) __entry->ino,
875 __entry->lblk, __entry->pblk,
876 __entry->len, __entry->ret)
879 TRACE_EVENT(ext3_load_inode,
880 TP_PROTO(struct inode *inode),
885 __field( ino_t, ino )
886 __field( dev_t, dev )
890 tp_assign(ino, inode->i_ino)
891 tp_assign(dev, inode->i_sb->s_dev)
894 TP_printk("dev %d,%d ino %lu",
895 MAJOR(__entry->dev), MINOR(__entry->dev),
896 (unsigned long) __entry->ino)
899 #endif /* _TRACE_EXT3_H */
901 /* This part must be outside protection */
902 #include "../../../probes/define_trace.h"