diff options
author | Cornelia Huck <cornelia.huck@de.ibm.com> | 2008-04-17 01:46:00 -0400 |
---|---|---|
committer | Heiko Carstens <heiko.carstens@de.ibm.com> | 2008-04-17 01:46:57 -0400 |
commit | fe6173d9b33dba18ec462051750fb1b9abcd796d (patch) | |
tree | 393cf3a058e880365b069915d6cb8bad96ec36aa /drivers/s390/cio/device_status.c | |
parent | 22806dc1a8ffd88a7c7bdd070879e6e323db496a (diff) |
[S390] cio: Trigger verification on device/path not operational.
Currently, we don't do much on no path or no device situations during
normal user I/O, since we rely on reports regarding those events by
the machine. If we trigger a path verification to bring our device
state up-to-date, we (a) may recover from path failures earlier and
(b) better handle situations where the hardware/hypervisor doesn't
give us enough notifications.
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/device_status.c')
-rw-r--r-- | drivers/s390/cio/device_status.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/s390/cio/device_status.c b/drivers/s390/cio/device_status.c index ebe0848cfe33..4764b9e00b9e 100644 --- a/drivers/s390/cio/device_status.c +++ b/drivers/s390/cio/device_status.c | |||
@@ -312,6 +312,7 @@ ccw_device_do_sense(struct ccw_device *cdev, struct irb *irb) | |||
312 | { | 312 | { |
313 | struct subchannel *sch; | 313 | struct subchannel *sch; |
314 | struct ccw1 *sense_ccw; | 314 | struct ccw1 *sense_ccw; |
315 | int rc; | ||
315 | 316 | ||
316 | sch = to_subchannel(cdev->dev.parent); | 317 | sch = to_subchannel(cdev->dev.parent); |
317 | 318 | ||
@@ -337,7 +338,10 @@ ccw_device_do_sense(struct ccw_device *cdev, struct irb *irb) | |||
337 | /* Reset internal retry indication. */ | 338 | /* Reset internal retry indication. */ |
338 | cdev->private->flags.intretry = 0; | 339 | cdev->private->flags.intretry = 0; |
339 | 340 | ||
340 | return cio_start(sch, sense_ccw, 0xff); | 341 | rc = cio_start(sch, sense_ccw, 0xff); |
342 | if (rc == -ENODEV || rc == -EACCES) | ||
343 | dev_fsm_event(cdev, DEV_EVENT_VERIFY); | ||
344 | return rc; | ||
341 | } | 345 | } |
342 | 346 | ||
343 | /* | 347 | /* |