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: Jonathan Lassoff <jof@thejof.com> Reviewed-by: Chris Down <chris@chrisdown.name> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
Родитель
ce522ba9ef
Коммит
e60aa787f4
|
@ -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; \
|
|
||||||
\
|
|
||||||
__xfs_printk(kern_level, mp, &vaf); \
|
|
||||||
va_end(args); \
|
|
||||||
\
|
|
||||||
if (!kstrtoint(kern_level, 0, &level) && \
|
|
||||||
level <= LOGLEVEL_ERR && \
|
|
||||||
xfs_error_level >= XFS_ERRLEVEL_HIGH) \
|
|
||||||
xfs_stack_trace(); \
|
|
||||||
} \
|
|
||||||
|
|
||||||
define_xfs_printk_level(xfs_emerg, KERN_EMERG);
|
va_start(args, fmt);
|
||||||
define_xfs_printk_level(xfs_alert, KERN_ALERT);
|
vaf.fmt = fmt;
|
||||||
define_xfs_printk_level(xfs_crit, KERN_CRIT);
|
vaf.va = &args;
|
||||||
define_xfs_printk_level(xfs_err, KERN_ERR);
|
|
||||||
define_xfs_printk_level(xfs_warn, KERN_WARNING);
|
__xfs_printk(kern_level, mp, &vaf);
|
||||||
define_xfs_printk_level(xfs_notice, KERN_NOTICE);
|
|
||||||
define_xfs_printk_level(xfs_info, KERN_INFO);
|
va_end(args);
|
||||||
#ifdef DEBUG
|
|
||||||
define_xfs_printk_level(xfs_debug, KERN_DEBUG);
|
if (!kstrtoint(kern_level, 0, &level) &&
|
||||||
#endif
|
level <= LOGLEVEL_ERR &&
|
||||||
|
xfs_error_level >= XFS_ERRLEVEL_HIGH)
|
||||||
|
xfs_stack_trace();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xfs_alert_tag(
|
xfs_alert_tag(
|
||||||
|
|
|
@ -6,32 +6,33 @@
|
||||||
|
|
||||||
struct xfs_mount;
|
struct xfs_mount;
|
||||||
|
|
||||||
extern __printf(2, 3)
|
extern __printf(3, 4)
|
||||||
void xfs_emerg(const struct xfs_mount *mp, 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_alert(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
|
||||||
|
#define xfs_debug(mp, fmt, ...) \
|
||||||
|
xfs_printk_level(KERN_DEBUG, mp, fmt, ##__VA_ARGS__)
|
||||||
|
#else
|
||||||
|
#define xfs_debug(mp, fmt, ...) do {} while (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
extern __printf(3, 4)
|
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, ...);
|
||||||
extern __printf(2, 3)
|
|
||||||
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, ...);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
extern __printf(2, 3)
|
|
||||||
void xfs_debug(const struct xfs_mount *mp, const char *fmt, ...);
|
|
||||||
#else
|
|
||||||
static inline __printf(2, 3)
|
|
||||||
void xfs_debug(const struct xfs_mount *mp, const char *fmt, ...)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define xfs_printk_ratelimited(func, dev, fmt, ...) \
|
#define xfs_printk_ratelimited(func, dev, fmt, ...) \
|
||||||
do { \
|
do { \
|
||||||
|
|
Загрузка…
Ссылка в новой задаче