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.
This commit is contained in:
Brian Behlendorf 2009-10-27 15:54:45 -07:00
parent f44078fad5
commit 4bd577d069
2 changed files with 19 additions and 22 deletions

View File

@ -724,10 +724,6 @@ spl_debug_vmsg(spl_debug_limit_state_t *cdls, int subsys, int mask,
break; 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; header.ph_len = known_size + needed;
debug_buf = (char *)page_address(tage->page) + tage->used; debug_buf = (char *)page_address(tage->page) + tage->used;

View File

@ -33,10 +33,8 @@
#define DEBUG_SUBSYSTEM S_GENERIC #define DEBUG_SUBSYSTEM S_GENERIC
#ifndef NDEBUG
static char ce_prefix[CE_IGNORE][10] = { "", "NOTICE: ", "WARNING: ", "" }; static char ce_prefix[CE_IGNORE][10] = { "", "NOTICE: ", "WARNING: ", "" };
static char ce_suffix[CE_IGNORE][2] = { "", "\n", "\n", "" }; static char ce_suffix[CE_IGNORE][2] = { "", "\n", "\n", "" };
#endif
void void
vpanic(const char *fmt, va_list ap) vpanic(const char *fmt, va_list ap)
@ -48,20 +46,6 @@ vpanic(const char *fmt, va_list ap)
} /* vpanic() */ } /* vpanic() */
EXPORT_SYMBOL(vpanic); 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 void
vcmn_err(int ce, const char *fmt, va_list ap) vcmn_err(int ce, const char *fmt, va_list ap)
{ {
@ -70,9 +54,26 @@ vcmn_err(int ce, const char *fmt, va_list ap)
if (ce == CE_PANIC) if (ce == CE_PANIC)
vpanic(fmt, ap); vpanic(fmt, ap);
if (ce != CE_NOTE) { /* suppress noise in stress testing */ if (ce != CE_NOTE) {
vsnprintf(msg, MAXMSGLEN - 1, fmt, ap); 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() */ } /* vcmn_err() */
EXPORT_SYMBOL(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);