aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/block
diff options
context:
space:
mode:
authorStefan Haberland <stefan.haberland@de.ibm.com>2008-01-26 08:11:26 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2008-01-26 08:11:30 -0500
commit7dc1da9ffae5a344f7115d019e2be069d3e1bb8d (patch)
tree26cdd74ba0bb65421346af5ee4e2db0ef4fd3a73 /drivers/s390/block
parent028fed8233b669e03def295a4e632b1b933720f9 (diff)
[S390] dasd: fix loop in request expiration handling
Add time to the 'expires' value to avoid a loop caused by the cqr termination function Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/block')
-rw-r--r--drivers/s390/block/dasd.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index db9193d38986..99268b964f67 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -1197,12 +1197,13 @@ static void __dasd_device_check_expire(struct dasd_device *device)
1197 (time_after_eq(jiffies, cqr->expires + cqr->starttime))) { 1197 (time_after_eq(jiffies, cqr->expires + cqr->starttime))) {
1198 if (device->discipline->term_IO(cqr) != 0) { 1198 if (device->discipline->term_IO(cqr) != 0) {
1199 /* Hmpf, try again in 5 sec */ 1199 /* Hmpf, try again in 5 sec */
1200 dasd_device_set_timer(device, 5*HZ);
1201 DEV_MESSAGE(KERN_ERR, device, 1200 DEV_MESSAGE(KERN_ERR, device,
1202 "internal error - timeout (%is) expired " 1201 "internal error - timeout (%is) expired "
1203 "for cqr %p, termination failed, " 1202 "for cqr %p, termination failed, "
1204 "retrying in 5s", 1203 "retrying in 5s",
1205 (cqr->expires/HZ), cqr); 1204 (cqr->expires/HZ), cqr);
1205 cqr->expires += 5*HZ;
1206 dasd_device_set_timer(device, 5*HZ);
1206 } else { 1207 } else {
1207 DEV_MESSAGE(KERN_ERR, device, 1208 DEV_MESSAGE(KERN_ERR, device,
1208 "internal error - timeout (%is) expired " 1209 "internal error - timeout (%is) expired "