]> git.ipfire.org Git - ipfire-2.x.git/blame - src/patches/suse-2.6.27.39/patches.arch/s390-18-01-cio-retries.patch
Fix oinkmaster patch.
[ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.arch / s390-18-01-cio-retries.patch
CommitLineData
82094b55
AF
1From: Gerald Schaefer <geraldsc@de.ibm.com>
2Subject: cio: number of internal I/O retries
3References: bnc#533267,LTC#55492
4
5Symptom: A device is untruly considered nonfunctional.
6Problem: 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.
12Solution: Increase the number of retries to 10.
13
14Acked-by: John Jolly <jjolly@suse.de>
15
16Index: 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);
47Index: 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 }