Hi Linus, Here are the io_uring changes for this merge window. Light on new features this time around (just splice + buffer selection), lots of cleanups, fixes, and improvements to existing support. In particular, this pull request contains: - Cleanup fixed file update handling for stack fallback (Hillf) - Re-work of how pollable async IO is handled, we no longer require thread offload to handle that. Instead we rely using poll to drive this, with task_work execution. - In conjunction with the above, allow expendable buffer selection, so that poll+recv (for example) no longer has to be a split operation. - Make sure we honor RLIMIT_FSIZE for buffered writes - Add support for splice (Pavel) - Linked work inheritance fixes and optimizations (Pavel) - Async work fixes and cleanups (Pavel) - Improve io-wq locking (Pavel) - Hashed link write improvements (Pavel) - SETUP_IOPOLL|SETUP_SQPOLL improvements (Xiaoguang) Please pull! git://git.kernel.dk/linux-block.git tags/for-5.7/io_uring-2020-03-29 ---------------------------------------------------------------- Chucheng Luo (1): io_uring: fix missing 'return' in comment Hillf Danton (2): io-uring: drop completion when removing file io-uring: drop 'free_pfile' in struct io_file_put Jens Axboe (17): io_uring: consider any io_read/write -EAGAIN as final io_uring: io_accept() should hold on to submit reference on retry io_uring: store io_kiocb in wait->private io_uring: add per-task callback handler io_uring: mark requests that we can do poll async in io_op_defs io_uring: use poll driven retry for files that support it io_uring: buffer registration infrastructure io_uring: add IORING_OP_PROVIDE_BUFFERS io_uring: support buffer selection for OP_READ and OP_RECV io_uring: add IOSQE_BUFFER_SELECT support for IORING_OP_READV net: abstract out normal and compat msghdr import io_uring: add IOSQE_BUFFER_SELECT support for IORING_OP_RECVMSG io_uring: provide means of removing buffers io_uring: add end-of-bits marker and build time verify it io_uring: dual license io_uring.h uapi header io_uring: fix truncated async read/readv and write/writev retry io_uring: honor original task RLIMIT_FSIZE Lukas Bulwahn (1): io_uring: make spdxcheck.py happy Nathan Chancellor (1): io_uring: Ensure mask is initialized in io_arm_poll_handler Oleg Nesterov (1): task_work_run: don't take ->pi_lock unconditionally Pavel Begunkov (28): io_uring: don't call work.func from sync ctx io_uring: don't do full *prep_worker() from io-wq io_uring: remove req->in_async splice: make do_splice public io_uring: add interface for getting files io_uring: add splice(2) support io_uring: clean io_poll_complete io_uring: extract kmsg copy helper io-wq: remove unused IO_WQ_WORK_HAS_MM io_uring: remove IO_WQ_WORK_CB io-wq: use BIT for ulong hash io_uring: remove extra nxt check after punt io_uring: remove io_prep_next_work() io_uring: clean up io_close io_uring: make submission ref putting consistent io_uring: remove @nxt from handlers io_uring: get next work with submission ref drop io-wq: shuffle io_worker_handle_work() code io-wq: optimise locking in io_worker_handle_work() io-wq: optimise out *next_work() double lock io_uring/io-wq: forward submission ref to async io-wq: remove duplicated cancel code io-wq: don't resched if there is no work io-wq: split hashing and enqueueing io-wq: hash dependent work io-wq: close cancel gap for hashed linked work io_uring: Fix ->data corruption on re-enqueue io-wq: handle hashed writes in chains Xiaoguang Wang (2): io_uring: io_uring_enter(2) don't poll while SETUP_IOPOLL|SETUP_SQPOLL enabled io_uring: cleanup io_alloc_async_ctx() YueHaibing (1): io_uring: Fix unused function warnings fs/io-wq.c | 368 ++++--- fs/io-wq.h | 65 +- fs/io_uring.c | 2015 +++++++++++++++++++++++++++------------ fs/splice.c | 6 +- include/linux/socket.h | 4 + include/linux/splice.h | 3 + include/net/compat.h | 3 + include/trace/events/io_uring.h | 103 ++ include/uapi/linux/io_uring.h | 42 +- kernel/task_work.c | 18 +- net/compat.c | 30 +- net/socket.c | 25 +- 12 files changed, 1826 insertions(+), 856 deletions(-) -- Jens Axboe