Hello, This patch adds sqe user ext flags, generic sqe group usage, and provide group kbuf based on sqe group. sqe group provides one efficient way to share resource among one group of sqes, such as, it can be for implementing multiple copying(copy data from single source to multiple destinations) via single syscall. Finally implements provide group kbuf for uring command, and ublk use this for supporting zero copy, and actually this feature can be used to support generic device zero copy. The last liburing patch adds helpers for using sqe group, also adds tests for sqe group. ublksrv userspace implements zero copy by sqe group & provide group kbuf: https://github.com/ublk-org/ublksrv/commits/group-provide-buf/ git clone https://github.com/ublk-org/ublksrv.git -b group-provide-buf make test T=loop/009:nbd/061:nbd/062 #ublk zc tests Any comments are welcome! Ming Lei (9): io_uring: net: don't check sqe->__pad2[0] for send zc io_uring: support user sqe ext flags io_uring: add helper for filling cqes in __io_submit_flush_completions() io_uring: add one output argument to io_submit_sqe io_uring: support SQE group io_uring: support providing sqe group buffer io_uring/uring_cmd: support provide group kernel buffer ublk: support provide io buffer liburing: support sqe ext_flags & sqe group drivers/block/ublk_drv.c | 156 ++++++++++++++++++- include/linux/io_uring/cmd.h | 9 ++ include/linux/io_uring_types.h | 46 +++++- include/uapi/linux/io_uring.h | 24 ++- include/uapi/linux/ublk_cmd.h | 7 +- io_uring/filetable.h | 2 +- io_uring/io_uring.c | 268 +++++++++++++++++++++++++++++---- io_uring/io_uring.h | 17 ++- io_uring/kbuf.c | 62 ++++++++ io_uring/kbuf.h | 12 ++ io_uring/net.c | 31 +++- io_uring/opdef.c | 5 + io_uring/opdef.h | 2 + io_uring/rw.c | 20 ++- io_uring/uring_cmd.c | 25 ++- 15 files changed, 640 insertions(+), 46 deletions(-) -- 2.42.0