io_uring: don't duplicate io_req_task_queue()
authorPavel Begunkov <asml.silence@gmail.com>
Fri, 12 Feb 2021 03:23:53 +0000 (03:23 +0000)
committerJens Axboe <axboe@kernel.dk>
Fri, 12 Feb 2021 12:30:25 +0000 (05:30 -0700)
Don't hand code io_req_task_queue() inside of io_async_buf_func(), just
call it.

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

index 813d1cc..5c0b1a7 100644 (file)
@@ -3494,7 +3494,6 @@ static int io_async_buf_func(struct wait_queue_entry *wait, unsigned mode,
        struct wait_page_queue *wpq;
        struct io_kiocb *req = wait->private;
        struct wait_page_key *key = arg;
-       int ret;
 
        wpq = container_of(wait, struct wait_page_queue, wait);
 
@@ -3504,14 +3503,9 @@ static int io_async_buf_func(struct wait_queue_entry *wait, unsigned mode,
        req->rw.kiocb.ki_flags &= ~IOCB_WAITQ;
        list_del_init(&wait->entry);
 
-       req->task_work.func = io_req_task_submit;
-       percpu_ref_get(&req->ctx->refs);
-
        /* submit ref gets dropped, acquire a new one */
        refcount_inc(&req->refs);
-       ret = io_req_task_work_add(req);
-       if (unlikely(ret))
-               io_req_task_work_add_fallback(req, io_req_task_cancel);
+       io_req_task_queue(req);
        return 1;
 }