]> git.baikalelectronics.ru Git - kernel.git/commit
io_uring: openat directly into fixed fd table
authorPavel Begunkov <asml.silence@gmail.com>
Wed, 25 Aug 2021 11:25:45 +0000 (12:25 +0100)
committerJens Axboe <axboe@kernel.dk>
Wed, 25 Aug 2021 12:36:56 +0000 (06:36 -0600)
commitbf93fa2ba190046a4f493f411a3cfda13b1a288c
tree3856ba1497b101941bb77d6aabe078808df08136
parentbd23fe0d857f2f6dab1af1eb833c1c070aea964b
io_uring: openat directly into fixed fd table

Instead of opening a file into a process's file table as usual and then
registering the fd within io_uring, some users may want to skip the
first step and place it directly into io_uring's fixed file table.
This patch adds such a capability for IORING_OP_OPENAT and
IORING_OP_OPENAT2.

The behaviour is controlled by setting sqe->file_index, where 0 implies
the old behaviour using normal file tables. If non-zero value is
specified, then it will behave as described and place the file into a
fixed file slot sqe->file_index - 1. A file table should be already
created, the slot should be valid and empty, otherwise the operation
will fail.

Keep the error codes consistent with IORING_OP_FILES_UPDATE, ENXIO and
EINVAL on inappropriate fixed tables, and return EBADF on collision with
already registered file.

Note: IOSQE_FIXED_FILE can't be used to switch between modes, because
accept takes a file, and it already uses the flag with a different
meaning.

Suggested-by: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Link: https://lore.kernel.org/r/e9b33d1163286f51ea707f87d95bd596dada1e65.1629888991.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c
include/uapi/linux/io_uring.h