[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250903032656.2012337-1-csander@purestorage.com>
Date: Tue, 2 Sep 2025 21:26:52 -0600
From: Caleb Sander Mateos <csander@...estorage.com>
To: Jens Axboe <axboe@...nel.dk>
Cc: io-uring@...r.kernel.org,
linux-kernel@...r.kernel.org,
Caleb Sander Mateos <csander@...estorage.com>
Subject: [PATCH 0/4] io_uring: avoid uring_lock for IORING_SETUP_SINGLE_ISSUER
As far as I can tell, setting IORING_SETUP_SINGLE_ISSUER when creating
an io_uring doesn't actually enable any additional optimizations (aside
from being a requirement for IORING_SETUP_DEFER_TASKRUN). This series
leverages IORING_SETUP_SINGLE_ISSUER's guarantee that only one task
submits SQEs to skip taking the uring_lock mutex in the submission and
task work paths.
First, we need to close a hole in the IORING_SETUP_SINGLE_ISSUER checks
where IORING_REGISTER_CLONE_BUFFERS only checks whether the thread is
allowed to access one of the two io_urings. It assumes the uring_lock
will prevent concurrent access to the other io_uring, but this will no
longer be the case after the optimization to skip taking uring_lock.
We also need to remove the unused filetable.h #include from io_uring.h
to avoid an #include cycle.
Caleb Sander Mateos (4):
io_uring: don't include filetable.h in io_uring.h
io_uring/rsrc: respect submitter_task in io_register_clone_buffers()
io_uring: factor out uring_lock helpers
io_uring: avoid uring_lock for IORING_SETUP_SINGLE_ISSUER
io_uring/cancel.c | 1 +
io_uring/fdinfo.c | 2 +-
io_uring/filetable.c | 3 ++-
io_uring/io_uring.c | 58 +++++++++++++++++++++++++++-----------------
io_uring/io_uring.h | 43 ++++++++++++++++++++++++++------
io_uring/kbuf.c | 6 ++---
io_uring/net.c | 1 +
io_uring/notif.c | 5 ++--
io_uring/notif.h | 3 ++-
io_uring/openclose.c | 1 +
io_uring/poll.c | 2 +-
io_uring/register.c | 1 +
io_uring/rsrc.c | 10 +++++++-
io_uring/rsrc.h | 3 ++-
io_uring/rw.c | 3 ++-
io_uring/splice.c | 1 +
io_uring/waitid.c | 2 +-
17 files changed, 102 insertions(+), 43 deletions(-)
--
2.45.2
Powered by blists - more mailing lists