aboutsummaryrefslogtreecommitdiffstats
path: root/module/spl
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2009-10-27 15:54:45 -0700
committerBrian Behlendorf <[email protected]>2009-10-27 16:13:35 -0700
commit4bd577d069985e7b79357cb9744a46b03cdf881b (patch)
treea2d530772caad2922207fc8774d0ac620ca342d3 /module/spl
parentf44078fad5a941f2489ce0bbb8ed2c521f13f26e (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.c4
-rw-r--r--module/spl/spl-err.c37
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);
+