• Pavel Begunkov's avatar
    io_uring: link requests with singly linked list · f2f87370
    Pavel Begunkov authored
    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: default avatarPavel Begunkov <asml.silence@gmail.com>
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    f2f87370
io_uring.c 240 KB