io_uring/rsrc: skip atomic refcount for uncloned buffers
authorCaleb Sander Mateos <csander@purestorage.com>
Thu, 19 Jun 2025 14:34:34 +0000 (08:34 -0600)
committerJens Axboe <axboe@kernel.dk>
Wed, 2 Jul 2025 23:11:23 +0000 (17:11 -0600)
commitdaa01d954b13a178c216b6a91f8451a7b83b3bf6
tree89cf9e2ee9c1b4f26425319cd7b91692178485fb
parente448d578264a9512d38deb8c418954d5f3e20712
io_uring/rsrc: skip atomic refcount for uncloned buffers

io_buffer_unmap() performs an atomic decrement of the io_mapped_ubuf's
reference count in case it has been cloned into another io_ring_ctx's
registered buffer table. This is an expensive operation and unnecessary
in the common case that the io_mapped_ubuf is only registered once.
Load the reference count first and check whether it's 1. In that case,
skip the atomic decrement and immediately free the io_mapped_ubuf.

Signed-off-by: Caleb Sander Mateos <csander@purestorage.com>
Link: https://lore.kernel.org/r/20250619143435.3474028-1-csander@purestorage.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/rsrc.c