Work with nvme native multipath, if a path related error occurs when queue_rq call HBA drive to send request, queue_rq need complete the request with NVME_SC_HOST_PATH_ERROR, the request will fail over to retry if needed. So introduce nvme_complete_failed_req for queue_rq and nvmf_fail_nonready_command. Signed-off-by: Chao Leng <lengchao@xxxxxxxxxx> --- drivers/nvme/host/nvme.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h index 88a6b97247f5..01fb54ba3d1f 100644 --- a/drivers/nvme/host/nvme.h +++ b/drivers/nvme/host/nvme.h @@ -575,6 +575,14 @@ static inline bool nvme_is_aen_req(u16 qid, __u16 command_id) } void nvme_complete_rq(struct request *req); + +static inline void nvme_complete_failed_req(struct request *req) +{ + nvme_req(req)->status = NVME_SC_HOST_PATH_ERROR; + blk_mq_set_request_complete(req); + nvme_complete_rq(req); +} + bool nvme_cancel_request(struct request *req, void *data, bool reserved); bool nvme_change_ctrl_state(struct nvme_ctrl *ctrl, enum nvme_ctrl_state new_state); -- 2.16.4