• Linus Torvalds's avatar
    Merge tag 'for-6.12/io_uring-20240913' of git://git.kernel.dk/linux · 3a4d319a
    Linus Torvalds authored
    Pull io_uring updates from Jens Axboe:
    
     - 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)
    
    * tag 'for-6.12/io_uring-20240913' of git://git.kernel.dk/linux: (35 commits)
      io_uring: add IORING_REGISTER_COPY_BUFFERS method
      io_uring/register: provide helper to get io_ring_ctx from 'fd'
      io_uring/rsrc: add reference count to struct io_mapped_ubuf
      io_uring/rsrc: clear 'slot' entry upfront
      io_uring/io-wq: inherit cpuset of cgroup in io worker
      io_uring/io-wq: do not allow pinning outside of cpuset
      io_uring/rw: drop -EOPNOTSUPP check in __io_complete_rw_common()
      io_uring/rw: treat -EOPNOTSUPP for IOCB_NOWAIT like -EAGAIN
      io_uring/sqpoll: do not allow pinning outside of cpuset
      io_uring/eventfd: move refs to refcount_t
      io_uring: remove unused rsrc_put_fn
      io_uring: add new line after variable declaration
      io_uring: add GCOV_PROFILE_URING Kconfig option
      io_uring/kbuf: add support for incremental buffer consumption
      io_uring/kbuf: pass in 'len' argument for buffer commit
      Revert "io_uring: Require zeroed sqe->len on provided-buffers send"
      io_uring/kbuf: move io_ring_head_to_buf() to kbuf.h
      io_uring/kbuf: add io_kbuf_commit() helper
      io_uring/kbuf: shrink nr_iovs/mode in struct buf_sel_arg
      io_uring: wire up min batch wake timeout
      ...
    3a4d319a
kbuf.c 20.9 KB