summaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/device_ops.c
diff options
context:
space:
mode:
authorCornelia Huck2006-08-07 17:00:30 +0200
committerMartin Schwidefsky2006-08-07 17:00:30 +0200
commit4bc0c4f9e74e7a5d62ef4db923b377f2aa474a8f (patch)
tree6f504c1716d8710025e5a58153b90cd4f2d893f2 /drivers/s390/cio/device_ops.c
parent[S390] tape class return value handling. (diff)
downloadkernel-qcow2-linux-4bc0c4f9e74e7a5d62ef4db923b377f2aa474a8f.tar.gz
kernel-qcow2-linux-4bc0c4f9e74e7a5d62ef4db923b377f2aa474a8f.tar.xz
kernel-qcow2-linux-4bc0c4f9e74e7a5d62ef4db923b377f2aa474a8f.zip
[S390] retry after deferred condition code.
Do a retry of read device characteristics / read configuration data when a deferred condition code 1 is encountered in ccw_device_wake_up(). Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/device_ops.c')
-rw-r--r--drivers/s390/cio/device_ops.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/s390/cio/device_ops.c b/drivers/s390/cio/device_ops.c
index a60124264bee..9e3de0bd59b5 100644
--- a/drivers/s390/cio/device_ops.c
+++ b/drivers/s390/cio/device_ops.c
@@ -263,6 +263,9 @@ ccw_device_wake_up(struct ccw_device *cdev, unsigned long ip, struct irb *irb)
/* Abuse intparm for error reporting. */
if (IS_ERR(irb))
cdev->private->intparm = -EIO;
+ else if (irb->scsw.cc == 1)
+ /* Retry for deferred condition code. */
+ cdev->private->intparm = -EAGAIN;
else if ((irb->scsw.dstat !=
(DEV_STAT_CHN_END|DEV_STAT_DEV_END)) ||
(irb->scsw.cstat != 0)) {