diff options
author | Brian Behlendorf <[email protected]> | 2009-10-27 15:54:45 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2009-10-27 16:13:35 -0700 |
commit | 4bd577d069985e7b79357cb9744a46b03cdf881b (patch) | |
tree | a2d530772caad2922207fc8774d0ac620ca342d3 /module/spl | |
parent | f44078fad5a941f2489ce0bbb8ed2c521f13f26e (diff) |
Rebase cmn_err on vcmn_err and don't warn about missing \n
The cmn_err/vcmn_err functions are layered on top of the debug
system which usually expects a newline at the end. However, there
really doesn't need to be a newline there and there in fact should
not be for the CE_CONT case so let's just drop the warning.
Also we make a half-hearted attempt to handle a leading ! which
means only send it to the syslog not the console. In this case
we just send to the the debug logs and not the console.
Diffstat (limited to 'module/spl')
-rw-r--r-- | module/spl/spl-debug.c | 4 | ||||
-rw-r--r-- | module/spl/spl-err.c | 37 |
2 files changed, 19 insertions, 22 deletions
diff --git a/module/spl/spl-debug.c b/module/spl/spl-debug.c index 6d71f4b82..a3fcd74e0 100644 --- a/module/spl/spl-debug.c +++ b/module/spl/spl-debug.c @@ -724,10 +724,6 @@ spl_debug_vmsg(spl_debug_limit_state_t *cdls, int subsys, int mask, break; } - if (unlikely(*(string_buf + needed - 1) != '\n')) - printk(KERN_INFO "format at %s:%d:%s doesn't end in newline\n", - file, line, fn); - header.ph_len = known_size + needed; debug_buf = (char *)page_address(tage->page) + tage->used; diff --git a/module/spl/spl-err.c b/module/spl/spl-err.c index c4508dfa2..8f46aae5b 100644 --- a/module/spl/spl-err.c +++ b/module/spl/spl-err.c @@ -33,10 +33,8 @@ #define DEBUG_SUBSYSTEM S_GENERIC -#ifndef NDEBUG static char ce_prefix[CE_IGNORE][10] = { "", "NOTICE: ", "WARNING: ", "" }; static char ce_suffix[CE_IGNORE][2] = { "", "\n", "\n", "" }; -#endif void vpanic(const char *fmt, va_list ap) @@ -49,20 +47,6 @@ vpanic(const char *fmt, va_list ap) EXPORT_SYMBOL(vpanic); void -cmn_err(int ce, const char *fmt, ...) -{ - char msg[MAXMSGLEN]; - va_list ap; - - va_start(ap, fmt); - vsnprintf(msg, MAXMSGLEN - 1, fmt, ap); - va_end(ap); - - CERROR("%s", msg); -} /* cmn_err() */ -EXPORT_SYMBOL(cmn_err); - -void vcmn_err(int ce, const char *fmt, va_list ap) { char msg[MAXMSGLEN]; @@ -70,9 +54,26 @@ vcmn_err(int ce, const char *fmt, va_list ap) if (ce == CE_PANIC) vpanic(fmt, ap); - if (ce != CE_NOTE) { /* suppress noise in stress testing */ + if (ce != CE_NOTE) { vsnprintf(msg, MAXMSGLEN - 1, fmt, ap); - CERROR("%s%s%s", ce_prefix[ce], msg, ce_suffix[ce]); + + if (fmt[0] == '!') + CDEBUG(D_INFO, "%s%s%s", + ce_prefix[ce], msg, ce_suffix[ce]); + else + CERROR("%s%s%s", ce_prefix[ce], msg, ce_suffix[ce]); } } /* vcmn_err() */ EXPORT_SYMBOL(vcmn_err); + +void +cmn_err(int ce, const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + vcmn_err(ce, fmt, ap); + va_end(ap); +} /* cmn_err() */ +EXPORT_SYMBOL(cmn_err); + |