[1-3] are shedding excessive locking of @wqe's and @worker's spinlocks from io_worker_handle_work(). [4] removes an extra pair of refcount get/put by making former io_put_work() to own the submission reference. It also changes io-wq get/put API and renames io_put_work() into io_free_work() to reflect it. Pavel Begunkov (4): io-wq: shuffle io_worker_handle_work() code io-wq: optimise locking in io_worker_handle_work() io-wq: optimise out *next_work() double lock io_uring/io-wq: forward submission ref to async fs/io-wq.c | 148 ++++++++++++++++++++++++++------------------------ fs/io-wq.h | 6 +- fs/io_uring.c | 31 ++++------- 3 files changed, 90 insertions(+), 95 deletions(-) -- 2.24.0