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

Linus Torvalds
2012-06-26T00:01:33Z

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.

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.

Linus