]>
Commit | Line | Data |
---|---|---|
00e5a55c BS |
1 | From: Jeremy Higdon <jeremy@sgi.com> |
2 | Subject: mptsas driver fails to discover devices | |
3 | References: bnc#459932 | |
4 | ||
5 | The mptsas driver has a serious regression in sles11rc1 in that it fails to | |
6 | discover devices that work fine with sles10sp2. | |
7 | ||
8 | I discovered that part of the problem was that the target number of the RAID | |
9 | volume was too high for the driver to discover it. | |
10 | ||
11 | The problem with the IS220 (LSI 1333 RAID) is that the driver is issuing its | |
12 | own Test Unit Read and that's apparently being considered a failure from the | |
13 | Unit Attention statuses. | |
14 | ||
15 | With this patch the system boots okay. | |
16 | ||
17 | Signed-off-by: Jeremy Higdon <jeremy@sgi.com> | |
18 | Signed-off-by: Sathya Prakash <sathya.prakash@lsi.com> | |
19 | Signed-off-by: Hannes Reinecke <hare@suse.de> | |
20 | ||
21 | --- /mnt/usr/src/linux/drivers/message/fusion/mptsas.c 2008-12-08 06:54:50.000000000 -0800 | |
22 | +++ linux/drivers/message/fusion/mptsas.c 2009-01-18 22:16:30.456811758 -0800 | |
23 | @@ -1580,12 +1580,10 @@ | |
24 | enum device_state state; | |
25 | int rc; | |
26 | u8 skey, asc, ascq; | |
27 | - u8 retry_ua; | |
28 | ||
29 | if (count >= mpt_cmd_retry_count) | |
30 | return DEVICE_ERROR; | |
31 | ||
32 | - retry_ua = 0; | |
33 | iocmd = kzalloc(sizeof(INTERNAL_CMD), GFP_KERNEL); | |
34 | if (!iocmd) { | |
35 | printk(MYIOC_s_ERR_FMT "%s: kzalloc(%zd) FAILED!\n", | |
36 | @@ -1646,10 +1644,8 @@ | |
37 | __func__, channel, id, skey, asc, ascq)); | |
38 | ||
39 | if (skey == UNIT_ATTENTION) { | |
40 | - if (!retry_ua) { | |
41 | - retry_ua++; | |
42 | - goto retry; | |
43 | - } | |
44 | + state = DEVICE_RETRY; | |
45 | + break; | |
46 | } else if (skey == NOT_READY) { | |
47 | /* | |
48 | * medium isn't present | |
49 | @@ -3740,6 +3736,7 @@ | |
50 | return; | |
51 | } | |
52 | } | |
53 | + mpt_findImVolumes(ioc); | |
54 | ||
55 | case MPTSAS_ADD_DEVICE: | |
56 | memset(&sas_device, 0, sizeof(struct mptsas_devinfo)); |