io_uring: refactor io_poll_complete()
authorPavel Begunkov <asml.silence@gmail.com>
Fri, 9 Apr 2021 08:13:20 +0000 (09:13 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 12 Apr 2021 01:30:40 +0000 (19:30 -0600)
Remove error parameter from io_poll_complete(), 0 is always passed,
and do a bit of cleaning on top.

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

index 33bb1431308420f3835d4ec1ecde4907a874378e..88c94627c74309fb15b52ce15248d27156039f22 100644 (file)
@@ -4894,18 +4894,19 @@ static void io_poll_remove_double(struct io_kiocb *req)
        }
 }
 
-static bool io_poll_complete(struct io_kiocb *req, __poll_t mask, int error)
+static bool io_poll_complete(struct io_kiocb *req, __poll_t mask)
        __must_hold(&req->ctx->completion_lock)
 {
        struct io_ring_ctx *ctx = req->ctx;
        unsigned flags = IORING_CQE_F_MORE;
+       int error;
 
-       if (!error && req->poll.canceled) {
+       if (READ_ONCE(req->poll.canceled)) {
                error = -ECANCELED;
                req->poll.events |= EPOLLONESHOT;
-       }
-       if (!error)
+       } else {
                error = mangle_poll(mask);
+       }
        if (req->poll.events & EPOLLONESHOT)
                flags = 0;
        if (!__io_cqring_fill_event(req, error, flags)) {
@@ -4928,7 +4929,7 @@ static void io_poll_task_func(struct callback_head *cb)
        } else {
                bool done;
 
-               done = io_poll_complete(req, req->result, 0);
+               done = io_poll_complete(req, req->result);
                if (done) {
                        hash_del(&req->hash_node);
                } else {
@@ -5414,7 +5415,7 @@ static int __io_poll_add(struct io_kiocb *req)
 
        if (mask) { /* no async, we'd stolen it */
                ipt.error = 0;
-               io_poll_complete(req, mask, 0);
+               io_poll_complete(req, mask);
        }
        spin_unlock_irq(&ctx->completion_lock);