io_uring: clean io_req_find_next() fast check
authorPavel Begunkov <asml.silence@gmail.com>
Fri, 12 Feb 2021 18:41:16 +0000 (18:41 +0000)
committerJens Axboe <axboe@kernel.dk>
Fri, 12 Feb 2021 18:49:49 +0000 (11:49 -0700)
Indirectly io_req_find_next() is called for every request, optimise the
check by testing flags as it was long before -- __io_req_find_next()
tolerates false-positives well (i.e. link==NULL), and those should be
really rare.

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

index 66bbb0d..776531f 100644 (file)
@@ -2172,7 +2172,7 @@ static struct io_kiocb *__io_req_find_next(struct io_kiocb *req)
 
 static inline struct io_kiocb *io_req_find_next(struct io_kiocb *req)
 {
-       if (likely(!(req->link) && !(req->flags & REQ_F_LINK_TIMEOUT)))
+       if (likely(!(req->flags & (REQ_F_LINK|REQ_F_HARDLINK))))
                return NULL;
        return __io_req_find_next(req);
 }