io_uring: optimise initial ltimeout refcounting
authorPavel Begunkov <asml.silence@gmail.com>
Sun, 15 Aug 2021 09:40:20 +0000 (10:40 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 23 Aug 2021 19:10:37 +0000 (13:10 -0600)
Linked timeouts are never refcounted when it comes to the first call to
__io_prep_linked_timeout(), so save an io_ref_get() and set the desired
value directly.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/177b24cc62ffbb42d915d6eb9e8876266e4c0d5a.1628981736.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c

index 5b95ab6..005fc06 100644 (file)
@@ -1312,8 +1312,7 @@ static struct io_kiocb *__io_prep_linked_timeout(struct io_kiocb *req)
 
        /* linked timeouts should have two refs once prep'ed */
        io_req_set_refcount(req);
-       io_req_set_refcount(nxt);
-       req_ref_get(nxt);
+       __io_req_set_refcount(nxt, 2);
 
        nxt->timeout.head = req;
        nxt->flags |= REQ_F_LTIMEOUT_ACTIVE;