]> git.dujemihanovic.xyz Git - linux.git/commitdiff
Merge tag 'for-6.12/io_uring-20240913' of git://git.kernel.dk/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 16 Sep 2024 11:29:00 +0000 (13:29 +0200)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 16 Sep 2024 11:29:00 +0000 (13:29 +0200)
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
  ...

1  2 
io_uring/kbuf.c
io_uring/rsrc.c

diff --cc io_uring/kbuf.c
index bdfa30b38321b76f123c8d77f1e3bf47b816d9ea,1f503bcc9c9fce68cacce81ef7f705df4cdbfc10..d407576ddfb7822105f3b47ea3e670a56103e836
@@@ -129,15 -129,9 +129,9 @@@ static int io_provided_buffers_select(s
  
        iov[0].iov_base = buf;
        iov[0].iov_len = *len;
 -      return 0;
 +      return 1;
  }
  
- static struct io_uring_buf *io_ring_head_to_buf(struct io_uring_buf_ring *br,
-                                               __u16 head, __u16 mask)
- {
-       return &br->bufs[head & mask];
- }
  static void __user *io_ring_buffer_select(struct io_kiocb *req, size_t *len,
                                          struct io_buffer_list *bl,
                                          unsigned int issue_flags)
diff --cc io_uring/rsrc.c
Simple merge