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>
Thu, 31 Oct 2024 14:48:01 +0000 (08:48 -0600)
commitb0317560b25cd73f5b2ec80047bd3a974fcecfa6
tree8ab33309e3f2fc081d7b077c2e8fc60ff996109d
parent6f86c99e302c820b759093294ac65936e1418559
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