io_uring: enable inline completion for more cases
authorPavel Begunkov <asml.silence@gmail.com>
Sun, 11 Apr 2021 00:46:29 +0000 (01:46 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 12 Apr 2021 01:30:41 +0000 (19:30 -0600)
Take advantage of delayed/inline completion flushing and pass right
issue flags for completion of open, open2, fadvise and poll remove
opcodes. All others either already use it or always punted and never
executed inline.

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

index f886a5b2ea57abee00113e6548721e7e6bef3d78..9aaf3233961ed0f7b6bbd6bbd43120c864831568 100644 (file)
@@ -3845,7 +3845,7 @@ err:
        req->flags &= ~REQ_F_NEED_CLEANUP;
        if (ret < 0)
                req_set_fail_links(req);
-       io_req_complete(req, ret);
+       __io_req_complete(req, issue_flags, ret, 0);
        return 0;
 }
 
@@ -4123,7 +4123,7 @@ static int io_fadvise(struct io_kiocb *req, unsigned int issue_flags)
        ret = vfs_fadvise(req->file, fa->offset, fa->len, fa->advice);
        if (ret < 0)
                req_set_fail_links(req);
-       io_req_complete(req, ret);
+       __io_req_complete(req, issue_flags, ret, 0);
        return 0;
 }
 
@@ -5319,7 +5319,7 @@ static int io_poll_remove(struct io_kiocb *req, unsigned int issue_flags)
 
        if (ret < 0)
                req_set_fail_links(req);
-       io_req_complete(req, ret);
+       __io_req_complete(req, issue_flags, ret, 0);
        return 0;
 }