]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/patches/suse-2.6.27.39/patches.arch/s390-18-01-cio-retries.patch
Imported linux-2.6.27.39 suse/xen patches.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.arch / s390-18-01-cio-retries.patch
1 From: Gerald Schaefer <geraldsc@de.ibm.com>
2 Subject: cio: number of internal I/O retries
3 References: bnc#533267,LTC#55492
4
5 Symptom: A device is untruly considered nonfunctional.
6 Problem: If a device has n paths and the device is not path-
7 grouped and an internal I/O command fails, then the
8 control unit presents the error sense n times on each
9 different path. cio does only 5 retries, i.e. devices
10 with 5 or more paths run out of retries before their
11 functional status can actually be determined.
12 Solution: Increase the number of retries to 10.
13
14 Acked-by: John Jolly <jjolly@suse.de>
15
16 Index: linux-sles11/drivers/s390/cio/device_id.c
17 ===================================================================
18 --- linux-sles11.orig/drivers/s390/cio/device_id.c 2009-08-17 14:49:43.000000000 +0200
19 +++ linux-sles11/drivers/s390/cio/device_id.c 2009-08-17 14:52:00.000000000 +0200
20 @@ -164,7 +164,7 @@
21 return ret;
22 }
23 cdev->private->imask >>= 1;
24 - cdev->private->iretry = 5;
25 + cdev->private->iretry = 10;
26 }
27 return ret;
28 }
29 @@ -176,7 +176,7 @@
30
31 memset (&cdev->private->senseid, 0, sizeof (struct senseid));
32 cdev->private->imask = 0x80;
33 - cdev->private->iretry = 5;
34 + cdev->private->iretry = 10;
35 ret = __ccw_device_sense_id_start(cdev);
36 if (ret && ret != -EBUSY)
37 ccw_device_sense_id_done(cdev, ret);
38 @@ -299,7 +299,7 @@
39 case -EACCES: /* channel is not operational. */
40 sch->lpm &= ~cdev->private->imask;
41 cdev->private->imask >>= 1;
42 - cdev->private->iretry = 5;
43 + cdev->private->iretry = 10;
44 /* fall through. */
45 case -EAGAIN: /* try again. */
46 ret = __ccw_device_sense_id_start(cdev);
47 Index: linux-sles11/drivers/s390/cio/device_pgid.c
48 ===================================================================
49 --- linux-sles11.orig/drivers/s390/cio/device_pgid.c 2009-08-17 14:49:43.000000000 +0200
50 +++ linux-sles11/drivers/s390/cio/device_pgid.c 2009-08-17 14:52:00.000000000 +0200
51 @@ -88,7 +88,7 @@
52
53 }
54 cdev->private->imask >>= 1;
55 - cdev->private->iretry = 5;
56 + cdev->private->iretry = 10;
57 i++;
58 }
59
60 @@ -105,7 +105,7 @@
61
62 cdev->private->state = DEV_STATE_SENSE_PGID;
63 cdev->private->imask = 0x80;
64 - cdev->private->iretry = 5;
65 + cdev->private->iretry = 10;
66 memset (&cdev->private->pgid, 0, sizeof (cdev->private->pgid));
67 ret = __ccw_device_sense_pgid_start(cdev);
68 if (ret && ret != -EBUSY)
69 @@ -215,7 +215,7 @@
70 /* Fall through. */
71 case 0: /* Sense Path Group ID successful. */
72 cdev->private->imask >>= 1;
73 - cdev->private->iretry = 5;
74 + cdev->private->iretry = 10;
75 /* Fall through. */
76 case -EAGAIN: /* Try again. */
77 ret = __ccw_device_sense_pgid_start(cdev);
78 @@ -404,7 +404,7 @@
79 sch = to_subchannel(cdev->dev.parent);
80 /* Repeat for all paths. */
81 for (; cdev->private->imask; cdev->private->imask >>= 1,
82 - cdev->private->iretry = 5) {
83 + cdev->private->iretry = 10) {
84 if ((cdev->private->imask & sch->schib.pmcw.pam) == 0)
85 /* Path not available, try next. */
86 continue;
87 @@ -460,7 +460,7 @@
88 sch->vpm |= sch->opm & cdev->private->imask;
89 /* Go on with next path. */
90 cdev->private->imask >>= 1;
91 - cdev->private->iretry = 5;
92 + cdev->private->iretry = 10;
93 __ccw_device_verify_start(cdev);
94 break;
95 case -EOPNOTSUPP:
96 @@ -475,7 +475,7 @@
97 /* Retry */
98 sch->vpm = 0;
99 cdev->private->imask = 0x80;
100 - cdev->private->iretry = 5;
101 + cdev->private->iretry = 10;
102 /* fall through. */
103 case -EAGAIN: /* Try again. */
104 __ccw_device_verify_start(cdev);
105 @@ -485,7 +485,7 @@
106 break;
107 case -EACCES: /* channel is not operational. */
108 cdev->private->imask >>= 1;
109 - cdev->private->iretry = 5;
110 + cdev->private->iretry = 10;
111 __ccw_device_verify_start(cdev);
112 break;
113 }
114 @@ -498,7 +498,7 @@
115
116 cdev->private->flags.pgid_single = 0;
117 cdev->private->imask = 0x80;
118 - cdev->private->iretry = 5;
119 + cdev->private->iretry = 10;
120
121 /* Start with empty vpm. */
122 sch->vpm = 0;
123 @@ -526,7 +526,7 @@
124 if (ret == 0)
125 return;
126 }
127 - cdev->private->iretry = 5;
128 + cdev->private->iretry = 10;
129 cdev->private->imask >>= 1;
130 }
131 ccw_device_disband_done(cdev, (sch->lpm != 0) ? 0 : -ENODEV);
132 @@ -575,7 +575,7 @@
133 break;
134 case -EACCES: /* channel is not operational. */
135 cdev->private->imask >>= 1;
136 - cdev->private->iretry = 5;
137 + cdev->private->iretry = 10;
138 __ccw_device_disband_start(cdev);
139 break;
140 }
141 @@ -588,7 +588,7 @@
142 ccw_device_set_timeout(cdev, 60*HZ);
143
144 cdev->private->flags.pgid_single = 0;
145 - cdev->private->iretry = 5;
146 + cdev->private->iretry = 10;
147 cdev->private->imask = 0x80;
148 __ccw_device_disband_start(cdev);
149 }