diff --git a/block/blk.h b/block/blk.h index 1f798b5a6f1..d6586287adc 100644 --- a/block/blk.h +++ b/block/blk.h @@ -61,6 +61,7 @@ static inline struct request *__elv_next_request(struct request_queue *q) rq = list_entry_rq(q->queue_head.next); return rq; } + /* * Flush request is running and flush request isn't queueable * in the drive, we can hold the queue till flush request is @@ -81,7 +82,8 @@ static inline struct request *__elv_next_request(struct request_queue *q) q->flush_queue_delayed = 1; return NULL; } - if (!q->elevator->ops->elevator_dispatch_fn(q, 0)) + if (test_bit(QUEUE_FLAG_DEAD, &q->queue_flags) || + !q->elevator->ops->elevator_dispatch_fn(q, 0)) return NULL; } }