On Tue 16-09-14 11:13:31, Steven Rostedt wrote:
> On Tue, 16 Sep 2014 16:42:52 +0200
> Markus Trippelsdorf <mar...@trippelsdorf.de> 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().
> 
> I prefer the "[sched_delayed]" output. It lets us know that the output
> did not come out immediately, which is important sometimes during
> debugging. Otherwise it can confuse people, as printk is suppose to be
> a blocking write.
  This is a common misconception about printk. It isn't a blocking write
for ten years or more. If there happens to be someone else printing to
console, the difference between printk() and printk_deferred() is
marginal - it used to be bigger when scheduler had its own buffer but these
days message is inserted in the kernel ring buffer immediately. That's why
I don't think the prefix is useful anymore.

> Can we instead fix the bug instead of nuking the output? That is, move
> the KERN_* prefix before the "[sched_delayed]" message? I don't think
> it would be that hard. If you want, I'll write that patch (probably
> take me 20 minutes at most), but I'm just coming back from medical
> leave so I prefer not to.
  Glad to see you back! I'm not opposed to moving the prefix but it doesn't
seem worth the effort...

                                                                Honza

> > Acked-by: Jan Kara <j...@suse.cz>
> > Signed-off-by: Markus Trippelsdorf <mar...@trippelsdorf.de>
> > 
> > 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') {
> 
-- 
Jan Kara <j...@suse.cz>
SUSE Labs, CR
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to