Re: [2.6.27.24] Kernel coredump to a pipe is failing

From: Andrew Morton
Date: Wed May 27 2009 - 04:57:04 EST


On Wed, 27 May 2009 10:52:38 +0200 Andi Kleen <andi@xxxxxxxxxxxxxx> wrote:

> > Hey, don't look at me - blame Brian Kernighan or George Bush or
> > someone.
>
> Heh.
>
> What I meant is: if it makes sense to retry the kernel should do that
> on its own. It has better information about the circumstances anyways.
> And it would make sense to put all such logic into a single place
> instead of all programs.
>
> If it doesn't we shouldn't try to force that to user space. That would be similar
> to signal handling without SA_RESTART which I think nearly everyone agrees was one
> of the worst APIs in Unix ever.
>
> In most cases (e.g. out of memory) it likely doesn't make much sense to
> retry anyways.
>
> So short write always means error.
>
>
> > > And the same applies to in-kernel users really.
> >
> > We could delete a rather nice amount of tricky VFS code if we were to
> > make this assumption. But of course we daren't do that.
>
> What do you mean?

There's code all over the VFS IO paths which correctly recognises,
handles and propagates short reads and writes.

Actually, by far the most common case here is that the short read/write
will be followed by a -ENOSPC or -EFAULT or whatever, so forget I said
that ;)

> >
> > And as long as we're attempting to correctly handle partial writes all
> > over the kernel, it's a bit dopey to deliberately avoid doing this at one
> > particular codesite.
> >
> > I bet glibc handles partial writes...
>
> I just spent some time nagivating through the glibc stdio me^wmaze
> and I don't see any retry loops.

Perhaps it's usually propagated back, dunno.

> Also even if it did there would be lots of other users
> (google codesearch has >23 million hits for "write")
>
> > > a lot of things start failing.
> >
> > The kernel should only fail if it has no other option.
>
> Typically short write means no other option.

typically != always. It would certainly be peculiar behaviour and
perhaps it was specified that way mainly on behalf of UART drivers and
such, dunno.

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