[S390] cio: Remove CCW_CMD_SUSPEND_RECONN in front of CCW_CMD_SET_PGID.
authorMichael Ernst <mernst@de.ibm.com>
Thu, 15 May 2008 14:52:29 +0000 (16:52 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 15 May 2008 14:52:37 +0000 (16:52 +0200)
CCW_CMD_SUSPEND_RECONN causes a system hang if the cable of a
reserved DASD is disconnected and connected again.

Signed-off-by: Michael Ernst <mernst@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/cio/device_pgid.c

index ba559053402e341134af40565b8a571f4b3359d9..5cf7be008e981232742c7d57420e0359dd33e977 100644 (file)
@@ -243,16 +243,10 @@ __ccw_device_do_pgid(struct ccw_device *cdev, __u8 func)
        /* Setup sense path group id channel program. */
        cdev->private->pgid[0].inf.fc = func;
        ccw = cdev->private->iccws;
-       if (!cdev->private->flags.pgid_single) {
-               cdev->private->pgid[0].inf.fc |= SPID_FUNC_MULTI_PATH;
-               ccw->cmd_code = CCW_CMD_SUSPEND_RECONN;
-               ccw->cda = 0;
-               ccw->count = 0;
-               ccw->flags = CCW_FLAG_SLI | CCW_FLAG_CC;
-               ccw++;
-       } else
+       if (cdev->private->flags.pgid_single)
                cdev->private->pgid[0].inf.fc |= SPID_FUNC_SINGLE_PATH;
-
+       else
+               cdev->private->pgid[0].inf.fc |= SPID_FUNC_MULTI_PATH;
        ccw->cmd_code = CCW_CMD_SET_PGID;
        ccw->cda = (__u32) __pa (&cdev->private->pgid[0]);
        ccw->count = sizeof (struct pgid);