[PATCH v4 5/5] nvme-fc: avoid IO error for nvme native multipath
Chao Leng
lengchao at huawei.com
Tue Jan 26 03:15:39 EST 2021
Work with nvme native multipath, if a path related error occurs when
queue_rq call HBA drive to send request, queue_rq will return
BLK_STS_IOERR to blk-mq. The request is completed with BLK_STS_IOERR
instead of fail over to retry.
queue_rq need call nvme_complete_rq to complete the request with
NVME_SC_HOST_PATH_ERROR, the request will fail over to retry if needed.
Signed-off-by: Chao Leng <lengchao at huawei.com>
---
drivers/nvme/host/fc.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
index 5f36cfa8136c..400a5638d68a 100644
--- a/drivers/nvme/host/fc.c
+++ b/drivers/nvme/host/fc.c
@@ -2791,7 +2791,12 @@ nvme_fc_queue_rq(struct blk_mq_hw_ctx *hctx,
}
- return nvme_fc_start_fcp_op(ctrl, queue, op, data_len, io_dir);
+ ret = nvme_fc_start_fcp_op(ctrl, queue, op, data_len, io_dir);
+ if (ret == BLK_STS_IOERR) {
+ nvme_complete_failed_rq(rq, NVME_SC_HOST_PATH_ERROR);
+ ret = BLK_STS_OK;
+ }
+ return ret;
}
static void
--
2.16.4
More information about the Linux-nvme
mailing list