Re: [PATCH v3] printk: Have printk() never buffer its data

Greg Kroah-Hartman
2012-06-26T00:23:14Z

On Mon, Jun 25, 2012 at 05:01:11PM -0700, Linus Torvalds wrote:
> On Mon, Jun 25, 2012 at 4:55 PM, Greg Kroah-Hartman
> <gregkh@linuxfoundation.org> wrote:
> >
> > Stephen and Ingo, I understand that your tests now would require
> > multiple printk() lines, but this affects what, 10 boxes in the world
> > that run these tests (I'm not trying to be mean, just understand the
> > issues).  The fixes that now are in place fix problems for many more
> > systems, and provide the infrastructure for proper logging that people
> > have been screaming at us for over 10 years to accomplish.
>
> I disagree violently.
>
> I think we absolutely should apply Steven's patch.
>
> Why? Because the buffering does not help *anything*, and it's
> surprising, and it breaks one of our main debugging tools. There's no
> upside to it.

Ok, but I thought you wanted the "properly handle continuations" that we
now have in the kernel. I must be mistaken.

> The fact that we found *one* case where it broke within days of it
> being introduced is not the issue. Fixing that one case is irrelevant.
> It's the unknown number of other cases that did similar thngs that
> matter.
>
> If there are other places that print out partial lines, they may have
> this problem too. Don't buffer.
>
> And if there are *not* other places that print out partial lines, then
> buffering doesn't help. Don't buffer.
>
> Notice? Buffering partial lines is never *ever* the right thing to do
> for something like printk.
>
> If you want to merge the partial lines, do it at the *logging* stage,
> not at the printout stage. Nobody cares if you buffer the stuff that
> actually makes it to "dmesg". But buffering the stuff before it makes
> it to the screen is just wrong.

Ok, Kay, does Stephen's patch work for you as well? I'll go boot a box
with it and look at the output, but that will take 30 minutes or so...

greg k-h