ext4.h (ccd16945dba091fdf1036d7711b9f6cbd287ae28) ext4.h (08f4c42abad1b93914a93f9042e2443593bd3137)
1/* SPDX-License-Identifier: GPL-2.0 */
2#undef TRACE_SYSTEM
3#define TRACE_SYSTEM ext4
4
5#if !defined(_TRACE_EXT4_H) || defined(TRACE_HEADER_MULTI_READ)
6#define _TRACE_EXT4_H
7
8#include <linux/writeback.h>

--- 81 unchanged lines hidden (view full) ---

90
91#define show_falloc_mode(mode) __print_flags(mode, "|", \
92 { FALLOC_FL_KEEP_SIZE, "KEEP_SIZE"}, \
93 { FALLOC_FL_PUNCH_HOLE, "PUNCH_HOLE"}, \
94 { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}, \
95 { FALLOC_FL_COLLAPSE_RANGE, "COLLAPSE_RANGE"}, \
96 { FALLOC_FL_ZERO_RANGE, "ZERO_RANGE"})
97
1/* SPDX-License-Identifier: GPL-2.0 */
2#undef TRACE_SYSTEM
3#define TRACE_SYSTEM ext4
4
5#if !defined(_TRACE_EXT4_H) || defined(TRACE_HEADER_MULTI_READ)
6#define _TRACE_EXT4_H
7
8#include <linux/writeback.h>

--- 81 unchanged lines hidden (view full) ---

90
91#define show_falloc_mode(mode) __print_flags(mode, "|", \
92 { FALLOC_FL_KEEP_SIZE, "KEEP_SIZE"}, \
93 { FALLOC_FL_PUNCH_HOLE, "PUNCH_HOLE"}, \
94 { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}, \
95 { FALLOC_FL_COLLAPSE_RANGE, "COLLAPSE_RANGE"}, \
96 { FALLOC_FL_ZERO_RANGE, "ZERO_RANGE"})
97
98TRACE_DEFINE_ENUM(EXT4_FC_REASON_XATTR);
99TRACE_DEFINE_ENUM(EXT4_FC_REASON_CROSS_RENAME);
100TRACE_DEFINE_ENUM(EXT4_FC_REASON_JOURNAL_FLAG_CHANGE);
101TRACE_DEFINE_ENUM(EXT4_FC_REASON_NOMEM);
102TRACE_DEFINE_ENUM(EXT4_FC_REASON_SWAP_BOOT);
103TRACE_DEFINE_ENUM(EXT4_FC_REASON_RESIZE);
104TRACE_DEFINE_ENUM(EXT4_FC_REASON_RENAME_DIR);
105TRACE_DEFINE_ENUM(EXT4_FC_REASON_FALLOC_RANGE);
106TRACE_DEFINE_ENUM(EXT4_FC_REASON_INODE_JOURNAL_DATA);
107TRACE_DEFINE_ENUM(EXT4_FC_REASON_MAX);
108
98#define show_fc_reason(reason) \
99 __print_symbolic(reason, \
100 { EXT4_FC_REASON_XATTR, "XATTR"}, \
101 { EXT4_FC_REASON_CROSS_RENAME, "CROSS_RENAME"}, \
102 { EXT4_FC_REASON_JOURNAL_FLAG_CHANGE, "JOURNAL_FLAG_CHANGE"}, \
103 { EXT4_FC_REASON_NOMEM, "NO_MEM"}, \
104 { EXT4_FC_REASON_SWAP_BOOT, "SWAP_BOOT"}, \
105 { EXT4_FC_REASON_RESIZE, "RESIZE"}, \

--- 486 unchanged lines hidden (view full) ---

592
593DEFINE_EVENT(ext4__page_op, ext4_releasepage,
594
595 TP_PROTO(struct page *page),
596
597 TP_ARGS(page)
598);
599
109#define show_fc_reason(reason) \
110 __print_symbolic(reason, \
111 { EXT4_FC_REASON_XATTR, "XATTR"}, \
112 { EXT4_FC_REASON_CROSS_RENAME, "CROSS_RENAME"}, \
113 { EXT4_FC_REASON_JOURNAL_FLAG_CHANGE, "JOURNAL_FLAG_CHANGE"}, \
114 { EXT4_FC_REASON_NOMEM, "NO_MEM"}, \
115 { EXT4_FC_REASON_SWAP_BOOT, "SWAP_BOOT"}, \
116 { EXT4_FC_REASON_RESIZE, "RESIZE"}, \

--- 486 unchanged lines hidden (view full) ---

603
604DEFINE_EVENT(ext4__page_op, ext4_releasepage,
605
606 TP_PROTO(struct page *page),
607
608 TP_ARGS(page)
609);
610
600DECLARE_EVENT_CLASS(ext4_invalidate_folio_op,
601 TP_PROTO(struct folio *folio, size_t offset, size_t length),
611DECLARE_EVENT_CLASS(ext4_invalidatepage_op,
612 TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
602
613
603 TP_ARGS(folio, offset, length),
614 TP_ARGS(page, offset, length),
604
605 TP_STRUCT__entry(
606 __field( dev_t, dev )
607 __field( ino_t, ino )
608 __field( pgoff_t, index )
615
616 TP_STRUCT__entry(
617 __field( dev_t, dev )
618 __field( ino_t, ino )
619 __field( pgoff_t, index )
609 __field( size_t, offset )
610 __field( size_t, length )
620 __field( unsigned int, offset )
621 __field( unsigned int, length )
611 ),
612
613 TP_fast_assign(
622 ),
623
624 TP_fast_assign(
614 __entry->dev = folio->mapping->host->i_sb->s_dev;
615 __entry->ino = folio->mapping->host->i_ino;
616 __entry->index = folio->index;
625 __entry->dev = page->mapping->host->i_sb->s_dev;
626 __entry->ino = page->mapping->host->i_ino;
627 __entry->index = page->index;
617 __entry->offset = offset;
618 __entry->length = length;
619 ),
620
628 __entry->offset = offset;
629 __entry->length = length;
630 ),
631
621 TP_printk("dev %d,%d ino %lu folio_index %lu offset %zu length %zu",
632 TP_printk("dev %d,%d ino %lu page_index %lu offset %u length %u",
622 MAJOR(__entry->dev), MINOR(__entry->dev),
623 (unsigned long) __entry->ino,
624 (unsigned long) __entry->index,
625 __entry->offset, __entry->length)
626);
627
633 MAJOR(__entry->dev), MINOR(__entry->dev),
634 (unsigned long) __entry->ino,
635 (unsigned long) __entry->index,
636 __entry->offset, __entry->length)
637);
638
628DEFINE_EVENT(ext4_invalidate_folio_op, ext4_invalidate_folio,
629 TP_PROTO(struct folio *folio, size_t offset, size_t length),
639DEFINE_EVENT(ext4_invalidatepage_op, ext4_invalidatepage,
640 TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
630
641
631 TP_ARGS(folio, offset, length)
642 TP_ARGS(page, offset, length)
632);
633
643);
644
634DEFINE_EVENT(ext4_invalidate_folio_op, ext4_journalled_invalidate_folio,
635 TP_PROTO(struct folio *folio, size_t offset, size_t length),
645DEFINE_EVENT(ext4_invalidatepage_op, ext4_journalled_invalidatepage,
646 TP_PROTO(struct page *page, unsigned int offset, unsigned int length),
636
647
637 TP_ARGS(folio, offset, length)
648 TP_ARGS(page, offset, length)
638);
639
640TRACE_EVENT(ext4_discard_blocks,
641 TP_PROTO(struct super_block *sb, unsigned long long blk,
642 unsigned long long count),
643
644 TP_ARGS(sb, blk, count),
645

--- 2072 unchanged lines hidden (view full) ---

2718 TP_printk("fc on [%d,%d] nblks %d, reason %d, fc = %d, ineligible = %d, agg_nblks %d",
2719 MAJOR(__entry->dev), MINOR(__entry->dev),
2720 __entry->nblks, __entry->reason, __entry->num_fc,
2721 __entry->num_fc_ineligible, __entry->nblks_agg)
2722);
2723
2724#define FC_REASON_NAME_STAT(reason) \
2725 show_fc_reason(reason), \
649);
650
651TRACE_EVENT(ext4_discard_blocks,
652 TP_PROTO(struct super_block *sb, unsigned long long blk,
653 unsigned long long count),
654
655 TP_ARGS(sb, blk, count),
656

--- 2072 unchanged lines hidden (view full) ---

2729 TP_printk("fc on [%d,%d] nblks %d, reason %d, fc = %d, ineligible = %d, agg_nblks %d",
2730 MAJOR(__entry->dev), MINOR(__entry->dev),
2731 __entry->nblks, __entry->reason, __entry->num_fc,
2732 __entry->num_fc_ineligible, __entry->nblks_agg)
2733);
2734
2735#define FC_REASON_NAME_STAT(reason) \
2736 show_fc_reason(reason), \
2726 __entry->sbi->s_fc_stats.fc_ineligible_reason_count[reason]
2737 __entry->fc_ineligible_rc[reason]
2727
2728TRACE_EVENT(ext4_fc_stats,
2738
2739TRACE_EVENT(ext4_fc_stats,
2729 TP_PROTO(struct super_block *sb),
2740 TP_PROTO(struct super_block *sb),
2730
2741
2731 TP_ARGS(sb),
2742 TP_ARGS(sb),
2732
2743
2733 TP_STRUCT__entry(
2734 __field(dev_t, dev)
2735 __field(struct ext4_sb_info *, sbi)
2736 __field(int, count)
2737 ),
2744 TP_STRUCT__entry(
2745 __field(dev_t, dev)
2746 __array(unsigned int, fc_ineligible_rc, EXT4_FC_REASON_MAX)
2747 __field(unsigned long, fc_commits)
2748 __field(unsigned long, fc_ineligible_commits)
2749 __field(unsigned long, fc_numblks)
2750 ),
2738
2751
2739 TP_fast_assign(
2740 __entry->dev = sb->s_dev;
2741 __entry->sbi = EXT4_SB(sb);
2742 ),
2752 TP_fast_assign(
2753 int i;
2743
2754
2744 TP_printk("dev %d:%d fc ineligible reasons:\n"
2745 "%s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d, %s:%d; "
2746 "num_commits:%ld, ineligible: %ld, numblks: %ld",
2747 MAJOR(__entry->dev), MINOR(__entry->dev),
2748 FC_REASON_NAME_STAT(EXT4_FC_REASON_XATTR),
2749 FC_REASON_NAME_STAT(EXT4_FC_REASON_CROSS_RENAME),
2750 FC_REASON_NAME_STAT(EXT4_FC_REASON_JOURNAL_FLAG_CHANGE),
2751 FC_REASON_NAME_STAT(EXT4_FC_REASON_NOMEM),
2752 FC_REASON_NAME_STAT(EXT4_FC_REASON_SWAP_BOOT),
2753 FC_REASON_NAME_STAT(EXT4_FC_REASON_RESIZE),
2754 FC_REASON_NAME_STAT(EXT4_FC_REASON_RENAME_DIR),
2755 FC_REASON_NAME_STAT(EXT4_FC_REASON_FALLOC_RANGE),
2756 FC_REASON_NAME_STAT(EXT4_FC_REASON_INODE_JOURNAL_DATA),
2757 __entry->sbi->s_fc_stats.fc_num_commits,
2758 __entry->sbi->s_fc_stats.fc_ineligible_commits,
2759 __entry->sbi->s_fc_stats.fc_numblks)
2755 __entry->dev = sb->s_dev;
2756 for (i = 0; i < EXT4_FC_REASON_MAX; i++) {
2757 __entry->fc_ineligible_rc[i] =
2758 EXT4_SB(sb)->s_fc_stats.fc_ineligible_reason_count[i];
2759 }
2760 __entry->fc_commits = EXT4_SB(sb)->s_fc_stats.fc_num_commits;
2761 __entry->fc_ineligible_commits =
2762 EXT4_SB(sb)->s_fc_stats.fc_ineligible_commits;
2763 __entry->fc_numblks = EXT4_SB(sb)->s_fc_stats.fc_numblks;
2764 ),
2760
2765
2766 TP_printk("dev %d,%d fc ineligible reasons:\n"
2767 "%s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u, %s:%u "
2768 "num_commits:%lu, ineligible: %lu, numblks: %lu",
2769 MAJOR(__entry->dev), MINOR(__entry->dev),
2770 FC_REASON_NAME_STAT(EXT4_FC_REASON_XATTR),
2771 FC_REASON_NAME_STAT(EXT4_FC_REASON_CROSS_RENAME),
2772 FC_REASON_NAME_STAT(EXT4_FC_REASON_JOURNAL_FLAG_CHANGE),
2773 FC_REASON_NAME_STAT(EXT4_FC_REASON_NOMEM),
2774 FC_REASON_NAME_STAT(EXT4_FC_REASON_SWAP_BOOT),
2775 FC_REASON_NAME_STAT(EXT4_FC_REASON_RESIZE),
2776 FC_REASON_NAME_STAT(EXT4_FC_REASON_RENAME_DIR),
2777 FC_REASON_NAME_STAT(EXT4_FC_REASON_FALLOC_RANGE),
2778 FC_REASON_NAME_STAT(EXT4_FC_REASON_INODE_JOURNAL_DATA),
2779 __entry->fc_commits, __entry->fc_ineligible_commits,
2780 __entry->fc_numblks)
2761);
2762
2781);
2782
2763#define DEFINE_TRACE_DENTRY_EVENT(__type) \
2764 TRACE_EVENT(ext4_fc_track_##__type, \
2765 TP_PROTO(struct inode *inode, struct dentry *dentry, int ret), \
2766 \
2767 TP_ARGS(inode, dentry, ret), \
2768 \
2769 TP_STRUCT__entry( \
2770 __field(dev_t, dev) \
2771 __field(int, ino) \
2772 __field(int, error) \
2773 ), \
2774 \
2775 TP_fast_assign( \
2776 __entry->dev = inode->i_sb->s_dev; \
2777 __entry->ino = inode->i_ino; \
2778 __entry->error = ret; \
2779 ), \
2780 \
2781 TP_printk("dev %d:%d, inode %d, error %d, fc_%s", \
2782 MAJOR(__entry->dev), MINOR(__entry->dev), \
2783 __entry->ino, __entry->error, \
2784 #__type) \
2783DECLARE_EVENT_CLASS(ext4_fc_track_dentry,
2784
2785 TP_PROTO(struct inode *inode, struct dentry *dentry, int ret),
2786
2787 TP_ARGS(inode, dentry, ret),
2788
2789 TP_STRUCT__entry(
2790 __field(dev_t, dev)
2791 __field(ino_t, i_ino)
2792 __field(int, error)
2793 ),
2794
2795 TP_fast_assign(
2796 __entry->dev = inode->i_sb->s_dev;
2797 __entry->i_ino = inode->i_ino;
2798 __entry->error = ret;
2799 ),
2800
2801 TP_printk("dev %d,%d, ino %lu, error %d",
2802 MAJOR(__entry->dev), MINOR(__entry->dev),
2803 __entry->i_ino, __entry->error
2785 )
2804 )
2805);
2786
2806
2787DEFINE_TRACE_DENTRY_EVENT(create);
2788DEFINE_TRACE_DENTRY_EVENT(link);
2789DEFINE_TRACE_DENTRY_EVENT(unlink);
2807#define DEFINE_EVENT_CLASS_DENTRY(__type) \
2808DEFINE_EVENT(ext4_fc_track_dentry, ext4_fc_track_##__type, \
2809 TP_PROTO(struct inode *inode, struct dentry *dentry, int ret), \
2810 TP_ARGS(inode, dentry, ret) \
2811)
2790
2812
2813DEFINE_EVENT_CLASS_DENTRY(create);
2814DEFINE_EVENT_CLASS_DENTRY(link);
2815DEFINE_EVENT_CLASS_DENTRY(unlink);
2816
2791TRACE_EVENT(ext4_fc_track_inode,
2792 TP_PROTO(struct inode *inode, int ret),
2793
2794 TP_ARGS(inode, ret),
2795
2796 TP_STRUCT__entry(
2797 __field(dev_t, dev)
2798 __field(int, ino)

--- 33 unchanged lines hidden (view full) ---

2832 ),
2833
2834 TP_printk("dev %d:%d, inode %d, error %d, start %ld, end %ld",
2835 MAJOR(__entry->dev), MINOR(__entry->dev),
2836 __entry->ino, __entry->error, __entry->start,
2837 __entry->end)
2838 );
2839
2817TRACE_EVENT(ext4_fc_track_inode,
2818 TP_PROTO(struct inode *inode, int ret),
2819
2820 TP_ARGS(inode, ret),
2821
2822 TP_STRUCT__entry(
2823 __field(dev_t, dev)
2824 __field(int, ino)

--- 33 unchanged lines hidden (view full) ---

2858 ),
2859
2860 TP_printk("dev %d:%d, inode %d, error %d, start %ld, end %ld",
2861 MAJOR(__entry->dev), MINOR(__entry->dev),
2862 __entry->ino, __entry->error, __entry->start,
2863 __entry->end)
2864 );
2865
2866TRACE_EVENT(ext4_fc_cleanup,
2867 TP_PROTO(journal_t *journal, int full, tid_t tid),
2868
2869 TP_ARGS(journal, full, tid),
2870
2871 TP_STRUCT__entry(
2872 __field(dev_t, dev)
2873 __field(int, j_fc_off)
2874 __field(int, full)
2875 __field(tid_t, tid)
2876 ),
2877
2878 TP_fast_assign(
2879 struct super_block *sb = journal->j_private;
2880
2881 __entry->dev = sb->s_dev;
2882 __entry->j_fc_off = journal->j_fc_off;
2883 __entry->full = full;
2884 __entry->tid = tid;
2885 ),
2886
2887 TP_printk("dev %d,%d, j_fc_off %d, full %d, tid %u",
2888 MAJOR(__entry->dev), MINOR(__entry->dev),
2889 __entry->j_fc_off, __entry->full, __entry->tid)
2890 );
2891
2840TRACE_EVENT(ext4_update_sb,
2841 TP_PROTO(struct super_block *sb, ext4_fsblk_t fsblk,
2842 unsigned int flags),
2843
2844 TP_ARGS(sb, fsblk, flags),
2845
2846 TP_STRUCT__entry(
2847 __field(dev_t, dev)

--- 19 unchanged lines hidden ---
2892TRACE_EVENT(ext4_update_sb,
2893 TP_PROTO(struct super_block *sb, ext4_fsblk_t fsblk,
2894 unsigned int flags),
2895
2896 TP_ARGS(sb, fsblk, flags),
2897
2898 TP_STRUCT__entry(
2899 __field(dev_t, dev)

--- 19 unchanged lines hidden ---