From: Christoph Hellwig Date: Tue, 11 Feb 2014 16:27:13 +0000 (-0800) Subject: blk-mq: dont assume rq->errors is set when returning an error from ->queue_rq X-Git-Tag: v3.14-rc3~22^2~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1e93b8c274268038c93763dca65a73b42a081e10;p=profile%2Fcommon%2Fkernel-common.git 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 Signed-off-by: Jens Axboe --- diff --git a/block/blk-mq.c b/block/blk-mq.c index a59b056..0480710 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) break; default: pr_err("blk-mq: bad return on queue: %d\n", ret); - rq->errors = -EIO; case BLK_MQ_RQ_QUEUE_ERROR: + rq->errors = -EIO; blk_mq_end_io(rq, rq->errors); break; }