linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / drivers / s390 / cio / device_fsm.c
index 49ec562..b302779 100644 (file)
@@ -749,7 +749,7 @@ ccw_device_irq(struct ccw_device *cdev, enum dev_event dev_event)
                        /* Unit check but no sense data. Need basic sense. */
                        if (ccw_device_do_sense(cdev, irb) != 0)
                                goto call_handler_unsol;
-                       memcpy(&cdev->private->irb, irb, sizeof(struct irb));
+                       memcpy(irb, &cdev->private->irb, sizeof(struct irb));
                        cdev->private->state = DEV_STATE_W4SENSE;
                        cdev->private->intparm = 0;
                        return;
@@ -827,17 +827,6 @@ ccw_device_w4sense(struct ccw_device *cdev, enum dev_event dev_event)
                }
                return;
        }
-       /*
-        * Check if a halt or clear has been issued in the meanwhile. If yes,
-        * only deliver the halt/clear interrupt to the device driver as if it
-        * had killed the original request.
-        */
-       if (irb->scsw.fctl & (SCSW_FCTL_CLEAR_FUNC | SCSW_FCTL_HALT_FUNC)) {
-               cdev->private->flags.dosense = 0;
-               memset(&cdev->private->irb, 0, sizeof(struct irb));
-               ccw_device_accumulate_irb(cdev, irb);
-               goto call_handler;
-       }
        /* Add basic sense info to irb. */
        ccw_device_accumulate_basic_sense(cdev, irb);
        if (cdev->private->flags.dosense) {
@@ -845,7 +834,6 @@ ccw_device_w4sense(struct ccw_device *cdev, enum dev_event dev_event)
                ccw_device_do_sense(cdev, irb);
                return;
        }
-call_handler:
        cdev->private->state = DEV_STATE_ONLINE;
        /* Call the handler. */
        if (ccw_device_call_handler(cdev) && cdev->private->flags.doverify)