io_uring: put flag checking for needing req cleanup in one spot
authorJens Axboe <axboe@kernel.dk>
Thu, 15 Apr 2021 23:44:34 +0000 (17:44 -0600)
committerJens Axboe <axboe@kernel.dk>
Fri, 16 Apr 2021 15:45:47 +0000 (09:45 -0600)
We have this in two spots right now, which is a bit fragile. In
preparation for moving REQ_F_POLLED cleanup into the same spot, move
the check into a separate helper so we only have it once.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
fs/io_uring.c

index 4803e31e93012b8e12494d0a64a7034b00132054..8e6dcb69f3e9697ecde8290f91bce371842e14ff 100644 (file)
@@ -1598,10 +1598,15 @@ static void io_req_complete_post(struct io_kiocb *req, long res,
        }
 }
 
+static inline bool io_req_needs_clean(struct io_kiocb *req)
+{
+       return req->flags & (REQ_F_BUFFER_SELECTED | REQ_F_NEED_CLEANUP);
+}
+
 static void io_req_complete_state(struct io_kiocb *req, long res,
                                  unsigned int cflags)
 {
-       if (req->flags & (REQ_F_NEED_CLEANUP | REQ_F_BUFFER_SELECTED))
+       if (io_req_needs_clean(req))
                io_clean_op(req);
        req->result = res;
        req->compl.cflags = cflags;
@@ -1713,10 +1718,8 @@ static void io_dismantle_req(struct io_kiocb *req)
 
        if (!(flags & REQ_F_FIXED_FILE))
                io_put_file(req->file);
-       if (flags & (REQ_F_NEED_CLEANUP | REQ_F_BUFFER_SELECTED |
-                    REQ_F_INFLIGHT)) {
+       if (io_req_needs_clean(req) || (req->flags & REQ_F_INFLIGHT)) {
                io_clean_op(req);
-
                if (req->flags & REQ_F_INFLIGHT) {
                        struct io_uring_task *tctx = req->task->io_uring;