Signed-off-by: Jianpeng Ma <majianpeng@xxxxxxxxx> --- block/blk-core.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/block/blk-core.c b/block/blk-core.c index bf44ca0..549d83e 100644 --- a/block/blk-core.c +++ b/block/blk-core.c @@ -304,8 +304,12 @@ EXPORT_SYMBOL(__blk_run_queue); */ void blk_run_queue_async(struct request_queue *q) { - if (likely(!blk_queue_stopped(q) && !blk_queue_dead(q))) - mod_delayed_work(kblockd_workqueue, &q->delay_work, 0); + if (likely(!blk_queue_stopped(q) && !blk_queue_dead(q))) { + if (q->mq_ops) + blk_mq_run_queues(q, 1); + else + mod_delayed_work(kblockd_workqueue, &q->delay_work, 0); + } } EXPORT_SYMBOL(blk_run_queue_async); @@ -319,11 +323,14 @@ EXPORT_SYMBOL(blk_run_queue_async); */ void blk_run_queue(struct request_queue *q) { - unsigned long flags; - - spin_lock_irqsave(q->queue_lock, flags); - __blk_run_queue(q); - spin_unlock_irqrestore(q->queue_lock, flags); + if (q->mq_ops) + blk_mq_run_queues(q, 0); + else { + unsigned long flags; + spin_lock_irqsave(q->queue_lock, flags); + __blk_run_queue(q); + spin_unlock_irqrestore(q->queue_lock, flags); + } } EXPORT_SYMBOL(blk_run_queue); -- 1.7.10.4 ÿôèº{.nÇ+?·?®??+%?Ëÿ±éݶ¥?wÿº{.nÇ+?·¥?{±þÇ,?ø§¶?¡Ü¨}©?²Æ zÚ&j:+v?¨þø¯ù®w¥þ?à2?Þ?¨èÚ&¢)ß¡«a¶Úÿÿûàz¿äz¹Þ?ú+?ù???Ý¢jÿ?wèþf