io_uring: Add io_uring_setup flag to pre-register ring fd and never install it
authorJosh Triplett <josh@joshtriplett.org>
Fri, 28 Apr 2023 16:40:30 +0000 (01:40 +0900)
committerJens Axboe <axboe@kernel.dk>
Tue, 16 May 2023 14:06:00 +0000 (08:06 -0600)
commit6e76ac595855db27bbdaef337173294a6fd6eb2c
tree29175a90e7330051dd3175e1ab659233e54d7c3a
parent03d89a2de25bbc5c77e61a0cf77663978c4b6ea7
io_uring: Add io_uring_setup flag to pre-register ring fd and never install it

With IORING_REGISTER_USE_REGISTERED_RING, an application can register
the ring fd and use it via registered index rather than installed fd.
This allows using a registered ring for everything *except* the initial
mmap.

With IORING_SETUP_NO_MMAP, io_uring_setup uses buffers allocated by the
user, rather than requiring a subsequent mmap.

The combination of the two allows a user to operate *entirely* via a
registered ring fd, making it unnecessary to ever install the fd in the
first place. So, add a flag IORING_SETUP_REGISTERED_FD_ONLY to make
io_uring_setup register the fd and return a registered index, without
installing the fd.

This allows an application to avoid touching the fd table at all, and
allows a library to never even momentarily install a file descriptor.

This splits out an io_ring_add_registered_file helper from
io_ring_add_registered_fd, for use by io_uring_setup.

Signed-off-by: Josh Triplett <josh@joshtriplett.org>
Link: https://lore.kernel.org/r/bc8f431bada371c183b95a83399628b605e978a3.1682699803.git.josh@joshtriplett.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/uapi/linux/io_uring.h
io_uring/io_uring.c
io_uring/io_uring.h
io_uring/tctx.c