Merge branch 'for-3.18/core' of git://git.kernel.dk/linux-block
[platform/kernel/linux-starfive.git] / block / blk-mq.c
index 79aa11b..68929ba 100644 (file)
@@ -1815,7 +1815,12 @@ struct request_queue *blk_mq_init_queue(struct blk_mq_tag_set *set)
        if (!q)
                goto err_hctxs;
 
-       if (percpu_ref_init(&q->mq_usage_counter, blk_mq_usage_counter_release))
+       /*
+        * Init percpu_ref in atomic mode so that it's faster to shutdown.
+        * See blk_register_queue() for details.
+        */
+       if (percpu_ref_init(&q->mq_usage_counter, blk_mq_usage_counter_release,
+                           PERCPU_REF_INIT_ATOMIC, GFP_KERNEL))
                goto err_map;
 
        setup_timer(&q->timeout, blk_mq_rq_timer, (unsigned long) q);