[lkml]   [2005]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH] 2.6.13: POSIX violation in pipes on ia64 for kernels > 2.6.10

On Thu, 13 Oct 2005, Jeff Licquia wrote:
> On architectures where PAGE_SIZE > PIPE_BUF, a read of PIPE_BUF bytes
> from a full pipe does not change the pipe's write state. This behavior
> is different from kernels 2.6.9 and earlier, and it triggers failures of
> the LSB tests.

Sounds like the tests are broken.

It also sounds like your patch is broken: allowing partial short writes is
in explicit violation of the POSIX specs, and breaks the only thing that
PIPE_BUF _really_ guarantees, namely that writes smaller than that size
must be atomic.

The _only_ guarantees wrt PIPE_BUF is literally that a write smaller than
or equal to the PIPE_BUF will always either complete fully or not at all,
and that a reader will see the write as an atomic packet (ie two writers
will never have their write buffers interleaved within such a single
"write()" system call).

How empty the pipe has to be for a write to be able to do so is outside
the spec, and any code (including LSB tests) that depends on it is broken.

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2009-11-18 23:46    [from the cache]
©2003-2014 Jasper Spaans. hosted at Digital Ocean