|
@@ -2157,12 +2157,7 @@ static void blk_mq_exit_hctx(struct request_queue *q,
|
|
|
if (set->ops->exit_hctx)
|
|
if (set->ops->exit_hctx)
|
|
|
set->ops->exit_hctx(hctx, hctx_idx);
|
|
set->ops->exit_hctx(hctx, hctx_idx);
|
|
|
|
|
|
|
|
- if (hctx->flags & BLK_MQ_F_BLOCKING)
|
|
|
|
|
- cleanup_srcu_struct(hctx->srcu);
|
|
|
|
|
-
|
|
|
|
|
blk_mq_remove_cpuhp(hctx);
|
|
blk_mq_remove_cpuhp(hctx);
|
|
|
- blk_free_flush_queue(hctx->fq);
|
|
|
|
|
- sbitmap_free(&hctx->ctx_map);
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
static void blk_mq_exit_hw_queues(struct request_queue *q,
|
|
static void blk_mq_exit_hw_queues(struct request_queue *q,
|
|
@@ -2662,7 +2657,8 @@ err_exit:
|
|
|
}
|
|
}
|
|
|
EXPORT_SYMBOL(blk_mq_init_allocated_queue);
|
|
EXPORT_SYMBOL(blk_mq_init_allocated_queue);
|
|
|
|
|
|
|
|
-void blk_mq_free_queue(struct request_queue *q)
|
|
|
|
|
|
|
+/* tags can _not_ be used after returning from blk_mq_exit_queue */
|
|
|
|
|
+void blk_mq_exit_queue(struct request_queue *q)
|
|
|
{
|
|
{
|
|
|
struct blk_mq_tag_set *set = q->tag_set;
|
|
struct blk_mq_tag_set *set = q->tag_set;
|
|
|
|
|
|