Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Oct 2022 09:58:36 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Hans Petter Selasky <hps@selasky.org>
Cc:        Benedict Reuschling <bcr@freebsd.org>, src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org
Subject:   Re: git: 1c2be25f6080 - main - Add extra EINVAL information about wrong block size to read(2)/write(2)
Message-ID:  <Y0EfnJ8kCPuhSmy/@kib.kiev.ua>
In-Reply-To: <63603095-a092-6a6c-c78c-8dfb242514a1@selasky.org>
References:  <202210071139.297Bd4pq062191@gitrepo.freebsd.org> <Y0DIwxqiaS5PnwJK@kib.kiev.ua> <63603095-a092-6a6c-c78c-8dfb242514a1@selasky.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Oct 08, 2022 at 08:52:26AM +0200, Hans Petter Selasky wrote:
> On 10/8/22 02:48, Konstantin Belousov wrote:
> > On Fri, Oct 07, 2022 at 11:39:04AM +0000, Benedict Reuschling wrote:
> > > The branch main has been updated by bcr (doc committer):
> > > 
> > > URL: https://cgit.FreeBSD.org/src/commit/?id=1c2be25f6080ee63baeae55e45761e1310d1b756
> > > 
> > > commit 1c2be25f6080ee63baeae55e45761e1310d1b756
> > > Author:     Benedict Reuschling <bcr@FreeBSD.org>
> > > AuthorDate: 2022-10-07 11:32:37 +0000
> > > Commit:     Benedict Reuschling <bcr@FreeBSD.org>
> > > CommitDate: 2022-10-07 11:32:37 +0000
> > > 
> > >      Add extra EINVAL information about wrong block size to read(2)/write(2)
> > >      The read system call will return EINVAL if the current file offset is
> > >      not a multiple of the block size. This also applies to write(2). Add an
> > >      entry for EINVAL about this error to both man pages.
> > >      PR:                     91149
> > >      Event:                  Aberdeen Hackathon 2022
> > >      Differential Revision:  https://reviews.freebsd.org/D24617
> > > ---
> > >   lib/libc/sys/read.2  | 4 +++-
> > >   lib/libc/sys/write.2 | 4 +++-
> > >   2 files changed, 6 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/lib/libc/sys/read.2 b/lib/libc/sys/read.2
> > > index 8b58debd3fbb..28d085562af3 100644
> > > --- a/lib/libc/sys/read.2
> > > +++ b/lib/libc/sys/read.2
> > > @@ -28,7 +28,7 @@
> > >   .\"     @(#)read.2	8.4 (Berkeley) 2/26/94
> > >   .\" $FreeBSD$
> > >   .\"
> > > -.Dd June 4, 2020
> > > +.Dd October 7, 2022
> > >   .Dt READ 2
> > >   .Os
> > >   .Sh NAME
> > > @@ -250,6 +250,8 @@ The sum of the
> > >   values in the
> > >   .Fa iov
> > >   array overflowed a 32-bit integer.
> > > +.It Bq Er EINVAL
> > > +The current file offset is not a multiple of the block size.
> > >   .It Bq Er EFAULT
> > >   Part of the
> > >   .Fa iov
> > > diff --git a/lib/libc/sys/write.2 b/lib/libc/sys/write.2
> > > index 937e95b53a14..048338ed4dee 100644
> > > --- a/lib/libc/sys/write.2
> > > +++ b/lib/libc/sys/write.2
> > > @@ -28,7 +28,7 @@
> > >   .\"     @(#)write.2	8.5 (Berkeley) 4/2/94
> > >   .\" $FreeBSD$
> > >   .\"
> > > -.Dd February 11, 2021
> > > +.Dd October 7, 2022
> > >   .Dt WRITE 2
> > >   .Os
> > >   .Sh NAME
> > > @@ -205,6 +205,8 @@ is greater than
> > >   if the sysctl
> > >   .Va debug.iosize_max_clamp
> > >   is non-zero).
> > > +.It Bq Er EINVAL
> > > +The current file offset is not a multiple of the block size.
> > This is bogus.  It does not.  You can perfectly write at arbitrary regular
> > file offset.
> > 
> 
> If you have a 4K block size character device, geom doesn't support writing /
> reading 515 byte blocks .... The description is maybe not applicable for all
> EINVAL's returned.

This is why I specified the 'regular file' in my response.  Obviously, a
write to the disk driver special file is much more uncommon thing, and
devfs nodes provide a lot of unusual semantics, which is unlikely worth
mentioning in the generic write(2) syscall documentation.

It is bogus to list these cases as generic error conditions.



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