Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Dec 2003 16:53:37 +1100 (EST)
From:      Bruce Evans <bde@zeta.org.au>
To:        Nate Lawson <nate@root.org>
Cc:        Daniel Eischen <eischen@vigrid.com>
Subject:   Re: cvs commit: src/lib/libc_r/uthread uthread_write.c
Message-ID:  <20031218164341.J19119@gamplex.bde.org>
In-Reply-To: <20031217122003.B70894@root.org>
References:  <Pine.GSO.4.10.10312171448020.26635-100000@pcnet5.pcnet.com> <20031217122003.B70894@root.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 17 Dec 2003, Nate Lawson wrote:

> On Wed, 17 Dec 2003, Daniel Eischen wrote:
> > On Wed, 17 Dec 2003, Nate Lawson wrote:
> > > On Wed, 17 Dec 2003, Daniel Eischen wrote:
> > > > Does this fix something other than bacula?
> > >
> > > Anyone else who expected this semantics.  I have no specific examples.
> >
> > I think it probably only pertinent to writing to tape devices
> > where a 0 return means end of tape.  Otherwise you should

Do mean "writing to tape devices with a broken device driver that
returns 0 to mean end of tape".  POSIX seems to be clear enough saying
that write() returns -1 except on successful completion.  I don't
believe write() with a nonzero count is successful if it can write
nothing.

> > get -1 with an appropriate errno or just wait until all
> > the requested data has been written.
> >
> > I asked if this fixed something because I was asked if this
> > was a 5.2R candidate.
>
> Oh, I thought it mattered for people doing non-blocking writes from a
> thread also.

Non-blocking writes (if supported by whatever is behind the file descriptor)
are required to return -1 and EAGAIN if they don't succeed.  Historical
implementations returned 0, but this was fixed in the first version of
POSIX.1.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20031218164341.J19119>