Blob Blame History Raw
From: Martin Wilck <mwilck@suse.com>
Subject: nvme: return BLK_STS_TRANSPORT unless DNR for NVME_SC_NS_NOT_READY
Patch-mainline: Never, upstream uses native NVMe multipath
References: bsc#1163405

Netapp Eseries returns NVME_SC_NS_NOT_READY during reconfiguration.
Returning BLK_STS_TARGET in this case causes hard failure under dm-multipath.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Martin Wilck <mwilck@suse.com>

---
 drivers/nvme/host/core.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -241,8 +241,10 @@ static blk_status_t nvme_error_status(u1
 		return BLK_STS_NOSPC;
 	case NVME_SC_LBA_RANGE:
 	case NVME_SC_CMD_INTERRUPTED:
-	case NVME_SC_NS_NOT_READY:
 		return BLK_STS_TARGET;
+	case NVME_SC_NS_NOT_READY:
+		return status & NVME_SC_DNR ?
+			BLK_STS_TARGET : BLK_STS_TRANSPORT;
 	case NVME_SC_BAD_ATTRIBUTES:
 	case NVME_SC_ONCS_NOT_SUPPORTED:
 	case NVME_SC_INVALID_OPCODE: