Signed-off-by: Jianpeng Ma <majianp...@gmail.com>
---
 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

Reply via email to