Right now buffer cloning is an all-or-nothing kind of thing - either the whole table is cloned from a source to a destination ring, or nothing at all. However, it's not always desired to clone the whole thing. Allow for the application to specify a source and destination offset, and a number of buffers to clone. If the destination offset is non-zero, then allocate sparse nodes upfront.
Showing the changes to include/uapi (1 of 2 files). Show all
Unified · Split
| @@ -719,7 +719,10 @@ enum { · 718 unmodified lines | ||
| 719 | 719 | struct io_uring_clone_buffers { |
| 720 | 720 | __u32 src_fd; |
| 721 | 721 | __u32 flags; |
| 722 | − __u32 pad[6]; | |
| 722 | + __u32 src_off; | |
| 723 | + __u32 dst_off; | |
| 724 | + __u32 nr; | |
| 725 | + __u32 pad[3]; | |
| 723 | 726 | }; |
| 724 | 727 | |
| 725 | 728 | struct io_uring_buf { |