io_uring/rsrc: allow cloning with node replacements
authorJens Axboe <axboe@kernel.dk>
Tue, 29 Oct 2024 13:50:56 +0000 (07:50 -0600)
committerJens Axboe <axboe@kernel.dk>
Tue, 29 Oct 2024 15:08:50 +0000 (09:08 -0600)
commit8d69ca3c0fe79ab5987c91e823feccce3d3a3c0f
treed0e0cfa51fc64d3528cb33b42d5c46bed7b9ca19
parentf53fd51f7a80f5be570b8529a860b65eac18baf0
io_uring/rsrc: allow cloning with node replacements

Currently cloning a buffer table will fail if the destination already has
a table. But it should be possible to use it to replace existing elements.
Add a IORING_REGISTER_DST_REPLACE cloning flag, which if set, will allow
the destination to already having a buffer table. If that is the case,
then entries designated by offset + nr buffers will be replaced if they
already exist.

Note that it's allowed to use IORING_REGISTER_DST_REPLACE and not have
an existing table, in which case it'll work just like not having the
flag set and an empty table - it'll just assign the newly created table
for that case.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/uapi/linux/io_uring.h
io_uring/rsrc.c