On 2022/11/10 1:35, Mike Christie wrote:
On 11/9/22 2:28 AM, Chao Leng wrote:
On 2022/11/9 11:11, Mike Christie wrote:
This converts the NVMe errors we could see during PR handling to PT_STS
errors, so pr_ops callers can handle scsi and nvme errors without knowing
the device types.
Signed-off-by: Mike Christie <michael.christie@xxxxxxxxxx>
---
drivers/nvme/host/core.c | 42 ++++++++++++++++++++++++++++++++++++++--
1 file changed, 40 insertions(+), 2 deletions(-)
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index dc4220600585..8f0177045a2f 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -2104,11 +2104,43 @@ static int nvme_send_ns_pr_command(struct nvme_ns *ns, struct nvme_command *c,
return nvme_submit_sync_cmd(ns->queue, c, data, 16);
}
+static enum pr_status nvme_sc_to_pr_status(int nvme_sc)
+{
+ enum pr_status sts;
+
+ switch (nvme_sc) {
+ case NVME_SC_SUCCESS:
+ sts = PR_STS_SUCCESS;
+ break;
+ case NVME_SC_RESERVATION_CONFLICT:
+ sts = PR_STS_RESERVATION_CONFLICT;
+ break;
+ case NVME_SC_HOST_PATH_ERROR:
+ sts = PR_STS_PATH_FAILED;
All path-related errors should be considered.
Will do. Just one question.
I didn't see NVME_SC_CTRL_PATH_ERROR and NVME_SC_INTERNAL_PATH_ERROR
being used. Are they retryable errors?
These two types of errors depend on the implementation of the target.
All in all, the request with path-related error should fail over to retry successfully.