diff options
author | Cornelia Huck <cornelia.huck@de.ibm.com> | 2006-06-29 09:03:35 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-06-29 09:03:35 -0400 |
commit | b4f7b1ee577857aca467e6825122a3b29d6c3c0e (patch) | |
tree | bb17f4d6bea22b1d5a4c0a927c41f1ba782ef2ae /drivers/s390/cio/chsc.c | |
parent | 3ee526841ba409f7b23f825f120772a79e7d7bd2 (diff) |
[S390] cio chpid offline.
After setting a path to a dasd offline at the SE, I/O hangs on that
dasd for 5 minutes, then continues.
I/O for which an interrupt will not be reported after the channel
path has been disabled was not terminated by the common I/O layer,
causing the dasd MIH to hit after 5 minutes.
Be more aggressive in terminating I/O after setting a channel path
offline. Also make sure to generate a fake irb if the device
driver issues an I/O request after being notified of the killed
I/O and clear residual information from the irb before trying to
start the delayed verification.
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/chsc.c')
-rw-r--r-- | drivers/s390/cio/chsc.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/s390/cio/chsc.c b/drivers/s390/cio/chsc.c index 4a9da5bdd535..b00f3ed051a0 100644 --- a/drivers/s390/cio/chsc.c +++ b/drivers/s390/cio/chsc.c | |||
@@ -244,8 +244,7 @@ s390_subchannel_remove_chpid(struct device *dev, void *data) | |||
244 | 244 | ||
245 | if ((sch->schib.scsw.actl & SCSW_ACTL_DEVACT) && | 245 | if ((sch->schib.scsw.actl & SCSW_ACTL_DEVACT) && |
246 | (sch->schib.scsw.actl & SCSW_ACTL_SCHACT) && | 246 | (sch->schib.scsw.actl & SCSW_ACTL_SCHACT) && |
247 | (sch->schib.pmcw.lpum == mask) && | 247 | (sch->schib.pmcw.lpum == mask)) { |
248 | (sch->vpm == 0)) { | ||
249 | int cc; | 248 | int cc; |
250 | 249 | ||
251 | cc = cio_clear(sch); | 250 | cc = cio_clear(sch); |