Hi Linus, Here are the main io_uring changes for the 6.12 merge window. There will be a followup one that adds discard support, but since that depends on both this branch and the block branch, it'll be sent post both of those. This pull request contains: - NAPI fixes and cleanups (Pavel, Olivier) - Add support for absolute timeouts (Pavel) - Fixes for io-wq/sqpoll affinities (Felix) - Efficiency improvements for dealing with huge pages (Chenliang) - Support for a minwait mode, where the application essentially has two timouts - one smaller one that defines the batch timeout, and the overall large one similar to what we had before. This enables efficient use of batching based on count + timeout, while still working well with periods of less intensive workloads. - Use ITER_UBUF for single segment sends - Add support for incremental buffer consumption. Right now each operation will always consume a full buffer. With incremental consumption, a recv/read operation only consumes the part of the buffer that it needs to satisfy the operation. - Add support for GCOV for io_uring, to help retain a high coverage of test to code ratio. - Fix regression with ocfs2, where an odd -EOPNOTSUPP wasn't correctly converted to a blocking retry. - Add support for cloning registered buffers from one ring to another. - Misc cleanups (Anuj, me) Please pull! The following changes since commit 5be63fc19fcaa4c236b307420483578a56986a37: Linux 6.11-rc5 (2024-08-25 19:07:11 +1200) are available in the Git repository at: git://git.kernel.dk/linux.git tags/for-6.12/io_uring-20240913 for you to fetch changes up to 7cc2a6eadcd7a5aa36ac63e6659f5c6138c7f4d2: io_uring: add IORING_REGISTER_COPY_BUFFERS method (2024-09-12 10:14:15 -0600) ---------------------------------------------------------------- for-6.12/io_uring-20240913 ---------------------------------------------------------------- Anuj Gupta (2): io_uring: add new line after variable declaration io_uring: remove unused rsrc_put_fn Chenliang Li (2): io_uring/rsrc: store folio shift and mask into imu io_uring/rsrc: enable multi-hugepage buffer coalescing Felix Moessbauer (3): io_uring/sqpoll: do not allow pinning outside of cpuset io_uring/io-wq: do not allow pinning outside of cpuset io_uring/io-wq: inherit cpuset of cgroup in io worker Jens Axboe (22): io_uring/kbuf: use 'bl' directly rather than req->buf_list io_uring/net: use ITER_UBUF for single segment send maps io_uring/kbuf: turn io_buffer_list booleans into flags io_uring: encapsulate extraneous wait flags into a separate struct io_uring: move schedule wait logic into helper io_uring: implement our own schedule timeout handling io_uring: add support for batch wait timeout io_uring: wire up min batch wake timeout io_uring/kbuf: shrink nr_iovs/mode in struct buf_sel_arg io_uring/kbuf: add io_kbuf_commit() helper io_uring/kbuf: move io_ring_head_to_buf() to kbuf.h Revert "io_uring: Require zeroed sqe->len on provided-buffers send" io_uring/kbuf: pass in 'len' argument for buffer commit io_uring/kbuf: add support for incremental buffer consumption io_uring: add GCOV_PROFILE_URING Kconfig option io_uring/eventfd: move refs to refcount_t io_uring/rw: treat -EOPNOTSUPP for IOCB_NOWAIT like -EAGAIN io_uring/rw: drop -EOPNOTSUPP check in __io_complete_rw_common() io_uring/rsrc: clear 'slot' entry upfront io_uring/rsrc: add reference count to struct io_mapped_ubuf io_uring/register: provide helper to get io_ring_ctx from 'fd' io_uring: add IORING_REGISTER_COPY_BUFFERS method Olivier Langlois (2): io_uring: add napi busy settings to the fdinfo output io_uring: micro optimization of __io_sq_thread() condition Pavel Begunkov (4): io_uring/napi: refactor __io_napi_busy_loop() io_uring/napi: postpone napi timeout adjustment io_uring: add absolute mode wait timeouts io_uring: user registered clockid for wait timeouts include/linux/io_uring_types.h | 3 + include/uapi/linux/io_uring.h | 42 ++++++- init/Kconfig | 13 +++ io_uring/Makefile | 4 + io_uring/eventfd.c | 13 ++- io_uring/fdinfo.c | 14 ++- io_uring/io-wq.c | 25 ++++- io_uring/io_uring.c | 212 ++++++++++++++++++++++++++--------- io_uring/io_uring.h | 12 ++ io_uring/kbuf.c | 96 ++++++++-------- io_uring/kbuf.h | 94 +++++++++++----- io_uring/napi.c | 35 ++---- io_uring/napi.h | 16 --- io_uring/net.c | 27 +++-- io_uring/register.c | 91 +++++++++++---- io_uring/register.h | 1 + io_uring/rsrc.c | 245 ++++++++++++++++++++++++++++++++++------- io_uring/rsrc.h | 14 ++- io_uring/rw.c | 19 +++- io_uring/sqpoll.c | 7 +- 20 files changed, 723 insertions(+), 260 deletions(-) -- Jens Axboe