Linux io-uring development
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@kernel.dk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: io-uring <io-uring@vger.kernel.org>
Subject: [GIT PULL] io_uring changes for the 7.1 merge window
Date: Sat, 11 Apr 2026 17:30:28 -0600	[thread overview]
Message-ID: <759b8298-18e1-4bb2-a5f9-eeb9341b0c6c@kernel.dk> (raw)

Hi Linus,

Sending this a little early as a) I'm currently OOO and traveling, and
b) I won't be back until later in the merge window. These are the core
io_uring changes queued for the 7.1 merge window:

 - Add a callback driven main loop for io_uring, and BPF struct_ops
   on top to allow implementing custom event loop logic.

 - Decouple IOPOLL from being a ring-wide all-or-nothing setting,
   allowing IOPOLL use cases to also issue certain white listed
   non-polled opcodes.

 - Timeout improvements. Migrate internal timeout storage from
   timespec64 to ktime_t for simpler arithmetic and avoid copying of
   timespec data.

 - Zero-copy receive (zcrx) updates
	- Add a device-less mode (ZCRX_REG_NODEV) for testing and
	  experimentation where data flows through the copy fallback
	  path.
	- Fix two-step unregistration regression, DMA length
	  calculations, xarray mark usage, and a potential 32-bit
	  overflow in id shifting.
	- Refactoring toward multi-area support: dedicated refill queue
	  struct, consolidated DMA syncing, netmem array refilling
	  format, and guard-based locking.

 - Zero-copy transmit (zctx) cleanup
	- Unify io_send_zc() and io_sendmsg_zc() into a single
	  function.
	- Add vectorized registered buffer send for
	  IORING_OP_SEND_ZC.
	- Add separate notification user_data via sqe->addr3 so
	  notification and completion CQEs can be distinguished
	  without extra reference counting.

 - Switch struct io_ring_ctx internal bitfields to explicit flag bits
   with atomic-safe accessors, and annotate the known harmless races
   on those flags.

 - Various optimizations caching ctx and other request fields in local
   variables to avoid repeated loads, and cleanups for tctx setup,
   ring fd registration, and read path early returns.

Note - diffstat manually generated because of pulling io_uring-7.0 back
into this branch as later patches depend on changes/fixes in the 7.0
branch. Also note that there's a rename change in the netdev branch, if
you pull post that:

https://lore.kernel.org/all/adjrToW4h60zwxVG@sirena.co.uk/

Please pull!


The following changes since commit c2c185be5c85d37215397c8e8781abf0a69bec1f:

  io_uring/kbuf: check if target buffer list is still legacy on recycle (2026-03-12 08:59:25 -0600)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux.git tags/for-7.1/io_uring-20260411

for you to fetch changes up to c5e9f6a96bf7379da87df1b852b90527e242b56f:

  io_uring: unify getting ctx from passed in file descriptor (2026-04-08 13:21:35 -0600)

----------------------------------------------------------------
for-7.1/io_uring-20260411

----------------------------------------------------------------
Amir Mohammad Jahangirzad (1):
      io_uring/cancel: validate opcode for IORING_ASYNC_CANCEL_OP

Anas Iqbal (1):
      io_uring: cast id to u64 before shifting in io_allocate_rbuf_ring()

Asbjørn Sloth Tønnesen (1):
      io_uring/cmd_net: split ioctl code out of io_uring_cmd_sock()

Caleb Sander Mateos (5):
      io_uring: add REQ_F_IOPOLL
      io_uring: remove iopoll_queue from struct io_issue_def
      io_uring: count CQEs in io_iopoll_check()
      io_uring/uring_cmd: allow non-iopoll cmds with IORING_SETUP_IOPOLL
      nvme: remove nvme_dev_uring_cmd() IO_URING_F_IOPOLL check

Jackie Liu (1):
      io_uring/rsrc: use io_cache_free() to free node

Jens Axboe (11):
      io_uring: switch struct io_ring_ctx internal bitfields to flags
      io_uring: mark known and harmless racy ctx->int_flags uses
      io_uring/kbuf: use 'ctx' consistently
      io_uring/poll: cache req->apoll_events
      io_uring/net: use 'ctx' consistently
      io_uring/rw: use cached file rather than req->file
      io_uring: avoid req->ctx reload in io_req_put_rsrc_nodes()
      io_uring/tctx: have io_uring_alloc_task_context() return tctx
      io_uring/tctx: clean up __io_uring_add_tctx_node() error handling
      io_uring/register: don't get a reference to the registered ring fd
      io_uring: unify getting ctx from passed in file descriptor

Joanne Koong (1):
      io_uring/rw: clean up __io_read() obsolete comment and early returns

Pavel Begunkov (36):
      io_uring/zctx: rename flags var for more clarity
      io_uring/zctx: move vec regbuf import into io_send_zc_import
      io_uring/zctx: unify zerocopy issue variants
      io_uring/zcrx: declare some constants for query
      io_uring/zcrx: move zcrx uapi into separate header
      io_uring/timeout: check unused sqe fields
      io_uring/timeout: add helper for parsing user time
      io_uring/timeout: migrate reqs from ts64 to ktime
      io_uring/timeout: immediate timeout arg
      io_uring/net: allow vectorised regbuf send zc
      io_uring/zctx: separate notification user_data
      io_uring: introduce callback driven main loop
      io_uring/bpf-ops: implement loop_step with BPF struct_ops
      io_uring/bpf-ops: add kfunc helpers
      io_uring/bpf-ops: implement bpf ops registration
      io_uring/zcrx: return back two step unregistration
      io_uring/zcrx: fully clean area on error in io_import_umem()
      io_uring/zcrx: always dma map in advance
      io_uring/zcrx: extract netdev+area init into a helper
      io_uring/zcrx: implement device-less mode for zcrx
      io_uring/zcrx: use better name for RQ region
      io_uring/zcrx: add a struct for refill queue
      io_uring/zcrx: use guards for locking
      io_uring/zcrx: move count check into zcrx_get_free_niov
      io_uring/zcrx: warn on alloc with non-empty pp cache
      io_uring/zcrx: netmem array as refiling format
      io_uring/zcrx: consolidate dma syncing
      io_uring/zcrx: warn on a repeated area append
      io_uring/zcrx: cache fallback availability in zcrx ctx
      io_uring/zcrx: check ctrl op payload struct sizes
      io_uring/zcrx: rename zcrx [un]register functions
      io_uring/zcrx: reject REG_NODEV with large rx_buf_size
      io_uring/zcrx: don't use mark0 for allocating xarray
      io_uring/zcrx: don't clear not allocated niovs
      io_uring/zcrx: use dma_len for chunk size calculation
      io_uring/zcrx: use correct mmap off constants

Yang Xiuwei (1):
      io_uring/timeout: use 'ctx' consistently

 drivers/nvme/host/ioctl.c          |   4 -
 include/linux/io_uring_types.h     |  50 +++--
 include/uapi/linux/io_uring.h      | 101 +---------
 include/uapi/linux/io_uring/zcrx.h | 115 +++++++++++
 io_uring/Kconfig                   |   5 +
 io_uring/Makefile                  |   3 +-
 io_uring/bpf-ops.c                 | 270 ++++++++++++++++++++++++++
 io_uring/bpf-ops.h                 |  28 +++
 io_uring/cancel.c                  |   9 +-
 io_uring/cmd_net.c                 |  34 ++--
 io_uring/eventfd.c                 |   4 +-
 io_uring/fdinfo.c                  |   4 +-
 io_uring/io_uring.c                | 190 ++++++++++--------
 io_uring/io_uring.h                |  45 ++---
 io_uring/kbuf.c                    |  18 +-
 io_uring/loop.c                    |  91 +++++++++
 io_uring/loop.h                    |  27 +++
 io_uring/msg_ring.c                |   2 +-
 io_uring/net.c                     | 152 +++++----------
 io_uring/net.h                     |   1 -
 io_uring/opdef.c                   |  12 +-
 io_uring/opdef.h                   |   2 -
 io_uring/poll.c                    |  17 +-
 io_uring/query.c                   |   4 +-
 io_uring/register.c                |  59 +-----
 io_uring/register.h                |   1 -
 io_uring/rsrc.c                    |  19 +-
 io_uring/rw.c                      |  24 +--
 io_uring/sqpoll.c                  |   8 +-
 io_uring/tctx.c                    |  79 +++++---
 io_uring/tctx.h                    |   4 +-
 io_uring/timeout.c                 |  78 +++++---
 io_uring/timeout.h                 |   2 +-
 io_uring/tw.c                      |   2 +-
 io_uring/uring_cmd.c               |   9 +-
 io_uring/wait.c                    |  50 ++---
 io_uring/wait.h                    |   8 +-
 io_uring/zcrx.c                    | 384 +++++++++++++++++++++++--------------
 io_uring/zcrx.h                    |  34 ++--
 39 files changed, 1220 insertions(+), 729 deletions(-)

-- 
Jens Axboe


             reply	other threads:[~2026-04-11 23:30 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-11 23:30 Jens Axboe [this message]
2026-04-14  0:30 ` [GIT PULL] io_uring changes for the 7.1 merge window pr-tracker-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=759b8298-18e1-4bb2-a5f9-eeb9341b0c6c@kernel.dk \
    --to=axboe@kernel.dk \
    --cc=io-uring@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox