* [GIT PULL] Core io_uring changes for 7.0-rc1
@ 2026-02-06 18:57 Jens Axboe
0 siblings, 0 replies; only message in thread
From: Jens Axboe @ 2026-02-06 18:57 UTC (permalink / raw)
To: Linus Torvalds; +Cc: io-uring
Hi Linus,
Doing a few separate branches for this release, and one depends on the
networking tree so coming later, but here are the core io_uring changes
queued up for the 7.0 kernel release. Nothing major in this series. This
pull request contains:
- Series cleaning up the IORING_SETUP_R_DISABLED and submitter task
checking, mostly just in preparation for relaxing the locking for
SINGLE_ISSUER in the future.
- Improve IOPOLL by using a doubly linked list to manage completions.
Previously it was singly listed, which meant that to complete request
N in the chain 0..N-1 had to have completed first. With a doubly
linked list we can complete whatever request completes in that order,
rather than need to wait for a consecutive range to be available. This
reduces latencies.
- Small series improving the restriction setup and checking. Mostly in
preparation for adding further features on top of that. Coming in a
separate pull request.
- Split out task_work and wait handling into separate files. These are
mostly nicely abstracted already, but still remained in the io_uring.c
file which is on the larger side.
- Use GFP_KERNEL_ACCOUNT in a few more spots, where appropriate.
- Ensure even the idle io-wq worker exits if a task no longer has any
rings open.
- Add support for a non-circular submission queue. By default, the SQ
ring keeps moving around, even if only a few entries are used for each
submission. This can be wasteful in terms of cachelines. If
IORING_SETUP_SQ_REWIND is set for the ring when created, each
submission will start at offset 0 instead of where we last left off
doing submissions.
- Various little cleanups
Please pull!
The following changes since commit f8f9c1f4d0c7a64600e2ca312dec824a0bc2f1da:
Linux 6.19-rc3 (2025-12-28 13:24:26 -0800)
are available in the Git repository at:
https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux.git tags/for-7.0/io_uring-20260206
for you to fetch changes up to 442ae406603a94f1a263654494f425302ceb0445:
io_uring/kbuf: fix memory leak if io_buffer_add_list fails (2026-02-05 11:13:16 -0700)
----------------------------------------------------------------
for-7.0/io_uring-20260206
----------------------------------------------------------------
Caleb Sander Mateos (4):
io_uring: use release-acquire ordering for IORING_SETUP_R_DISABLED
io_uring/msg_ring: drop unnecessary submitter_task checks
io_uring/register: drop io_register_enable_rings() submitter_task check
io_uring/rsrc: take unsigned index in io_rsrc_node_lookup()
Gabriel Krisman Bertazi (1):
io_uring: Trim out unused includes
Jens Axboe (21):
io_uring: IOPOLL polling improvements
io_uring/register: have io_parse_restrictions() return number of ops
io_uring/register: have io_parse_restrictions() set restrictions enabled
io_uring/register: set ctx->restricted when restrictions are parsed
io_uring: move ctx->restricted check into io_check_restriction()
io_uring: track restrictions separately for IORING_OP and IORING_REGISTER
io_uring: fix IOPOLL with passthrough I/O
io_uring/uring_cmd: explicitly disallow cancelations for IOPOLL
io_uring/timeout: annotate data race in io_flush_timeouts()
io_uring/eventfd: remove unused ctx->evfd_last_cq_tail member
io_uring/sync: validate passed in offset
io_uring: add IO_URING_EXIT_WAIT_MAX definition
io_uring/io-wq: don't trigger hung task for syzbot craziness
io_uring: split out task work code into tw.c
io_uring: split out CQ waiting code into wait.c
io_uring: fix bad indentation for setup flags if statement
io_uring/io-wq: handle !sysctl_hung_task_timeout_secs
io_uring/futex: use GFP_KERNEL_ACCOUNT for futex data allocation
io_uring/rsrc: use GFP_KERNEL_ACCOUNT consistently
io_uring/net: don't continue send bundle if poll was required for retry
io_uring/kbuf: fix memory leak if io_buffer_add_list fails
Li Chen (2):
io_uring/io-wq: add exit-on-idle state
io_uring: allow io-wq workers to exit when unused
Pavel Begunkov (1):
io_uring: introduce non-circular SQ
Tim Bird (1):
io_uring: Add SPDX id lines to remaining source files
include/linux/io_uring_types.h | 29 +-
include/uapi/linux/io_uring.h | 12 +
io_uring/Makefile | 14 +-
io_uring/alloc_cache.h | 2 +
io_uring/cancel.c | 5 +-
io_uring/cmd_net.c | 1 +
io_uring/eventfd.h | 1 +
io_uring/filetable.h | 1 -
io_uring/futex.c | 2 +-
io_uring/io-wq.c | 51 ++-
io_uring/io-wq.h | 2 +
io_uring/io_uring.c | 782 +++--------------------------------------
io_uring/io_uring.h | 90 +----
io_uring/kbuf.c | 5 +-
io_uring/memmap.c | 2 +-
io_uring/memmap.h | 1 +
io_uring/mock_file.c | 1 +
io_uring/msg_ring.c | 28 +-
io_uring/net.c | 6 +-
io_uring/notif.c | 1 +
io_uring/refs.h | 1 +
io_uring/register.c | 42 ++-
io_uring/rsrc.c | 2 +-
io_uring/rsrc.h | 2 +-
io_uring/rw.c | 33 +-
io_uring/slist.h | 13 +-
io_uring/sqpoll.c | 8 +-
io_uring/sync.c | 2 +
io_uring/tctx.c | 11 +
io_uring/timeout.c | 2 +-
io_uring/tw.c | 355 +++++++++++++++++++
io_uring/tw.h | 116 ++++++
io_uring/uring_cmd.c | 9 +
io_uring/wait.c | 308 ++++++++++++++++
io_uring/wait.h | 49 +++
35 files changed, 1074 insertions(+), 915 deletions(-)
create mode 100644 io_uring/tw.c
create mode 100644 io_uring/tw.h
create mode 100644 io_uring/wait.c
create mode 100644 io_uring/wait.h
--
Jens Axboe
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-02-06 18:58 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-06 18:57 [GIT PULL] Core io_uring changes for 7.0-rc1 Jens Axboe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox