Skip to content

Commit

Permalink
[S390] cio: handle error during path verification consistently
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Peter Oberparleiter authored and Martin Schwidefsky committed Dec 7, 2009
1 parent 736b5db commit 7c4d964
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 11 deletions.
19 changes: 9 additions & 10 deletions drivers/s390/cio/device_fsm.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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. */
Expand All @@ -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;
}
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/s390/cio/device_pgid.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

/*
Expand Down

0 comments on commit 7c4d964

Please sign in to comment.