diff options
author | Christoph Hellwig | 2014-02-11 10:27:13 -0600 |
---|---|---|
committer | Jens Axboe | 2014-02-11 10:34:07 -0600 |
commit | 1e93b8c274268038c93763dca65a73b42a081e10 (patch) | |
tree | 00501165614b830295c7b8a97f62b00abc9b702c /block | |
parent | 8423ae3d7a3cfe084865262cfaeba1359d405182 (diff) | |
download | linux-phy-1e93b8c274268038c93763dca65a73b42a081e10.tar.gz linux-phy-1e93b8c274268038c93763dca65a73b42a081e10.tar.xz linux-phy-1e93b8c274268038c93763dca65a73b42a081e10.zip |
blk-mq: dont assume rq->errors is set when returning an error from ->queue_rq
rq->errors never has been part of the communication protocol between drivers
and the block stack and most drivers will not have initialized it.
Return -EIO to upper layers when the driver returns BLK_MQ_RQ_QUEUE_ERROR
unconditionally. If a driver want to return a different error it can easily
do so by returning success after calling blk_mq_end_io itself.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-mq.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/block/blk-mq.c b/block/blk-mq.c index a59b0565e940..0480710a8b45 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c | |||
@@ -605,8 +605,8 @@ static void __blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx) | |||
605 | break; | 605 | break; |
606 | default: | 606 | default: |
607 | pr_err("blk-mq: bad return on queue: %d\n", ret); | 607 | pr_err("blk-mq: bad return on queue: %d\n", ret); |
608 | rq->errors = -EIO; | ||
609 | case BLK_MQ_RQ_QUEUE_ERROR: | 608 | case BLK_MQ_RQ_QUEUE_ERROR: |
609 | rq->errors = -EIO; | ||
610 | blk_mq_end_io(rq, rq->errors); | 610 | blk_mq_end_io(rq, rq->errors); |
611 | break; | 611 | break; |
612 | } | 612 | } |