Re: git: d97e44784bb5 - main - aio_*(2): mention ENOSYS under ERRORS

From: Alan Somers <asomers_at_freebsd.org>
Date: Wed, 26 Mar 2025 15:04:52 UTC
Is this error still possible after f3215338ef82c7798bebca17a7d502cc5ef8bc18
?  How does one unload the module now?

On Tue, Mar 25, 2025 at 10:51 PM Enji Cooper <ngie@freebsd.org> wrote:

> The branch main has been updated by ngie:
>
> URL:
> https://cgit.FreeBSD.org/src/commit/?id=d97e44784bb5a510b7af7593c86cfbcff73855c4
>
> commit d97e44784bb5a510b7af7593c86cfbcff73855c4
> Author:     Enji Cooper <ngie@FreeBSD.org>
> AuthorDate: 2025-03-25 21:57:52 +0000
> Commit:     Enji Cooper <ngie@FreeBSD.org>
> CommitDate: 2025-03-26 04:49:33 +0000
>
>     aio_*(2): mention ENOSYS under ERRORS
>
>     ENOSYS can occur if aio(4) is not loaded in the kernel. Document this
>     behavior so consumers on FreeBSD can better understand that this is a
>     possible scenario.
>
>     Clean up the manpages slightly while here:
>     - Sort `ERRORS` by errno(3).
>     - Use `.Fx` instead of `FreeBSD`.
>
>     MFC after:      2 weeks
>     Reviewed by:    ziaee
>     PR:             190942
>     Differential Revision: https://reviews.freebsd.org/D49502
> ---
>  lib/libsys/aio_cancel.2       |  7 +++++++
>  lib/libsys/aio_error.2        |  7 +++++++
>  lib/libsys/aio_fsync.2        |  7 +++++++
>  lib/libsys/aio_mlock.2        |  7 +++++++
>  lib/libsys/aio_read.2         | 11 ++++++++++-
>  lib/libsys/aio_return.2       |  7 +++++++
>  lib/libsys/aio_suspend.2      |  7 +++++++
>  lib/libsys/aio_waitcomplete.2 | 11 +++++++++--
>  lib/libsys/aio_write.2        | 11 ++++++++++-
>  9 files changed, 71 insertions(+), 4 deletions(-)
>
> diff --git a/lib/libsys/aio_cancel.2 b/lib/libsys/aio_cancel.2
> index 42d074054716..928a8b325e5f 100644
> --- a/lib/libsys/aio_cancel.2
> +++ b/lib/libsys/aio_cancel.2
> @@ -80,6 +80,13 @@ The
>  .Fa fildes
>  argument
>  is an invalid file descriptor.
> +.It Bq Er ENOSYS
> +The
> +.Fn aio_cancel
> +system call is not supported.
> +This can occur if
> +.Xr aio 4
> +support is not present.
>  .El
>  .Sh SEE ALSO
>  .Xr aio_error 2 ,
> diff --git a/lib/libsys/aio_error.2 b/lib/libsys/aio_error.2
> index 69eb7cd90ee2..2579d2f33052 100644
> --- a/lib/libsys/aio_error.2
> +++ b/lib/libsys/aio_error.2
> @@ -72,6 +72,13 @@ The
>  .Fa iocb
>  argument
>  does not reference an outstanding asynchronous I/O request.
> +.It Bq Er ENOSYS
> +The
> +.Fn aio_error
> +system call is not supported.
> +This can occur if
> +.Xr aio 4
> +support is not present.
>  .El
>  .Sh SEE ALSO
>  .Xr aio_cancel 2 ,
> diff --git a/lib/libsys/aio_fsync.2 b/lib/libsys/aio_fsync.2
> index 46fc5d95bcfd..0b863773eaf2 100644
> --- a/lib/libsys/aio_fsync.2
> +++ b/lib/libsys/aio_fsync.2
> @@ -136,6 +136,13 @@ argument
>  is not a valid descriptor.
>  .It Bq Er EINVAL
>  This implementation does not support synchronized I/O for this file.
> +.It Bq Er ENOSYS
> +The
> +.Fn aio_fsync
> +system call is not supported.
> +This can occur if
> +.Xr aio 4
> +support is not present.
>  .El
>  .Pp
>  If the request is successfully enqueued, but subsequently cancelled
> diff --git a/lib/libsys/aio_mlock.2 b/lib/libsys/aio_mlock.2
> index 02d54304c631..f89ad10936aa 100644
> --- a/lib/libsys/aio_mlock.2
> +++ b/lib/libsys/aio_mlock.2
> @@ -98,6 +98,13 @@ The request was not queued because of system resource
> limitations.
>  The asynchronous notification method in
>  .Fa iocb->aio_sigevent.sigev_notify
>  is invalid or not supported.
> +.It Bq Er ENOSYS
> +The
> +.Fn aio_mlock
> +system call is not supported.
> +This can occur if
> +.Xr aio 4
> +support is not present.
>  .El
>  .Pp
>  If the request is successfully enqueued, but subsequently cancelled
> diff --git a/lib/libsys/aio_read.2 b/lib/libsys/aio_read.2
> index 3a9601754c06..811d0b234168 100644
> --- a/lib/libsys/aio_read.2
> +++ b/lib/libsys/aio_read.2
> @@ -173,6 +173,13 @@ points outside the process's allocated address space.
>  The asynchronous notification method in
>  .Fa iocb->aio_sigevent.sigev_notify
>  is invalid or not supported.
> +.It Bq Er ENOSYS
> +The
> +.Fn aio_read
> +system call is not supported.
> +This can occur if
> +.Xr aio 4
> +support is not present.
>  .It Bq Er EOPNOTSUPP
>  Asynchronous read operations on the file descriptor
>  .Fa iocb->aio_fildes
> @@ -263,7 +270,9 @@ The
>  .Fn aio_read2
>  and
>  .Fn aio_readv
> -system calls are FreeBSD extensions,
> +system calls are
> +.Fx
> +extensions,
>  and should not be used in portable code.
>  .Sh HISTORY
>  The
> diff --git a/lib/libsys/aio_return.2 b/lib/libsys/aio_return.2
> index 499b85ef20d8..49e1abf201ec 100644
> --- a/lib/libsys/aio_return.2
> +++ b/lib/libsys/aio_return.2
> @@ -79,6 +79,13 @@ The I/O operation was submitted with
>  and the value of the
>  .Fa aio_lio_opcode
>  is invalid.
> +.It Bq Er ENOSYS
> +The
> +.Fn aio_return
> +system call is not supported.
> +This can occur if
> +.Xr aio 4
> +support is not present.
>  .El
>  .Sh SEE ALSO
>  .Xr aio_cancel 2 ,
> diff --git a/lib/libsys/aio_suspend.2 b/lib/libsys/aio_suspend.2
> index c46b0292c34e..ebc3c15d059f 100644
> --- a/lib/libsys/aio_suspend.2
> +++ b/lib/libsys/aio_suspend.2
> @@ -89,6 +89,13 @@ contains more asynchronous I/O requests than the
>  variable, or at least one of the requests is not valid.
>  .It Bq Er EINTR
>  the suspend was interrupted by a signal.
> +.It Bq Er ENOSYS
> +The
> +.Fn aio_suspend
> +system call is not supported.
> +This can occur if
> +.Xr aio 4
> +support is not present.
>  .El
>  .Sh SEE ALSO
>  .Xr aio_cancel 2 ,
> diff --git a/lib/libsys/aio_waitcomplete.2 b/lib/libsys/aio_waitcomplete.2
> index 1f20eca942ab..0a38155d7c75 100644
> --- a/lib/libsys/aio_waitcomplete.2
> +++ b/lib/libsys/aio_waitcomplete.2
> @@ -91,8 +91,6 @@ The
>  .Fn aio_waitcomplete
>  system call fails if:
>  .Bl -tag -width Er
> -.It Bq Er EINVAL
> -The specified time limit is invalid.
>  .It Bq Er EAGAIN
>  The process has not yet called
>  .Fn aio_read
> @@ -101,6 +99,15 @@ or
>  .It Bq Er EINTR
>  A signal was delivered before the timeout expired and before any
>  asynchronous I/O requests completed.
> +.It Bq Er EINVAL
> +The specified time limit is invalid.
> +.It Bq Er ENOSYS
> +The
> +.Fn aio_waitcomplete
> +system call is not supported.
> +This can occur if
> +.Xr aio 4
> +support is not present.
>  .It Bq Er EWOULDBLOCK
>  .It Bq Er EINPROGRESS
>  The specified time limit expired before any asynchronous I/O requests
> diff --git a/lib/libsys/aio_write.2 b/lib/libsys/aio_write.2
> index f59406b8ab36..a7108a87e378 100644
> --- a/lib/libsys/aio_write.2
> +++ b/lib/libsys/aio_write.2
> @@ -182,6 +182,13 @@ points outside the process's allocated address space.
>  The asynchronous notification method in
>  .Fa iocb->aio_sigevent.sigev_notify
>  is invalid or not supported.
> +.It Bq Er ENOSYS
> +The
> +.Fn aio_write
> +system call is not supported.
> +This can occur if
> +.Xr aio 4
> +support is not present.
>  .It Bq Er EOPNOTSUPP
>  Asynchronous write operations on the file descriptor
>  .Fa iocb->aio_fildes
> @@ -265,7 +272,9 @@ The
>  .Fn aio_write2
>  and
>  .Fn aio_writev
> -system calls are FreeBSD extensions,
> +system calls are
> +.Fx
> +extensions,
>  and should not be used in portable code.
>  .Sh HISTORY
>  The
>