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