Re: [PATCH v2] printk: git rid of [sched_delayed] message for printk_deferred

From: Jan Kara
Date: Wed Sep 24 2014 - 07:26:46 EST


On Wed 24-09-14 13:11:44, Markus Trippelsdorf wrote:
> commit 458df9fd hardcodes printk_deferred() to KERN_WARNING and inserts
> the string "[sched_delayed] " before the actual message.
> However it doesn't take into account the KERN_* prefix of the message,
> that now ends up in the middle of the output:
>
> [sched_delayed] ^a4CE: hpet increased min_delta_ns to 20115 nsec
>
> Fix this by just getting rid of the "[sched_delayed] " scnprintf().
> This is a safe, because messages get inserted in the kernel ring buffer
> immediately these days. So there is no big difference between printk()
> and printk_deferred() anymore.
I'd prefer to be a bit more verbose in the last paragraph like:
Fix this by just getting rid of the "[sched_delayed] " scnprintf(). The
prefix is useless since commit 458df9fd4815 (printk: remove separate
printk_sched buffers and use printk buf instead) anyway since from that
moment printk_deferred() inserts the message into the kernel printk buffer
immediately. So if the message eventually gets printed to console, it is
printed in the correct order with other messages and there's no need for
any special prefix. And if the kernel crashes before the message makes it
to console, then prefix in the printk buffer doesn't make the situation any
better.

Honza
> Acked-by: Jan Kara <jack@xxxxxxx>
> Acked-by: Steven Rostedt <rostedt@xxxxxxxxxxx>
> Signed-off-by: Markus Trippelsdorf <markus@xxxxxxxxxxxxxxx>
>
> diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
> index 1ce770687ea8..f85994b58934 100644
> --- a/kernel/printk/printk.c
> +++ b/kernel/printk/printk.c
> @@ -1680,12 +1680,7 @@ asmlinkage int vprintk_emit(int facility, int level,
> * The printf needs to come first; we need the syslog
> * prefix which might be passed-in as a parameter.
> */
> - if (in_sched)
> - text_len = scnprintf(text, sizeof(textbuf),
> - KERN_WARNING "[sched_delayed] ");
> -
> - text_len += vscnprintf(text + text_len,
> - sizeof(textbuf) - text_len, fmt, args);
> + text_len = vscnprintf(text, sizeof(textbuf), fmt, args);
>
> /* mark and strip a trailing newline */
> if (text_len && text[text_len-1] == '\n') {
> --
> Markus
--
Jan Kara <jack@xxxxxxx>
SUSE Labs, CR
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/