diff --git a/block/blk-core.c b/block/blk-core.c
index fa212348c4c96df59b41325259d2215eed12abd6..c66333d8e48d168e044d0d3a1c9113b3b2a9fc27 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -890,9 +890,11 @@ EXPORT_SYMBOL(blk_get_request);
  */
 void blk_start_queueing(struct request_queue *q)
 {
-	if (!blk_queue_plugged(q))
+	if (!blk_queue_plugged(q)) {
+		if (unlikely(blk_queue_stopped(q)))
+			return;
 		q->request_fn(q);
-	else
+	} else
 		__generic_unplug_device(q);
 }
 EXPORT_SYMBOL(blk_start_queueing);