|
Hannes Reinecke |
abe18a |
From: Rajashekhar M A <rajs@netapp.com>
|
|
Hannes Reinecke |
abe18a |
Subject: I/O errors for ALUA state transitions
|
|
Hannes Reinecke |
abe18a |
References: bnc#491289
|
|
Hannes Reinecke |
d1e442 |
Patch-mainline: submitted to linux-scsi, Sep 7th, 2021
|
|
Hannes Reinecke |
abe18a |
|
|
Hannes Reinecke |
d1e442 |
When a host is configured with a few LUNs and IO is running,
|
|
Hannes Reinecke |
abe18a |
injecting FC faults repeatedly leads to path recovery problems.
|
|
Hannes Reinecke |
abe18a |
The LUNs have 4 paths each and 3 of them come back active after
|
|
Hannes Reinecke |
abe18a |
say an FC fault which makes two of the paths go down, instead of
|
|
Hannes Reinecke |
abe18a |
all 4. This happens after several iterations of continuous FC faults.
|
|
Hannes Reinecke |
abe18a |
|
|
Hannes Reinecke |
abe18a |
Reason here is that we're returning an I/O error whenever we're
|
|
Hannes Reinecke |
abe18a |
encountering sense code 06/04/0a (LOGICAL UNIT NOT ACCESSIBLE,
|
|
Hannes Reinecke |
abe18a |
ASYMMETRIC ACCESS STATE TRANSITION) instead of retrying.
|
|
Hannes Reinecke |
abe18a |
|
|
Hannes Reinecke |
abe18a |
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
|
Hannes Reinecke |
abe18a |
|
|
Hannes Reinecke |
abe18a |
---
|
|
Hannes Reinecke |
abe18a |
drivers/scsi/scsi_error.c | 3 ++-
|
|
Hannes Reinecke |
abe18a |
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
Hannes Reinecke |
abe18a |
|
|
Hannes Reinecke |
abe18a |
--- a/drivers/scsi/scsi_error.c
|
|
Hannes Reinecke |
abe18a |
+++ b/drivers/scsi/scsi_error.c
|
|
Jeff Mahoney |
a40327 |
@@ -376,7 +376,8 @@ static int scsi_check_sense(struct scsi_
|
|
Jeff Mahoney |
adf9d1 |
* if the device is in the process of becoming ready, we
|
|
Hannes Reinecke |
abe18a |
* should retry.
|
|
Hannes Reinecke |
abe18a |
*/
|
|
Hannes Reinecke |
abe18a |
- if ((sshdr.asc == 0x04) && (sshdr.ascq == 0x01))
|
|
Hannes Reinecke |
abe18a |
+ if ((sshdr.asc == 0x04) &&
|
|
Hannes Reinecke |
abe18a |
+ (sshdr.ascq == 0x01 || sshdr.ascq == 0x0a))
|
|
Hannes Reinecke |
abe18a |
return NEEDS_RETRY;
|
|
Hannes Reinecke |
abe18a |
/*
|
|
Hannes Reinecke |
abe18a |
* if the device is not started, we need to wake
|