]> git.ipfire.org Git - ipfire-2.x.git/blame - src/patches/suse-2.6.27.39/patches.fixes/scsi-retry-alua-transition-in-progress
Imported linux-2.6.27.39 suse/xen patches.
[ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.fixes / scsi-retry-alua-transition-in-progress
CommitLineData
2cb7cef9
BS
1From: Rajashekhar M A <rajs@netapp.com>
2Subject: I/O errors for ALUA state transitions
3References: bnc#491289
4
5When a SLES11 host is configured with a few LUNs and IO is running,
6injecting FC faults repeatedly leads to path recovery problems.
7The LUNs have 4 paths each and 3 of them come back active after
8say an FC fault which makes two of the paths go down, instead of
9all 4. This happens after several iterations of continuous FC faults.
10
11Reason here is that we're returning an I/O error whenever we're
12encountering sense code 06/04/0a (LOGICAL UNIT NOT ACCESSIBLE,
13ASYMMETRIC ACCESS STATE TRANSITION) instead of retrying.
14
15Signed-off-by: Hannes Reinecke <hare@suse.de>
16
17---
18 drivers/scsi/scsi_error.c | 3 ++-
19 1 file changed, 2 insertions(+), 1 deletion(-)
20
21--- a/drivers/scsi/scsi_error.c
22+++ b/drivers/scsi/scsi_error.c
23@@ -383,7 +383,8 @@ static int scsi_check_sense(struct scsi_
24 * if the device is in the process of becoming ready, we
25 * should retry.
26 */
27- if ((sshdr.asc == 0x04) && (sshdr.ascq == 0x01))
28+ if ((sshdr.asc == 0x04) &&
29+ (sshdr.ascq == 0x01 || sshdr.ascq == 0x0a))
30 return NEEDS_RETRY;
31 /*
32 * if the device is not started, we need to wake