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
next 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