]> git.baikalelectronics.ru Git - kernel.git/commit
io_uring: optimise putting task struct
authorPavel Begunkov <asml.silence@gmail.com>
Mon, 9 Aug 2021 12:04:20 +0000 (13:04 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 23 Aug 2021 19:08:06 +0000 (13:08 -0600)
commit766ba45896551be36b709a1f92d8e9a6eedb9153
tree7de722898f1f55dacfed8d7fc938763ab931f7b5
parenta61e555cfabb6d1add42f4c584816d5478578736
io_uring: optimise putting task struct

We cache all the reference to task + tctx, so if io_put_task() is
called by the corresponding task itself, we can save on atomics and
return the refs right back into the cache.

It's beneficial for all inline completions, and also iopolling, when
polling and submissions are done by the same task, including
SQPOLL|IOPOLL.

Note: io_uring_cancel_generic() can return refs to the cache as well,
so those should be flushed in the loop for tctx_inflight() to work
right.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/6fe9646b3cb70e46aca1f58426776e368c8926b3.1628471125.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c