block: simplify ioc_create_icq
authorChristoph Hellwig <hch@lst.de>
Fri, 26 Nov 2021 11:58:16 +0000 (12:58 +0100)
committerJens Axboe <axboe@kernel.dk>
Mon, 29 Nov 2021 13:41:29 +0000 (06:41 -0700)
Remove the ioc and gfp_mask argument, which are hard coded by the caller.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20211126115817.2087431-14-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-ioc.c

index 5bfe810..c56648f 100644 (file)
@@ -389,9 +389,7 @@ EXPORT_SYMBOL(ioc_lookup_icq);
 
 /**
  * ioc_create_icq - create and link io_cq
- * @ioc: io_context of interest
  * @q: request_queue of interest
- * @gfp_mask: allocation mask
  *
  * Make sure io_cq linking @ioc and @q exists.  If icq doesn't exist, they
  * will be created using @gfp_mask.
@@ -399,19 +397,19 @@ EXPORT_SYMBOL(ioc_lookup_icq);
  * The caller is responsible for ensuring @ioc won't go away and @q is
  * alive and will stay alive until this function returns.
  */
-static struct io_cq *ioc_create_icq(struct io_context *ioc,
-               struct request_queue *q, gfp_t gfp_mask)
+static struct io_cq *ioc_create_icq(struct request_queue *q)
 {
+       struct io_context *ioc = current->io_context;
        struct elevator_type *et = q->elevator->type;
        struct io_cq *icq;
 
        /* allocate stuff */
-       icq = kmem_cache_alloc_node(et->icq_cache, gfp_mask | __GFP_ZERO,
+       icq = kmem_cache_alloc_node(et->icq_cache, GFP_ATOMIC | __GFP_ZERO,
                                    q->node);
        if (!icq)
                return NULL;
 
-       if (radix_tree_maybe_preload(gfp_mask) < 0) {
+       if (radix_tree_maybe_preload(GFP_ATOMIC) < 0) {
                kmem_cache_free(et->icq_cache, icq);
                return NULL;
        }
@@ -461,7 +459,7 @@ struct io_cq *ioc_find_get_icq(struct request_queue *q)
        }
 
        if (!icq) {
-               icq = ioc_create_icq(ioc, q, GFP_ATOMIC);
+               icq = ioc_create_icq(q);
                if (!icq) {
                        put_io_context(ioc);
                        return NULL;