]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commit
io_uring: link requests with singly linked list
authorPavel Begunkov <asml.silence@gmail.com>
Tue, 27 Oct 2020 23:25:37 +0000 (23:25 +0000)
committerJens Axboe <axboe@kernel.dk>
Wed, 9 Dec 2020 19:03:59 +0000 (12:03 -0700)
commitf2f87370bb6664e5babb6705e886cfb340f163e1
tree95fd079b822a78a7b71e31951603c8114c866cca
parent90cd7e424969d29aff653333b4dcb4e2e199d791
io_uring: link requests with singly linked list

Singly linked list for keeping linked requests is enough, because we
almost always operate on the head and traverse forward with the
exception of linked timeouts going 1 hop backwards.

Replace ->link_list with a handmade singly linked list. Also kill
REQ_F_LINK_HEAD in favour of checking a newly added ->list for NULL
directly.

That saves 8B in io_kiocb, is not as heavy as list fixup, makes better
use of cache by not touching a previous request (i.e. last request of
the link) each time on list modification and optimises cache use further
in the following patch, and actually makes travesal easier removing in
the end some lines. Also, keeping invariant in ->list instead of having
REQ_F_LINK_HEAD is less error-prone.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c