mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-07 23:28:55 +00:00
[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>
This commit is contained in:
parent
22806dc1a8
commit
fe6173d9b3
2 changed files with 13 additions and 2 deletions
|
@ -193,8 +193,15 @@ int ccw_device_start_key(struct ccw_device *cdev, struct ccw1 *cpa,
|
||||||
return -EACCES;
|
return -EACCES;
|
||||||
}
|
}
|
||||||
ret = cio_start_key (sch, cpa, lpm, key);
|
ret = cio_start_key (sch, cpa, lpm, key);
|
||||||
if (ret == 0)
|
switch (ret) {
|
||||||
|
case 0:
|
||||||
cdev->private->intparm = intparm;
|
cdev->private->intparm = intparm;
|
||||||
|
break;
|
||||||
|
case -EACCES:
|
||||||
|
case -ENODEV:
|
||||||
|
dev_fsm_event(cdev, DEV_EVENT_VERIFY);
|
||||||
|
break;
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -312,6 +312,7 @@ ccw_device_do_sense(struct ccw_device *cdev, struct irb *irb)
|
||||||
{
|
{
|
||||||
struct subchannel *sch;
|
struct subchannel *sch;
|
||||||
struct ccw1 *sense_ccw;
|
struct ccw1 *sense_ccw;
|
||||||
|
int rc;
|
||||||
|
|
||||||
sch = to_subchannel(cdev->dev.parent);
|
sch = to_subchannel(cdev->dev.parent);
|
||||||
|
|
||||||
|
@ -337,7 +338,10 @@ ccw_device_do_sense(struct ccw_device *cdev, struct irb *irb)
|
||||||
/* Reset internal retry indication. */
|
/* Reset internal retry indication. */
|
||||||
cdev->private->flags.intretry = 0;
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Reference in a new issue