[S390] cio: fix not oper handling after failed [on|off]line processing
authorSebastian Ott <sebott@linux.vnet.ibm.com>
Fri, 11 Sep 2009 08:28:17 +0000 (10:28 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 11 Sep 2009 08:29:37 +0000 (10:29 +0200)
If online/offline processing of a ccw device fails, resulting in not
operational state, notify the driver and unregister the device in case
the driver dosn't want to keep it.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/cio/device_fsm.c

index b8bdb0d754268ac969c9e3be42f7ff566f6c8e91..9c1452a6b9a124240ac77c0f5fad9c918d0066ed 100644 (file)
@@ -394,6 +394,13 @@ ccw_device_done(struct ccw_device *cdev, int state)
                        ccw_device_schedule_sch_unregister(cdev);
                cdev->private->flags.donotify = 0;
        }
+       if (state == 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;
+       }
 
        if (cdev->private->flags.donotify) {
                cdev->private->flags.donotify = 0;