Date: 10 Sep 2003 09:19:43 +0200 From: Kern Sibbald <kern@sibbald.com> To: Garrett Wollman <wollman@khavrinen.lcs.mit.edu> Cc: Nate Lawson <nate@root.org> Subject: Re: comments on proposed uthread_write.c changes Message-ID: <1063178382.15482.550.camel@rufus> In-Reply-To: <200309100034.h8A0YTdY066678@khavrinen.lcs.mit.edu> References: <3F5B89B3.11367.112C1E2D@localhost> <Pine.GSO.4.10.10309091929500.13114-100000@pcnet5.pcnet.com> <200309100034.h8A0YTdY066678@khavrinen.lcs.mit.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
--=-dQwOkbSDWJuqMz0oqlSu Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hello, On Wed, 2003-09-10 at 02:34, Garrett Wollman wrote: > <<On Tue, 9 Sep 2003 19:46:12 -0400 (EDT), Daniel Eischen <eischen@vigrid= .com> said: >=20 > > Libc_r's write treats a return of 0 from __sys_write() as a > > partial write and continues looping. >=20 > This is a bug. The Standard is quite clear that a write of zero bytes > is not possible unless the supplied buffer length is zero. In the > specific case of non-blocking files, if data might be written but > doing so would cause the calling thread to block, write() must return > -1 with errno set to [EAGAIN]; it may not return zero. Therefore, a > zero return from write() always indicates a permanent condition. >=20 > -GAWollman Can you explain how you came to the conclusion that a non-zero write may not return zero? Keep in mind that from the user's or my standpoint, we are talking about blocking writes. In reading the standard, the paragraph cited below permits a zero to be returned.=20 If a write() requests that more bytes be written than there is room for (for example, [XSI] [Option Start] the process' file size limit =20 or [Option End] the physical end of a medium), only as many bytes as there is room for shall be written. Best regards, --=-dQwOkbSDWJuqMz0oqlSu Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQA/XtCONgfoSvWqwEgRApwFAJ94WujQGeGZzrHVrW/qCZt7P8wIUwCgtzsF SNJ4mzYtOq/Jzhvrq+JK7F8= =Y3zY -----END PGP SIGNATURE----- --=-dQwOkbSDWJuqMz0oqlSu--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1063178382.15482.550.camel>