X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=block%2Fblk-mq.c;h=c3e461ec40e4c9ceeb7b0595bf088957354ce752;hb=55a16df2140d31fde235023ade95b9572c5386fd;hp=6d6f8feb48c08ab875e67c496193a743709b0621;hpb=c1f4a149406ce41962c6ba7d92047563f9e26e0b;p=firefly-linux-kernel-4.4.55.git diff --git a/block/blk-mq.c b/block/blk-mq.c index 6d6f8feb48c0..c3e461ec40e4 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -601,8 +601,10 @@ static void blk_mq_check_expired(struct blk_mq_hw_ctx *hctx, * If a request wasn't started before the queue was * marked dying, kill it here or it'll go unnoticed. */ - if (unlikely(blk_queue_dying(rq->q))) - blk_mq_complete_request(rq, -EIO); + if (unlikely(blk_queue_dying(rq->q))) { + rq->errors = -EIO; + blk_mq_end_request(rq, rq->errors); + } return; } if (rq->cmd_flags & REQ_NO_TIMEOUT) @@ -778,7 +780,7 @@ static void __blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx) switch (ret) { case BLK_MQ_RQ_QUEUE_OK: queued++; - continue; + break; case BLK_MQ_RQ_QUEUE_BUSY: list_add(&rq->queuelist, &rq_list); __blk_mq_requeue_request(rq);