Commit e60aa787 authored by Jonathan Lassoff's avatar Jonathan Lassoff Committed by Dave Chinner

xfs: Simplify XFS logging methods.

Rather than have a constructor to define many nearly-identical
functions, use preprocessor macros to pass down a kernel logging level
to a common function.
Signed-off-by: default avatarJonathan Lassoff <jof@thejof.com>
Reviewed-by: default avatarChris Down <chris@chrisdown.name>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
parent ce522ba9
...@@ -27,37 +27,29 @@ __xfs_printk( ...@@ -27,37 +27,29 @@ __xfs_printk(
printk("%sXFS: %pV\n", level, vaf); printk("%sXFS: %pV\n", level, vaf);
} }
#define define_xfs_printk_level(func, kern_level) \ void
void func(const struct xfs_mount *mp, const char *fmt, ...) \ xfs_printk_level(
{ \ const char *kern_level,
struct va_format vaf; \ const struct xfs_mount *mp,
va_list args; \ const char *fmt, ...)
int level; \ {
\ struct va_format vaf;
va_start(args, fmt); \ va_list args;
\ int level;
vaf.fmt = fmt; \
vaf.va = &args; \ va_start(args, fmt);
\ vaf.fmt = fmt;
__xfs_printk(kern_level, mp, &vaf); \ vaf.va = &args;
va_end(args); \
\ __xfs_printk(kern_level, mp, &vaf);
if (!kstrtoint(kern_level, 0, &level) && \
level <= LOGLEVEL_ERR && \ va_end(args);
xfs_error_level >= XFS_ERRLEVEL_HIGH) \
xfs_stack_trace(); \ if (!kstrtoint(kern_level, 0, &level) &&
} \ level <= LOGLEVEL_ERR &&
xfs_error_level >= XFS_ERRLEVEL_HIGH)
define_xfs_printk_level(xfs_emerg, KERN_EMERG); xfs_stack_trace();
define_xfs_printk_level(xfs_alert, KERN_ALERT); }
define_xfs_printk_level(xfs_crit, KERN_CRIT);
define_xfs_printk_level(xfs_err, KERN_ERR);
define_xfs_printk_level(xfs_warn, KERN_WARNING);
define_xfs_printk_level(xfs_notice, KERN_NOTICE);
define_xfs_printk_level(xfs_info, KERN_INFO);
#ifdef DEBUG
define_xfs_printk_level(xfs_debug, KERN_DEBUG);
#endif
void void
xfs_alert_tag( xfs_alert_tag(
......
...@@ -6,33 +6,34 @@ ...@@ -6,33 +6,34 @@
struct xfs_mount; struct xfs_mount;
extern __printf(2, 3)
void xfs_emerg(const struct xfs_mount *mp, const char *fmt, ...);
extern __printf(2, 3)
void xfs_alert(const struct xfs_mount *mp, const char *fmt, ...);
extern __printf(3, 4) extern __printf(3, 4)
void xfs_alert_tag(const struct xfs_mount *mp, int tag, const char *fmt, ...); void xfs_printk_level(const char *kern_level, const struct xfs_mount *mp,
extern __printf(2, 3) const char *fmt, ...);
void xfs_crit(const struct xfs_mount *mp, const char *fmt, ...);
extern __printf(2, 3)
void xfs_err(const struct xfs_mount *mp, const char *fmt, ...);
extern __printf(2, 3)
void xfs_warn(const struct xfs_mount *mp, const char *fmt, ...);
extern __printf(2, 3)
void xfs_notice(const struct xfs_mount *mp, const char *fmt, ...);
extern __printf(2, 3)
void xfs_info(const struct xfs_mount *mp, const char *fmt, ...);
#define xfs_emerg(mp, fmt, ...) \
xfs_printk_level(KERN_EMERG, mp, fmt, ##__VA_ARGS__)
#define xfs_alert(mp, fmt, ...) \
xfs_printk_level(KERN_ALERT, mp, fmt, ##__VA_ARGS__)
#define xfs_crit(mp, fmt, ...) \
xfs_printk_level(KERN_CRIT, mp, fmt, ##__VA_ARGS__)
#define xfs_err(mp, fmt, ...) \
xfs_printk_level(KERN_ERR, mp, fmt, ##__VA_ARGS__)
#define xfs_warn(mp, fmt, ...) \
xfs_printk_level(KERN_WARNING, mp, fmt, ##__VA_ARGS__)
#define xfs_notice(mp, fmt, ...) \
xfs_printk_level(KERN_NOTICE, mp, fmt, ##__VA_ARGS__)
#define xfs_info(mp, fmt, ...) \
xfs_printk_level(KERN_INFO, mp, fmt, ##__VA_ARGS__)
#ifdef DEBUG #ifdef DEBUG
extern __printf(2, 3) #define xfs_debug(mp, fmt, ...) \
void xfs_debug(const struct xfs_mount *mp, const char *fmt, ...); xfs_printk_level(KERN_DEBUG, mp, fmt, ##__VA_ARGS__)
#else #else
static inline __printf(2, 3) #define xfs_debug(mp, fmt, ...) do {} while (0)
void xfs_debug(const struct xfs_mount *mp, const char *fmt, ...)
{
}
#endif #endif
extern __printf(3, 4)
void xfs_alert_tag(const struct xfs_mount *mp, int tag, const char *fmt, ...);
#define xfs_printk_ratelimited(func, dev, fmt, ...) \ #define xfs_printk_ratelimited(func, dev, fmt, ...) \
do { \ do { \
static DEFINE_RATELIMIT_STATE(_rs, \ static DEFINE_RATELIMIT_STATE(_rs, \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment