mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 13:11:40 +00:00
[S390] cio: handle error during path verification consistently
Handle verification errors consistently through the existing callback ccw_device_done to reduce cleanup code duplication. Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
736b5db895
commit
7c4d964fa4
@ -549,9 +549,8 @@ ccw_device_verify_done(struct ccw_device *cdev, int err)
|
||||
sch = to_subchannel(cdev->dev.parent);
|
||||
/* Update schib - pom may have changed. */
|
||||
if (cio_update_schib(sch)) {
|
||||
cdev->private->flags.donotify = 0;
|
||||
ccw_device_done(cdev, DEV_STATE_NOT_OPER);
|
||||
return;
|
||||
err = -ENODEV;
|
||||
goto callback;
|
||||
}
|
||||
/* Update lpm with verified path mask. */
|
||||
sch->lpm = sch->vpm;
|
||||
@ -561,9 +560,8 @@ ccw_device_verify_done(struct ccw_device *cdev, int err)
|
||||
ccw_device_verify_start(cdev);
|
||||
return;
|
||||
}
|
||||
callback:
|
||||
switch (err) {
|
||||
case -EOPNOTSUPP: /* path grouping not supported, just set online. */
|
||||
cdev->private->options.pgroup = 0;
|
||||
case 0:
|
||||
ccw_device_done(cdev, DEV_STATE_ONLINE);
|
||||
/* Deliver fake irb to device driver, if needed. */
|
||||
@ -586,14 +584,15 @@ ccw_device_verify_done(struct ccw_device *cdev, int err)
|
||||
cdev->private->flags.donotify = 0;
|
||||
ccw_device_done(cdev, DEV_STATE_BOXED);
|
||||
break;
|
||||
case -EACCES:
|
||||
/* Reset oper notify indication after verify error. */
|
||||
cdev->private->flags.donotify = 0;
|
||||
ccw_device_done(cdev, DEV_STATE_DISCONNECTED);
|
||||
break;
|
||||
default:
|
||||
/* Reset oper notify indication after verify error. */
|
||||
cdev->private->flags.donotify = 0;
|
||||
if (cdev->online) {
|
||||
ccw_device_set_timeout(cdev, 0);
|
||||
dev_fsm_event(cdev, DEV_EVENT_NOTOPER);
|
||||
} else
|
||||
ccw_device_done(cdev, DEV_STATE_NOT_OPER);
|
||||
ccw_device_done(cdev, DEV_STATE_NOT_OPER);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -423,7 +423,7 @@ __ccw_device_verify_start(struct ccw_device *cdev)
|
||||
/* Permanent path failure, try next. */
|
||||
}
|
||||
/* Done with all paths. */
|
||||
ccw_device_verify_done(cdev, (sch->vpm != 0) ? 0 : -ENODEV);
|
||||
ccw_device_verify_done(cdev, (sch->vpm != 0) ? 0 : -EACCES);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user