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 | struct io_uring_clone_buffers { | 719 | struct io_uring_clone_buffers { |
| 720 | __u32 src_fd; | 720 | __u32 src_fd; |
| 721 | __u32 flags; | 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 | struct io_uring_buf { | 728 | struct io_uring_buf { |