* [f2fs-dev] [PATCH v3] f2fs: Add trace_f2fs_fault_report
@ 2026-05-06 9:57 liujinbao1
2026-05-09 8:54 ` Chao Yu via Linux-f2fs-devel
2026-05-11 1:50 ` patchwork-bot+f2fs--- via Linux-f2fs-devel
0 siblings, 2 replies; 3+ messages in thread
From: liujinbao1 @ 2026-05-06 9:57 UTC (permalink / raw)
To: jaegeuk; +Cc: jinbaoliu365, shengyong1, liujinbao1, linux-f2fs-devel
From: liujinbao1 <liujinbao1@xiaomi.com>
Add trace_f2fs_fault_report to trigger reporting upon f2fs_bug_on,
need_fsck, stop_checkpoint, and handle_eio. Since f2fs_bug_on and
need_fsck can be triggered in hundreds of scenarios, define set_sbi_flag
as a macro to help capture the effective fault function and line number.
Signed-off-by: shengyong1 <shengyong1@xiaomi.com>
Signed-off-by: liujinbao1 <liujinbao1@xiaomi.com>
---
v3:
- Fix __assign_str() to use single-argument form
v2:
- Remove REPORT_FAULT_PAGE_EIO from f2fs_handle_page_eio
---
fs/f2fs/f2fs.h | 18 +++++++++++++++++-
fs/f2fs/super.c | 9 +++++++++
include/trace/events/f2fs.h | 28 ++++++++++++++++++++++++++++
3 files changed, 54 insertions(+), 1 deletion(-)
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 02bc6eb96a59..4fb3ad73bd2c 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -98,6 +98,15 @@ extern const char *f2fs_fault_name[FAULT_MAX];
#define DEFAULT_FAILURE_RETRY_COUNT 1
#endif
+enum {
+ REPORT_FAULT_NEED_FSCK,
+ REPORT_FAULT_STOP_CP,
+ REPORT_FAULT_MAX,
+};
+
+void f2fs_fault_report(struct super_block *sb, unsigned int err_code,
+ const char *func, unsigned int data);
+
/*
* For mount options
*/
@@ -2282,11 +2291,18 @@ static inline bool is_sbi_flag_set(struct f2fs_sb_info *sbi, unsigned int type)
return test_bit(type, &sbi->s_flag);
}
-static inline void set_sbi_flag(struct f2fs_sb_info *sbi, unsigned int type)
+static inline void __set_sbi_flag(struct f2fs_sb_info *sbi, unsigned int type)
{
set_bit(type, &sbi->s_flag);
}
+#define set_sbi_flag(sbi, type) \
+do { \
+ __set_sbi_flag(sbi, type); \
+ if ((type) == SBI_NEED_FSCK) \
+ f2fs_fault_report(sbi->sb, REPORT_FAULT_NEED_FSCK, __func__, __LINE__); \
+} while (0)
+
static inline void clear_sbi_flag(struct f2fs_sb_info *sbi, unsigned int type)
{
clear_bit(type, &sbi->s_flag);
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index 11d1e0c99ac1..251f914b3b62 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -4731,9 +4731,18 @@ static void f2fs_handle_critical_error(struct f2fs_sb_info *sbi,
*/
}
+void f2fs_fault_report(struct super_block *sb, unsigned int err_code,
+ const char *func, unsigned int data)
+{
+ trace_f2fs_fault_report(sb, err_code, func, data);
+}
+
void f2fs_stop_checkpoint(struct f2fs_sb_info *sbi, bool end_io,
unsigned char reason)
{
+ if (reason != STOP_CP_REASON_SHUTDOWN)
+ f2fs_fault_report(sbi->sb, REPORT_FAULT_STOP_CP, __func__, reason);
+
f2fs_build_fault_attr(sbi, 0, 0, FAULT_ALL);
if (!end_io)
f2fs_flush_merged_writes(sbi);
diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h
index 49c6cbb6f989..563d742e0646 100644
--- a/include/trace/events/f2fs.h
+++ b/include/trace/events/f2fs.h
@@ -2595,6 +2595,34 @@ DEFINE_EVENT(f2fs_priority_update, f2fs_priority_restore,
TP_ARGS(sbi, lock_name, is_write, p, orig_prio, new_prio)
);
+TRACE_EVENT(f2fs_fault_report,
+
+ TP_PROTO(struct super_block *sb, unsigned int err_code,
+ const char *func, unsigned int data),
+
+ TP_ARGS(sb, err_code, func, data),
+
+ TP_STRUCT__entry(
+ __field(dev_t, dev)
+ __field(unsigned int, err_code)
+ __string(func, func)
+ __field(unsigned int, data)
+ ),
+
+ TP_fast_assign(
+ __entry->dev = sb->s_dev;
+ __entry->err_code = err_code;
+ __assign_str(func);
+ __entry->data = data;
+ ),
+
+ TP_printk("dev = (%d,%d), err_code = %u, func = %s, data = %u",
+ show_dev(__entry->dev),
+ __entry->err_code,
+ __get_str(func),
+ __entry->data)
+);
+
#endif /* _TRACE_F2FS_H */
/* This part must be outside protection */
--
2.43.0
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [f2fs-dev] [PATCH v3] f2fs: Add trace_f2fs_fault_report
2026-05-06 9:57 [f2fs-dev] [PATCH v3] f2fs: Add trace_f2fs_fault_report liujinbao1
@ 2026-05-09 8:54 ` Chao Yu via Linux-f2fs-devel
2026-05-11 1:50 ` patchwork-bot+f2fs--- via Linux-f2fs-devel
1 sibling, 0 replies; 3+ messages in thread
From: Chao Yu via Linux-f2fs-devel @ 2026-05-09 8:54 UTC (permalink / raw)
To: liujinbao1, jaegeuk; +Cc: shengyong1, liujinbao1, linux-f2fs-devel
On 5/6/26 17:57, liujinbao1 wrote:
> From: liujinbao1 <liujinbao1@xiaomi.com>
>
> Add trace_f2fs_fault_report to trigger reporting upon f2fs_bug_on,
> need_fsck, stop_checkpoint, and handle_eio. Since f2fs_bug_on and
> need_fsck can be triggered in hundreds of scenarios, define set_sbi_flag
> as a macro to help capture the effective fault function and line number.
>
> Signed-off-by: shengyong1 <shengyong1@xiaomi.com>
> Signed-off-by: liujinbao1 <liujinbao1@xiaomi.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Thanks,
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [f2fs-dev] [PATCH v3] f2fs: Add trace_f2fs_fault_report
2026-05-06 9:57 [f2fs-dev] [PATCH v3] f2fs: Add trace_f2fs_fault_report liujinbao1
2026-05-09 8:54 ` Chao Yu via Linux-f2fs-devel
@ 2026-05-11 1:50 ` patchwork-bot+f2fs--- via Linux-f2fs-devel
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+f2fs--- via Linux-f2fs-devel @ 2026-05-11 1:50 UTC (permalink / raw)
To: liujinbao1; +Cc: jaegeuk, shengyong1, liujinbao1, linux-f2fs-devel
Hello:
This patch was applied to jaegeuk/f2fs.git (dev)
by Jaegeuk Kim <jaegeuk@kernel.org>:
On Wed, 6 May 2026 17:57:31 +0800 you wrote:
> From: liujinbao1 <liujinbao1@xiaomi.com>
>
> Add trace_f2fs_fault_report to trigger reporting upon f2fs_bug_on,
> need_fsck, stop_checkpoint, and handle_eio. Since f2fs_bug_on and
> need_fsck can be triggered in hundreds of scenarios, define set_sbi_flag
> as a macro to help capture the effective fault function and line number.
>
> [...]
Here is the summary with links:
- [f2fs-dev,v3] f2fs: Add trace_f2fs_fault_report
https://git.kernel.org/jaegeuk/f2fs/c/99c73d70fcdf
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-05-11 1:51 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-06 9:57 [f2fs-dev] [PATCH v3] f2fs: Add trace_f2fs_fault_report liujinbao1
2026-05-09 8:54 ` Chao Yu via Linux-f2fs-devel
2026-05-11 1:50 ` patchwork-bot+f2fs--- via Linux-f2fs-devel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox