|
@@ -387,19 +387,33 @@ ccw_device_done(struct ccw_device *cdev, int state)
|
|
|
|
|
|
cdev->private->state = state;
|
|
|
|
|
|
- if (state == DEV_STATE_BOXED) {
|
|
|
+ switch (state) {
|
|
|
+ case DEV_STATE_BOXED:
|
|
|
CIO_MSG_EVENT(0, "Boxed device %04x on subchannel %04x\n",
|
|
|
cdev->private->dev_id.devno, sch->schid.sch_no);
|
|
|
if (cdev->online && !ccw_device_notify(cdev, CIO_BOXED))
|
|
|
ccw_device_schedule_sch_unregister(cdev);
|
|
|
cdev->private->flags.donotify = 0;
|
|
|
- }
|
|
|
- if (state == DEV_STATE_NOT_OPER) {
|
|
|
+ break;
|
|
|
+ case DEV_STATE_NOT_OPER:
|
|
|
CIO_MSG_EVENT(0, "Device %04x gone on subchannel %04x\n",
|
|
|
cdev->private->dev_id.devno, sch->schid.sch_no);
|
|
|
if (!ccw_device_notify(cdev, CIO_GONE))
|
|
|
ccw_device_schedule_sch_unregister(cdev);
|
|
|
cdev->private->flags.donotify = 0;
|
|
|
+ break;
|
|
|
+ case DEV_STATE_DISCONNECTED:
|
|
|
+ CIO_MSG_EVENT(0, "Disconnected device %04x on subchannel "
|
|
|
+ "%04x\n", cdev->private->dev_id.devno,
|
|
|
+ sch->schid.sch_no);
|
|
|
+ if (!ccw_device_notify(cdev, CIO_NO_PATH))
|
|
|
+ ccw_device_schedule_sch_unregister(cdev);
|
|
|
+ else
|
|
|
+ ccw_device_set_disconnected(cdev);
|
|
|
+ cdev->private->flags.donotify = 0;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
}
|
|
|
|
|
|
if (cdev->private->flags.donotify) {
|