summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Lassoff <jof@thejof.com>2022-04-11 13:06:39 +1000
committerDave Chinner <david@fromorbit.com>2022-04-11 13:06:39 +1000
commite270356944ccba0a9c23b4d0751d2e029184ad21 (patch)
tree545138563e61a0c51677a2a0d5f17306bf2b8db5
parente60aa787f43f1e469632b8719e3e3ab1d9e7b720 (diff)
downloadlinux-e270356944ccba0a9c23b4d0751d2e029184ad21.tar.bz2
xfs: Add XFS messages to printk index
In order for end users to quickly react to new issues that come up in production, it is proving useful to leverage the printk indexing system. This printk index enables kernel developers to use calls to printk() with changeable format strings (as they always have; no change of expectations), while enabling end users to examine format strings to detect changes. Since end users are using regular expressions to match messages printed through printk(), being able to detect changes in chosen format strings from release to release provides a useful signal to review printk()-matching regular expressions for any necessary updates. So that detailed XFS messages are captures by this printk index, this patch wraps the xfs_<level> and xfs_alert_tag functions. Signed-off-by: Jonathan Lassoff <jof@thejof.com> Reviewed-by: Chris Down <chris@chrisdown.name> Reviewed-by: Petr Mladek <pmladek@suse.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
-rw-r--r--fs/xfs/xfs_message.c2
-rw-r--r--fs/xfs/xfs_message.h29
2 files changed, 21 insertions, 10 deletions
diff --git a/fs/xfs/xfs_message.c b/fs/xfs/xfs_message.c
index 9ceebd4c9ff1..22c2adff1260 100644
--- a/fs/xfs/xfs_message.c
+++ b/fs/xfs/xfs_message.c
@@ -52,7 +52,7 @@ xfs_printk_level(
}
void
-xfs_alert_tag(
+_xfs_alert_tag(
const struct xfs_mount *mp,
int panic_tag,
const char *fmt, ...)
diff --git a/fs/xfs/xfs_message.h b/fs/xfs/xfs_message.h
index a281b1cc13d5..035ee3d244ac 100644
--- a/fs/xfs/xfs_message.h
+++ b/fs/xfs/xfs_message.h
@@ -10,29 +10,40 @@ extern __printf(3, 4)
void xfs_printk_level(const char *kern_level, const struct xfs_mount *mp,
const char *fmt, ...);
+#define xfs_printk_index_wrap(kern_level, mp, fmt, ...) \
+({ \
+ printk_index_subsys_emit("%sXFS%s: ", kern_level, fmt); \
+ xfs_printk_level(kern_level, mp, fmt, ##__VA_ARGS__); \
+})
#define xfs_emerg(mp, fmt, ...) \
- xfs_printk_level(KERN_EMERG, mp, fmt, ##__VA_ARGS__)
+ xfs_printk_index_wrap(KERN_EMERG, mp, fmt, ##__VA_ARGS__)
#define xfs_alert(mp, fmt, ...) \
- xfs_printk_level(KERN_ALERT, mp, fmt, ##__VA_ARGS__)
+ xfs_printk_index_wrap(KERN_ALERT, mp, fmt, ##__VA_ARGS__)
#define xfs_crit(mp, fmt, ...) \
- xfs_printk_level(KERN_CRIT, mp, fmt, ##__VA_ARGS__)
+ xfs_printk_index_wrap(KERN_CRIT, mp, fmt, ##__VA_ARGS__)
#define xfs_err(mp, fmt, ...) \
- xfs_printk_level(KERN_ERR, mp, fmt, ##__VA_ARGS__)
+ xfs_printk_index_wrap(KERN_ERR, mp, fmt, ##__VA_ARGS__)
#define xfs_warn(mp, fmt, ...) \
- xfs_printk_level(KERN_WARNING, mp, fmt, ##__VA_ARGS__)
+ xfs_printk_index_wrap(KERN_WARNING, mp, fmt, ##__VA_ARGS__)
#define xfs_notice(mp, fmt, ...) \
- xfs_printk_level(KERN_NOTICE, mp, fmt, ##__VA_ARGS__)
+ xfs_printk_index_wrap(KERN_NOTICE, mp, fmt, ##__VA_ARGS__)
#define xfs_info(mp, fmt, ...) \
- xfs_printk_level(KERN_INFO, mp, fmt, ##__VA_ARGS__)
+ xfs_printk_index_wrap(KERN_INFO, mp, fmt, ##__VA_ARGS__)
#ifdef DEBUG
#define xfs_debug(mp, fmt, ...) \
- xfs_printk_level(KERN_DEBUG, mp, fmt, ##__VA_ARGS__)
+ xfs_printk_index_wrap(KERN_DEBUG, mp, fmt, ##__VA_ARGS__)
#else
#define xfs_debug(mp, fmt, ...) do {} while (0)
#endif
+#define xfs_alert_tag(mp, tag, fmt, ...) \
+({ \
+ printk_index_subsys_emit("%sXFS%s: ", KERN_ALERT, fmt); \
+ _xfs_alert_tag(mp, tag, fmt, ##__VA_ARGS__); \
+})
+
extern __printf(3, 4)
-void xfs_alert_tag(const struct xfs_mount *mp, int tag, const char *fmt, ...);
+void _xfs_alert_tag(const struct xfs_mount *mp, int tag, const char *fmt, ...);
#define xfs_printk_ratelimited(func, dev, fmt, ...) \
do { \