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>
                        return -EACCES;
        }
        ret = cio_start_key (sch, cpa, lpm, key);
-       if (ret == 0)
+       switch (ret) {
+       case 0:
                cdev->private->intparm = intparm;
+               break;
+       case -EACCES:
+       case -ENODEV:
+               dev_fsm_event(cdev, DEV_EVENT_VERIFY);
+               break;
+       }
        return ret;
 }
 
 
 {
        struct subchannel *sch;
        struct ccw1 *sense_ccw;
+       int rc;
 
        sch = to_subchannel(cdev->dev.parent);
 
        /* Reset internal retry indication. */
        cdev->private->flags.intretry = 0;
 
-       return cio_start(sch, sense_ccw, 0xff);
+       rc = cio_start(sch, sense_ccw, 0xff);
+       if (rc == -ENODEV || rc == -EACCES)
+               dev_fsm_event(cdev, DEV_EVENT_VERIFY);
+       return rc;
 }
 
 /*