[PATCH] nvme-core: initialize status to NVME_SC_HOST_PATH_ERROR
Yuanyuan Zhong
yzhong at purestorage.com
Tue Apr 13 00:45:43 BST 2021
Block layer blk_end_sync_rq() silently drops blk_status_t error.
When ->queue_rq returns error, nvme driver should set nvme status
explicitly. Otherwise the passthrough command may take the stale
status as result. A typical value zero will be interpreted as
NVME_SC_SUCCESS, despite the dispatching error from ->queue_rq.
Instead of trying to fix it for every error return, this change
initialize the status to NVME_SC_HOST_PATH_ERROR during
nvme_alloc_request().
Fixes: 27fa9bc54541 ("nvme: split nvme status from block req->errors")
Signed-off-by: Yuanyuan Zhong <yzhong at purestorage.com>
Signed-off-by: Casey Chen <cachen at purestorage.com>
---
drivers/nvme/host/core.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 0896e21642be..f22323d02755 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -580,6 +580,7 @@ static inline void nvme_clear_nvme_request(struct request *req)
nvme_req(req)->flags = 0;
req->rq_flags |= RQF_DONTPREP;
}
+ nvme_req(req)->status = NVME_SC_HOST_PATH_ERROR;
}
static inline unsigned int nvme_req_op(struct nvme_command *cmd)
--
2.31.1
More information about the Linux-nvme
mailing list