Re: git: 8dfc788b8480 - main - aio_read2/aio_write2: add AIO_OP2_VECTORED

From: Konstantin Belousov <kostikbel_at_gmail.com>
Date: Mon, 12 Feb 2024 00:18:38 UTC
On Sun, Feb 11, 2024 at 07:28:17AM -0700, Alan Somers wrote:
> What's the difference between this symbol and the existing
> LIO_VECTORED symbol ?  They seem redundant to me.
Same relation as between LIO_FOFFSET and AIO_OP2_FOFFSET.
aio_read2/aio_write2 are simpler to use when a single op is needed.

> 
> On Sat, Feb 10, 2024 at 6:54 PM Konstantin Belousov <kib@freebsd.org> wrote:
> >
> > The branch main has been updated by kib:
> >
> > URL: https://cgit.FreeBSD.org/src/commit/?id=8dfc788b8480a13f1f945f0a94d8b1e327af5c6f
> >
> > commit 8dfc788b8480a13f1f945f0a94d8b1e327af5c6f
> > Author:     Konstantin Belousov <kib@FreeBSD.org>
> > AuthorDate: 2024-02-03 18:09:36 +0000
> > Commit:     Konstantin Belousov <kib@FreeBSD.org>
> > CommitDate: 2024-02-11 01:54:11 +0000
> >
> >     aio_read2/aio_write2: add AIO_OP2_VECTORED
> >
> >     Suggested by:   Vinícius dos Santos Oliveira <vini.ipsmaker@gmail.com>
> >     Reviewed by:    jhb
> >     Sponsored by:   The FreeBSD Foundation
> >     MFC after:      1 week
> >     Differential revision:  https://reviews.freebsd.org/D43448
> > ---
> >  lib/libc/gen/aio_read2.c  | 4 +++-
> >  lib/libc/gen/aio_write2.c | 4 +++-
> >  sys/sys/aio.h             | 1 +
> >  3 files changed, 7 insertions(+), 2 deletions(-)
> >
> > diff --git a/lib/libc/gen/aio_read2.c b/lib/libc/gen/aio_read2.c
> > index 3a783e1b1b15..a5186d509b26 100644
> > --- a/lib/libc/gen/aio_read2.c
> > +++ b/lib/libc/gen/aio_read2.c
> > @@ -37,13 +37,15 @@ aio_read2(struct aiocb *iocb, int flags)
> >  {
> >         int error;
> >
> > -       if ((flags & ~(AIO_OP2_FOFFSET)) != 0) {
> > +       if ((flags & ~(AIO_OP2_FOFFSET | AIO_OP2_VECTORED)) != 0) {
> >                 errno = EINVAL;
> >                 return (-1);
> >         }
> >         iocb->aio_lio_opcode = LIO_READ;
> >         if ((flags & AIO_OP2_FOFFSET) != 0)
> >                 iocb->aio_lio_opcode |= LIO_FOFFSET;
> > +       if ((flags & AIO_OP2_VECTORED) != 0)
> > +               iocb->aio_lio_opcode |= LIO_VECTORED;
> >
> >         error = lio_listio(LIO_NOWAIT, &iocb, 1, NULL);
> >         if (error == -1 && errno == EIO) {
> > diff --git a/lib/libc/gen/aio_write2.c b/lib/libc/gen/aio_write2.c
> > index 8b5d4a38a6c5..8f4f6a35fd4d 100644
> > --- a/lib/libc/gen/aio_write2.c
> > +++ b/lib/libc/gen/aio_write2.c
> > @@ -37,13 +37,15 @@ aio_write2(struct aiocb *iocb, int flags)
> >  {
> >         int error;
> >
> > -       if ((flags & ~(AIO_OP2_FOFFSET)) != 0) {
> > +       if ((flags & ~(AIO_OP2_FOFFSET | AIO_OP2_VECTORED)) != 0) {
> >                 errno = EINVAL;
> >                 return (-1);
> >         }
> >         iocb->aio_lio_opcode = LIO_WRITE;
> >         if ((flags & AIO_OP2_FOFFSET) != 0)
> >                 iocb->aio_lio_opcode |= LIO_FOFFSET;
> > +       if ((flags & AIO_OP2_VECTORED) != 0)
> > +               iocb->aio_lio_opcode |= LIO_VECTORED;
> >
> >         error = lio_listio(LIO_NOWAIT, &iocb, 1, NULL);
> >         if (error == -1 && errno == EIO) {
> > diff --git a/sys/sys/aio.h b/sys/sys/aio.h
> > index 6680f9fed3fa..919a6180b130 100644
> > --- a/sys/sys/aio.h
> > +++ b/sys/sys/aio.h
> > @@ -58,6 +58,7 @@
> >  /* aio_read2/aio_write2 flags */
> >  #if __BSD_VISIBLE
> >  #define        AIO_OP2_FOFFSET         0x00000001
> > +#define        AIO_OP2_VECTORED        0x00000002
> >  #endif
> >
> >  /*