[S390] cio long busy in read configuration data.
Trying to set a DASD root device online can fail under some circumstances with the message "Read configuration data returned error -5". The cause is that read configuration data incorrectly aborts with -EIO when it encounters a temporary busy condition at a storage server. Perform retry when encountering temporary busy conditions. Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
d7d2370255
commit
da039bd1e8
|
@ -270,7 +270,8 @@ ccw_device_wake_up(struct ccw_device *cdev, unsigned long ip, struct irb *irb)
|
|||
* We didn't get channel end / device end. Check if path
|
||||
* verification has been started; we can retry after it has
|
||||
* finished. We also retry unit checks except for command reject
|
||||
* or intervention required.
|
||||
* or intervention required. Also check for long busy
|
||||
* conditions.
|
||||
*/
|
||||
if (cdev->private->flags.doverify ||
|
||||
cdev->private->state == DEV_STATE_VERIFY)
|
||||
|
@ -279,6 +280,10 @@ ccw_device_wake_up(struct ccw_device *cdev, unsigned long ip, struct irb *irb)
|
|||
!(irb->ecw[0] &
|
||||
(SNS0_CMD_REJECT | SNS0_INTERVENTION_REQ)))
|
||||
cdev->private->intparm = -EAGAIN;
|
||||
else if ((irb->scsw.dstat & DEV_STAT_ATTENTION) &&
|
||||
(irb->scsw.dstat & DEV_STAT_DEV_END) &&
|
||||
(irb->scsw.dstat & DEV_STAT_UNIT_EXCEP))
|
||||
cdev->private->intparm = -EAGAIN;
|
||||
else
|
||||
cdev->private->intparm = -EIO;
|
||||
|
||||
|
|
Loading…
Reference in a new issue