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>
Sat, 2 Nov 2024 21:45:30 +0000 (15:45 -0600)
commitc1329532d5aabecf79788924941afb8a7b7c1024
tree2da3518fc3cb679aaee5e6b2b9dc58486df063b7
parentb16e920a1909da6799c43000db730d8fcdcae907
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