aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/io_sch.h
diff options
context:
space:
mode:
authorPeter Oberparleiter <peter.oberparleiter@de.ibm.com>2009-12-07 06:51:30 -0500
committerMartin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com>2009-12-07 06:51:31 -0500
commit454e1fa1ebae7cff707b2e3f12b775c263c8408b (patch)
treeeab290fcacd6faaf7e01e3a637cb9678bb367c66 /drivers/s390/cio/io_sch.h
parent4257aaecffab77bad43e12057f56a5590b360f9f (diff)
[S390] cio: split PGID settings and status
Split setting (driver wants feature enabled) and status (feature setup was successful) for PGID related ccw device features so that setup errors can be detected. Previously, incorrectly handled setup errors could in rare cases lead to erratic I/O behavior and permanently unusuable devices. Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/io_sch.h')
-rw-r--r--drivers/s390/cio/io_sch.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/s390/cio/io_sch.h b/drivers/s390/cio/io_sch.h
index 8942dc092d0a..b387c80d1888 100644
--- a/drivers/s390/cio/io_sch.h
+++ b/drivers/s390/cio/io_sch.h
@@ -156,9 +156,9 @@ struct ccw_device_private {
156 unsigned int repall:1; /* report every interrupt status */ 156 unsigned int repall:1; /* report every interrupt status */
157 unsigned int pgroup:1; /* do path grouping */ 157 unsigned int pgroup:1; /* do path grouping */
158 unsigned int force:1; /* allow forced online */ 158 unsigned int force:1; /* allow forced online */
159 unsigned int mpath:1; /* do multipathing */
159 } __attribute__ ((packed)) options; 160 } __attribute__ ((packed)) options;
160 struct { 161 struct {
161 unsigned int pgid_single:1; /* use single path for Set PGID */
162 unsigned int esid:1; /* Ext. SenseID supported by HW */ 162 unsigned int esid:1; /* Ext. SenseID supported by HW */
163 unsigned int dosense:1; /* delayed SENSE required */ 163 unsigned int dosense:1; /* delayed SENSE required */
164 unsigned int doverify:1; /* delayed path verification */ 164 unsigned int doverify:1; /* delayed path verification */
@@ -167,6 +167,8 @@ struct ccw_device_private {
167 unsigned int fake_irb:1; /* deliver faked irb */ 167 unsigned int fake_irb:1; /* deliver faked irb */
168 unsigned int resuming:1; /* recognition while resume */ 168 unsigned int resuming:1; /* recognition while resume */
169 unsigned int pgid_rdy:1; /* pgids are ready */ 169 unsigned int pgid_rdy:1; /* pgids are ready */
170 unsigned int pgroup:1; /* pathgroup is set up */
171 unsigned int mpath:1; /* multipathing is set up */
170 } __attribute__((packed)) flags; 172 } __attribute__((packed)) flags;
171 unsigned long intparm; /* user interruption parameter */ 173 unsigned long intparm; /* user interruption parameter */
172 struct qdio_irq *qdio_data; 174 struct qdio_irq *qdio_data;