Subject: Re: kern/13774
To: None <netbsd-bugs@netbsd.org>
From: Geoff Wing <gcw@primenet.com.au>
List: netbsd-bugs
Date: 08/24/2001 10:36:45
jdolecek@netbsd.org wrote (onto the bug report):
:Arguably, this is application error - after nearer look, it shows
:up tail requires all writes to fully succeed and doesn't cope with
:short writes.

From my interpretation of our man page, I don't think write(2)
can return *successful* short writes for blocking I/O.

Looking at other non 4.4BSD-based OSs, Solaris7 man page says - special
cased for pipes and named pipes - with blocking I/O a write(.., .., nbyte)
"request may cause the process to block, but on normal completion
it returns nbyte"
Irix6.5 has basically the same page but says "thread" instead of "process"
The Linux man page I saw pretty much said nothing.

They also tend to say:
"Write requests of {PIPE_BUF} bytes or less are guaranteed not to be
 interleaved with data from other processes doing writes on the same pipe.
 Writes of greater than {PIPE_BUF}  bytes may have data interleaved, on
 arbitrary boundaries, with writes by other processes, whether or not
 the O_NONBLOCK  or O_NDELAY  flags are set"

Regards,
Geoff