OSDN Git Service

io_uring: remove req->in_async
authorPavel Begunkov <asml.silence@gmail.com>
Mon, 24 Feb 2020 08:30:18 +0000 (11:30 +0300)
committerJens Axboe <axboe@kernel.dk>
Mon, 2 Mar 2020 21:04:29 +0000 (14:04 -0700)
req->in_async is not really needed, it only prevents propagation of
@nxt for fast not-blocked submissions. Remove it.

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

index 6f08521..5f2c0af 100644 (file)
@@ -551,7 +551,6 @@ struct io_kiocb {
         * llist_node is only used for poll deferred completions
         */
        struct llist_node               llist_node;
-       bool                            in_async;
        bool                            needs_fixed_file;
        u8                              opcode;
 
@@ -1973,14 +1972,13 @@ static inline void io_rw_done(struct kiocb *kiocb, ssize_t ret)
        }
 }
 
-static void kiocb_done(struct kiocb *kiocb, ssize_t ret, struct io_kiocb **nxt,
-                      bool in_async)
+static void kiocb_done(struct kiocb *kiocb, ssize_t ret, struct io_kiocb **nxt)
 {
        struct io_kiocb *req = container_of(kiocb, struct io_kiocb, rw.kiocb);
 
        if (req->flags & REQ_F_CUR_POS)
                req->file->f_pos = kiocb->ki_pos;
-       if (in_async && ret >= 0 && kiocb->ki_complete == io_complete_rw)
+       if (ret >= 0 && kiocb->ki_complete == io_complete_rw)
                *nxt = __io_complete_rw(kiocb, ret);
        else
                io_rw_done(kiocb, ret);
@@ -2271,7 +2269,7 @@ static int io_read(struct io_kiocb *req, struct io_kiocb **nxt,
 
                /* Catch -EAGAIN return for forced non-blocking submission */
                if (!force_nonblock || ret2 != -EAGAIN) {
-                       kiocb_done(kiocb, ret2, nxt, req->in_async);
+                       kiocb_done(kiocb, ret2, nxt);
                } else {
 copy_iov:
                        ret = io_setup_async_rw(req, io_size, iovec,
@@ -2385,7 +2383,7 @@ static int io_write(struct io_kiocb *req, struct io_kiocb **nxt,
                if (ret2 == -EOPNOTSUPP && (kiocb->ki_flags & IOCB_NOWAIT))
                        ret2 = -EAGAIN;
                if (!force_nonblock || ret2 != -EAGAIN) {
-                       kiocb_done(kiocb, ret2, nxt, req->in_async);
+                       kiocb_done(kiocb, ret2, nxt);
                } else {
 copy_iov:
                        ret = io_setup_async_rw(req, io_size, iovec,
@@ -4535,7 +4533,6 @@ static void io_wq_submit_work(struct io_wq_work **workptr)
        }
 
        if (!ret) {
-               req->in_async = true;
                do {
                        ret = io_issue_sqe(req, NULL, &nxt, false);
                        /*
@@ -5077,7 +5074,6 @@ fail_req:
                        *mm = ctx->sqo_mm;
                }
 
-               req->in_async = async;
                req->needs_fixed_file = async;
                trace_io_uring_submit_sqe(ctx, req->opcode, req->user_data,
                                                true, async);