diff options
author | Peter Oberparleiter <peter.oberparleiter@de.ibm.com> | 2009-12-18 19:43:23 +0300 |
---|---|---|
committer | Martin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com> | 2009-12-18 19:43:32 +0300 |
commit | d302e1a5dbe1677a495033a2d310656a55139cdf (patch) | |
tree | bcf2403ce1f031a576c3166eec62c5e47abab058 /drivers/s390/cio/io_sch.h | |
parent | 83e56d0b23f91b70a7e708ce0979a57b6c6a1507 (diff) | |
download | linux-d302e1a5dbe1677a495033a2d310656a55139cdf.tar.xz |
[S390] cio: fix channel path vary
Channel path vary is currently broken: channel paths which are varied
offline are still used by Linux. The reason for this is that:
* the path mask indicating which paths of an I/O device can be used
is reset by each internal I/O request
* the logic that checks if a path group is already in its designated
target state incorrectly interprets the result "is correctly set"
as "is correctly set and available"
Fix this by resetting the path mask only for internal I/O requests
which affect the path mask and by correcting the pgid check logic.
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.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/s390/cio/io_sch.h b/drivers/s390/cio/io_sch.h index d72ae4c93af9..b9ce712a7f25 100644 --- a/drivers/s390/cio/io_sch.h +++ b/drivers/s390/cio/io_sch.h @@ -150,6 +150,7 @@ struct ccw_device_private { struct ccw_request req; /* internal I/O request */ int iretry; u8 pgid_valid_mask; /* mask of valid PGIDs */ + u8 pgid_todo_mask; /* mask of PGIDs to be adjusted */ struct { unsigned int fast:1; /* post with "channel end" */ unsigned int repall:1; /* report every interrupt status */ |