]> git.ipfire.org Git - thirdparty/linux.git/commit
io_uring: introduce non-circular SQ
authorPavel Begunkov <asml.silence@gmail.com>
Tue, 20 Jan 2026 20:47:40 +0000 (20:47 +0000)
committerJens Axboe <axboe@kernel.dk>
Thu, 22 Jan 2026 22:47:23 +0000 (15:47 -0700)
commit5247c034a67f5a93cc1faa15e9867eec5b22f38a
treedafc8859ac3cc7eaa08dfe3641ba1c8818267717
parent0105b0562a5ed6374f06e5cd4246a3f1311a65a0
io_uring: introduce non-circular SQ

Outside of SQPOLL, normally SQ entries are consumed by the time the
submission syscall returns. For those cases we don't need a circular
buffer and the head/tail tracking, instead the kernel can assume that
entries always start from the beginning of the SQ at index 0. This patch
introduces a setup flag doing exactly that. It's a simpler and helps
to keeps SQEs hot in cache.

The feature is optional and enabled by setting IORING_SETUP_SQ_REWIND.
The flag is rejected if passed together with SQPOLL as it'd require
waiting for SQ before each submission. It also requires
IORING_SETUP_NO_SQARRAY, which can be supported but it's unlikely there
will be users, so leave more space for future optimisations.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/uapi/linux/io_uring.h
io_uring/io_uring.c
io_uring/io_uring.h