Skip to content

Commit 7af1974

Browse files
riteshharjanitytso
authored andcommitted
ext4: fix ext4_fc_stats trace point
ftrace's __print_symbolic() requires that any enum values used in the symbol to string translation table be wrapped in a TRACE_DEFINE_ENUM so that the enum value can be decoded from the ftrace ring buffer by user space tooling. This patch also fixes few other problems found in this trace point. e.g. dereferencing structures in TP_printk which should not be done at any cost. Also to avoid checkpatch warnings, this patch removes those whitespaces/tab stops issues. Cc: [email protected] Fixes: aa75f4d ("ext4: main fast-commit commit path") Reported-by: Steven Rostedt <[email protected]> Signed-off-by: Ritesh Harjani <[email protected]> Reviewed-by: Jan Kara <[email protected]> Reviewed-by: Steven Rostedt (Google) <[email protected]> Reviewed-by: Harshad Shirwadkar <[email protected]> Link: https://lore.kernel.org/r/b4b9691414c35c62e570b723e661c80674169f9a.1647057583.git.riteshh@linux.ibm.com Signed-off-by: Theodore Ts'o <[email protected]>
1 parent c864ccd commit 7af1974

File tree

1 file changed

+49
-29
lines changed

1 file changed

+49
-29
lines changed

include/trace/events/ext4.h

Lines changed: 49 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,17 @@ TRACE_DEFINE_ENUM(ES_REFERENCED_B);
9595
{ FALLOC_FL_COLLAPSE_RANGE, "COLLAPSE_RANGE"}, \
9696
{ FALLOC_FL_ZERO_RANGE, "ZERO_RANGE"})
9797

98+
TRACE_DEFINE_ENUM(EXT4_FC_REASON_XATTR);
99+
TRACE_DEFINE_ENUM(EXT4_FC_REASON_CROSS_RENAME);
100+
TRACE_DEFINE_ENUM(EXT4_FC_REASON_JOURNAL_FLAG_CHANGE);
101+
TRACE_DEFINE_ENUM(EXT4_FC_REASON_NOMEM);
102+
TRACE_DEFINE_ENUM(EXT4_FC_REASON_SWAP_BOOT);
103+
TRACE_DEFINE_ENUM(EXT4_FC_REASON_RESIZE);
104+
TRACE_DEFINE_ENUM(EXT4_FC_REASON_RENAME_DIR);
105+
TRACE_DEFINE_ENUM(EXT4_FC_REASON_FALLOC_RANGE);
106+
TRACE_DEFINE_ENUM(EXT4_FC_REASON_INODE_JOURNAL_DATA);
107+
TRACE_DEFINE_ENUM(EXT4_FC_REASON_MAX);
108+
98109
#define show_fc_reason(reason) \
99110
__print_symbolic(reason, \
100111
{ EXT4_FC_REASON_XATTR, "XATTR"}, \
@@ -2723,41 +2734,50 @@ TRACE_EVENT(ext4_fc_commit_stop,
27232734

27242735
#define FC_REASON_NAME_STAT(reason) \
27252736
show_fc_reason(reason), \
2726-
__entry->sbi->s_fc_stats.fc_ineligible_reason_count[reason]
2737+
__entry->fc_ineligible_rc[reason]
27272738

27282739
TRACE_EVENT(ext4_fc_stats,
2729-
TP_PROTO(struct super_block *sb),
2730-
2731-
TP_ARGS(sb),
2740+
TP_PROTO(struct super_block *sb),
27322741

2733-
TP_STRUCT__entry(
2734-
__field(dev_t, dev)
2735-
__field(struct ext4_sb_info *, sbi)
2736-
__field(int, count)
2737-
),
2742+
TP_ARGS(sb),
27382743

2739-
TP_fast_assign(
2740-
__entry->dev = sb->s_dev;
2741-
__entry->sbi = EXT4_SB(sb);
2742-
),
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+
),
27432751

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)
2752+
TP_fast_assign(
2753+
int i;
27602754

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+
),
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)
27612781
);
27622782

27632783
#define DEFINE_TRACE_DENTRY_EVENT(__type) \

0 commit comments

Comments
 (0)