io_uring: add support for IORING_REGISTER_FILES_UPDATE
authorJens Axboe <axboe@kernel.dk>
Thu, 3 Oct 2019 19:59:56 +0000 (13:59 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 29 Oct 2019 16:22:44 +0000 (10:22 -0600)
commitc3a31e605620c279163c14068a60869ea3fda203
tree3d1f39bf1ab88bc2377c2da7682504b55f686c83
parent08a451739a9b5783f67de51e84cb6d9559bb9dc4
io_uring: add support for IORING_REGISTER_FILES_UPDATE

Allows the application to remove/replace/add files to/from a file set.
Passes in a struct:

struct io_uring_files_update {
__u32 offset;
__s32 *fds;
};

that holds an array of fds, size of array passed in through the usual
nr_args part of the io_uring_register() system call. The logic is as
follows:

1) If ->fds[i] is -1, the existing file at i + ->offset is removed from
   the set.
2) If ->fds[i] is a valid fd, the existing file at i + ->offset is
   replaced with ->fds[i].

For case #2, is the existing file is currently empty (fd == -1), the
new fd is simply added to the array.

Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c
include/uapi/linux/io_uring.h