io_uring: lockless task list
authorDylan Yudaken <dylany@fb.com>
Wed, 22 Jun 2022 13:40:23 +0000 (06:40 -0700)
committerJens Axboe <axboe@kernel.dk>
Thu, 21 Jul 2022 14:44:34 +0000 (08:44 -0600)
commitdca6cd4188f036fef9dd134fba7bb2ef954193b2
tree22efab0452bd09e2326b4949541a8029450a7162
parent46b0878d891b75b12e943b02a4c87bc144a53991
io_uring: lockless task list

With networking use cases we see contention on the spinlock used to
protect the task_list when multiple threads try and add completions at once.
Instead we can use a lockless list, and assume that the first caller to
add to the list is responsible for kicking off task work.

Signed-off-by: Dylan Yudaken <dylany@fb.com>
Link: https://lore.kernel.org/r/20220622134028.2013417-4-dylany@fb.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
include/linux/io_uring_types.h
io_uring/io_uring.c
io_uring/tctx.c
io_uring/tctx.h