diff options
| -rw-r--r-- | block/blk-mq.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/block/blk-mq.c b/block/blk-mq.c index 78324a2f0e10..2f95747c287e 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c | |||
| @@ -625,8 +625,17 @@ static void blk_mq_check_expired(struct blk_mq_hw_ctx *hctx, | |||
| 625 | { | 625 | { |
| 626 | struct blk_mq_timeout_data *data = priv; | 626 | struct blk_mq_timeout_data *data = priv; |
| 627 | 627 | ||
| 628 | if (!test_bit(REQ_ATOM_STARTED, &rq->atomic_flags)) | 628 | if (!test_bit(REQ_ATOM_STARTED, &rq->atomic_flags)) { |
| 629 | /* | ||
| 630 | * If a request wasn't started before the queue was | ||
| 631 | * marked dying, kill it here or it'll go unnoticed. | ||
| 632 | */ | ||
| 633 | if (unlikely(blk_queue_dying(rq->q))) { | ||
| 634 | rq->errors = -EIO; | ||
| 635 | blk_mq_complete_request(rq); | ||
| 636 | } | ||
| 629 | return; | 637 | return; |
| 638 | } | ||
| 630 | if (rq->cmd_flags & REQ_NO_TIMEOUT) | 639 | if (rq->cmd_flags & REQ_NO_TIMEOUT) |
| 631 | return; | 640 | return; |
| 632 | 641 | ||
