|
@@ -1064,18 +1064,23 @@ void blk_mq_start_hw_queues(struct request_queue *q)
|
|
|
}
|
|
|
EXPORT_SYMBOL(blk_mq_start_hw_queues);
|
|
|
|
|
|
+void blk_mq_start_stopped_hw_queue(struct blk_mq_hw_ctx *hctx, bool async)
|
|
|
+{
|
|
|
+ if (!blk_mq_hctx_stopped(hctx))
|
|
|
+ return;
|
|
|
+
|
|
|
+ clear_bit(BLK_MQ_S_STOPPED, &hctx->state);
|
|
|
+ blk_mq_run_hw_queue(hctx, async);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(blk_mq_start_stopped_hw_queue);
|
|
|
+
|
|
|
void blk_mq_start_stopped_hw_queues(struct request_queue *q, bool async)
|
|
|
{
|
|
|
struct blk_mq_hw_ctx *hctx;
|
|
|
int i;
|
|
|
|
|
|
- queue_for_each_hw_ctx(q, hctx, i) {
|
|
|
- if (!blk_mq_hctx_stopped(hctx))
|
|
|
- continue;
|
|
|
-
|
|
|
- clear_bit(BLK_MQ_S_STOPPED, &hctx->state);
|
|
|
- blk_mq_run_hw_queue(hctx, async);
|
|
|
- }
|
|
|
+ queue_for_each_hw_ctx(q, hctx, i)
|
|
|
+ blk_mq_start_stopped_hw_queue(hctx, async);
|
|
|
}
|
|
|
EXPORT_SYMBOL(blk_mq_start_stopped_hw_queues);
|
|
|
|