Re: [PATCH] printk: Add printk_flush() to force buffered text toconsole

From: Joe Perches
Date: Mon Jun 25 2012 - 12:53:31 EST


On Mon, 2012-06-25 at 10:45 +0200, Ingo Molnar wrote:
> * Joe Perches <joe@xxxxxxxxxxx> wrote:
>
> > On Sat, 2012-06-23 at 08:13 +0200, Ingo Molnar wrote:
> > > * Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
> > >
> > > > On Thu, 21 Jun 2012 19:52:03 -0400
> > > > Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> > > >
> > > > > But with the new printk() changes, text without a newline
> > > > > gets buffered and does not print out to the console at the
> > > > > location of the printk.
> > > >
> > > > uh, how about we fix that? The old behaviour was good, the
> > > > new behaviour is noxious.
> > >
> > > Absolutely.
> > >
> > > pr_flush() really seems to be a workaround.
> >
> > I think the new behavior an overall improvement.
> > It helps avoid multiple thread interleaving.
> >
> > I suggested a fix to enable a printk buffered/non-buffered
> > mechanism with an optional printk_flush/pr_flush.
> >
> > https://lkml.org/lkml/2012/6/21/305
>
> Ugh, so you suggest a global toggle to turn buffering on/off?

<shrug>

Rather than adding a bunch of printk_flush() calls around
the possibly many sites per file that need them, I'd rather
see a code block surrounded by buffer(false)/buffer(true).

I'd actually rather see the existing partial line uses like:

printk("doing test_func: ");
printk("%s\n", test_func(foo) ? "successful", "failed");

and

printk("step 1")
bar();
printk(" - step 2");
baz();
printk("completed\n");

changed to whole lines rather than adding a bunch of
printk_flush() sites or the printk_buffering(on|off)
blocks.

Anyway, I suggested it shouldn't be merged awhile ago.

https://lkml.org/lkml/2012/5/22/439

Making systemic printk changes is a slow business.


--
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/