io_uring: kill io_msg_alloc_async_prep()
authorJens Axboe <axboe@kernel.dk>
Mon, 18 Mar 2024 16:07:37 +0000 (10:07 -0600)
committerJens Axboe <axboe@kernel.dk>
Mon, 15 Apr 2024 14:10:25 +0000 (08:10 -0600)
We now ONLY call io_msg_alloc_async() from inside prep handling, which
is always locked. No need for this helper anymore, or the check in
io_msg_alloc_async() on whether the ring is locked or not.

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

index a57b15e..77f2eb7 100644 (file)
@@ -129,22 +129,19 @@ static void io_netmsg_recycle(struct io_kiocb *req, unsigned int issue_flags)
        }
 }
 
-static struct io_async_msghdr *io_msg_alloc_async(struct io_kiocb *req,
-                                                 unsigned int issue_flags)
+static struct io_async_msghdr *io_msg_alloc_async(struct io_kiocb *req)
 {
        struct io_ring_ctx *ctx = req->ctx;
        struct io_cache_entry *entry;
        struct io_async_msghdr *hdr;
 
-       if (!(issue_flags & IO_URING_F_UNLOCKED)) {
-               entry = io_alloc_cache_get(&ctx->netmsg_cache);
-               if (entry) {
-                       hdr = container_of(entry, struct io_async_msghdr, cache);
-                       hdr->free_iov = NULL;
-                       req->flags |= REQ_F_ASYNC_DATA;
-                       req->async_data = hdr;
-                       return hdr;
-               }
+       entry = io_alloc_cache_get(&ctx->netmsg_cache);
+       if (entry) {
+               hdr = container_of(entry, struct io_async_msghdr, cache);
+               hdr->free_iov = NULL;
+               req->flags |= REQ_F_ASYNC_DATA;
+               req->async_data = hdr;
+               return hdr;
        }
 
        if (!io_alloc_async_data(req)) {
@@ -155,12 +152,6 @@ static struct io_async_msghdr *io_msg_alloc_async(struct io_kiocb *req,
        return NULL;
 }
 
-static inline struct io_async_msghdr *io_msg_alloc_async_prep(struct io_kiocb *req)
-{
-       /* ->prep_async is always called from the submission context */
-       return io_msg_alloc_async(req, 0);
-}
-
 #ifdef CONFIG_COMPAT
 static int io_compat_msg_copy_hdr(struct io_kiocb *req,
                                  struct io_async_msghdr *iomsg,
@@ -328,8 +319,7 @@ static int io_sendmsg_prep_setup(struct io_kiocb *req, int is_msg)
        struct io_async_msghdr *kmsg;
        int ret;
 
-       /* always locked for prep */
-       kmsg = io_msg_alloc_async(req, 0);
+       kmsg = io_msg_alloc_async(req);
        if (unlikely(!kmsg))
                return -ENOMEM;
        if (!is_msg)
@@ -550,8 +540,7 @@ static int io_recvmsg_prep_setup(struct io_kiocb *req)
        struct io_async_msghdr *kmsg;
        int ret;
 
-       /* always locked for prep */
-       kmsg = io_msg_alloc_async(req, 0);
+       kmsg = io_msg_alloc_async(req);
        if (unlikely(!kmsg))
                return -ENOMEM;