io_uring/uring_cmd: Allocate async data through generic helper
authorGabriel Krisman Bertazi <krisman@suse.de>
Mon, 16 Dec 2024 20:46:11 +0000 (15:46 -0500)
committerJens Axboe <axboe@kernel.dk>
Fri, 27 Dec 2024 17:07:41 +0000 (10:07 -0700)
This abstracts away the cache details and simplify the code.

Signed-off-by: Gabriel Krisman Bertazi <krisman@suse.de>
Link: https://lore.kernel.org/r/20241216204615.759089-6-krisman@suse.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/uring_cmd.c

index af842e9b4eb975ba56aaeaaa0c2e207a7732beba..d6ff803dbbe16bf10b429259daed0896121b6567 100644 (file)
 #include "rsrc.h"
 #include "uring_cmd.h"
 
-static struct uring_cache *io_uring_async_get(struct io_kiocb *req)
-{
-       struct io_ring_ctx *ctx = req->ctx;
-       struct uring_cache *cache;
-
-       cache = io_alloc_cache_get(&ctx->uring_cache);
-       if (cache) {
-               req->flags |= REQ_F_ASYNC_DATA;
-               req->async_data = cache;
-               return cache;
-       }
-       if (!io_alloc_async_data(req))
-               return req->async_data;
-       return NULL;
-}
-
 static void io_req_uring_cleanup(struct io_kiocb *req, unsigned int issue_flags)
 {
        struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd);
@@ -185,8 +169,8 @@ static int io_uring_cmd_prep_setup(struct io_kiocb *req,
        struct io_uring_cmd *ioucmd = io_kiocb_to_cmd(req, struct io_uring_cmd);
        struct uring_cache *cache;
 
-       cache = io_uring_async_get(req);
-       if (unlikely(!cache))
+       cache = io_uring_alloc_async_data(&req->ctx->uring_cache, req, NULL);
+       if (!cache)
                return -ENOMEM;
 
        if (!(req->flags & REQ_F_FORCE_ASYNC)) {