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>
This commit is contained in:
parent
8423ae3d7a
commit
1e93b8c274
|
@ -605,8 +605,8 @@ static void __blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
pr_err("blk-mq: bad return on queue: %d\n", ret);
|
pr_err("blk-mq: bad return on queue: %d\n", ret);
|
||||||
rq->errors = -EIO;
|
|
||||||
case BLK_MQ_RQ_QUEUE_ERROR:
|
case BLK_MQ_RQ_QUEUE_ERROR:
|
||||||
|
rq->errors = -EIO;
|
||||||
blk_mq_end_io(rq, rq->errors);
|
blk_mq_end_io(rq, rq->errors);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue