[S390] dasd: fix expiration handling for recovery requests
The 'expires' value of a ccw requests defines how long the device driver should wait for a response from the evice after the request has been submitted to the channel subsystem. After the expiration time (e.g. 30 seconds) the waiting request will be cancelled and started again. This protects the DASD devices from beeing blocked by errors that cause the answering I/O interrupt to be lost. In case of error recovery requests, this 'expires' value used to be set to 0, so in case of a lost interrupt, such a recovery request would never expire and block the device. To prevent this kind of problem, all recovery requests need to have an expires value > 0 as well. If not specified otherwise, this should be the same expires value as for the original request. Signed-off-by: Stefan Weinhuber <wein@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
Родитель
85ac7ca597
Коммит
1afcfd5948
|
@ -1718,7 +1718,7 @@ dasd_3990_erp_action_1B_32(struct dasd_ccw_req * default_erp, char *sense)
|
||||||
erp->startdev = device;
|
erp->startdev = device;
|
||||||
erp->memdev = device;
|
erp->memdev = device;
|
||||||
erp->magic = default_erp->magic;
|
erp->magic = default_erp->magic;
|
||||||
erp->expires = 0;
|
erp->expires = default_erp->expires;
|
||||||
erp->retries = 256;
|
erp->retries = 256;
|
||||||
erp->buildclk = get_clock();
|
erp->buildclk = get_clock();
|
||||||
erp->status = DASD_CQR_FILLED;
|
erp->status = DASD_CQR_FILLED;
|
||||||
|
@ -2363,7 +2363,7 @@ static struct dasd_ccw_req *dasd_3990_erp_add_erp(struct dasd_ccw_req *cqr)
|
||||||
erp->memdev = device;
|
erp->memdev = device;
|
||||||
erp->block = cqr->block;
|
erp->block = cqr->block;
|
||||||
erp->magic = cqr->magic;
|
erp->magic = cqr->magic;
|
||||||
erp->expires = 0;
|
erp->expires = cqr->expires;
|
||||||
erp->retries = 256;
|
erp->retries = 256;
|
||||||
erp->buildclk = get_clock();
|
erp->buildclk = get_clock();
|
||||||
erp->status = DASD_CQR_FILLED;
|
erp->status = DASD_CQR_FILLED;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче