[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>
This commit is contained in:
parent
028fed8233
commit
7dc1da9ffa
1 changed files with 2 additions and 1 deletions
|
@ -1197,12 +1197,13 @@ static void __dasd_device_check_expire(struct dasd_device *device)
|
||||||
(time_after_eq(jiffies, cqr->expires + cqr->starttime))) {
|
(time_after_eq(jiffies, cqr->expires + cqr->starttime))) {
|
||||||
if (device->discipline->term_IO(cqr) != 0) {
|
if (device->discipline->term_IO(cqr) != 0) {
|
||||||
/* Hmpf, try again in 5 sec */
|
/* Hmpf, try again in 5 sec */
|
||||||
dasd_device_set_timer(device, 5*HZ);
|
|
||||||
DEV_MESSAGE(KERN_ERR, device,
|
DEV_MESSAGE(KERN_ERR, device,
|
||||||
"internal error - timeout (%is) expired "
|
"internal error - timeout (%is) expired "
|
||||||
"for cqr %p, termination failed, "
|
"for cqr %p, termination failed, "
|
||||||
"retrying in 5s",
|
"retrying in 5s",
|
||||||
(cqr->expires/HZ), cqr);
|
(cqr->expires/HZ), cqr);
|
||||||
|
cqr->expires += 5*HZ;
|
||||||
|
dasd_device_set_timer(device, 5*HZ);
|
||||||
} else {
|
} else {
|
||||||
DEV_MESSAGE(KERN_ERR, device,
|
DEV_MESSAGE(KERN_ERR, device,
|
||||||
"internal error - timeout (%is) expired "
|
"internal error - timeout (%is) expired "
|
||||||
|
|
Reference in a new issue