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: