Not the fastets implementation, but I'd need to stir up/duplicate splice.c bits to do it more efficiently. note: rebase on top of the recent inflight patchset. v2: - u32 len and SQE layout changes (Jens) - output file is in sqe->fd for automatic hash_reg_file support - handle unbound_nonreg_file for the second fd - file leaks fixed with REQ_F_NEED_CLEANUP - place SPLICE_F_FD_IN_FIXED in splice flags (Jens) - loff_t* -> loff_t, -1 means not specified offset v3: [PATCH 3/3] changes - fd u32 -> s32 (Stefan Metzmacher) - add BUILD_BUG_SQE_ELEM() (Stefan Metzmacher) - accept and ignore ioprio (Stefan Metzmacher) - off_in -> splice_off_in Pavel Begunkov (3): splice: make do_splice public io_uring: add interface for getting files io_uring: add splice(2) support fs/io_uring.c | 175 +++++++++++++++++++++++++++++----- fs/splice.c | 6 +- include/linux/splice.h | 3 + include/uapi/linux/io_uring.h | 14 ++- 4 files changed, 169 insertions(+), 29 deletions(-) -- 2.24.0