[S390] dasd: fix timeout handling in interrupt handler
When the dasd_int_handler is called with an error code instead of an irb, the associated request should be restarted. This handling was missing from the -ETIMEDOUT case. In fact it should be done in any case. Signed-off-by: Stefan Weinhuber <wein@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
Родитель
5cbbf16a0f
Коммит
f16f584350
|
@ -925,6 +925,8 @@ static void dasd_handle_killed_request(struct ccw_device *cdev,
|
|||
struct dasd_ccw_req *cqr;
|
||||
struct dasd_device *device;
|
||||
|
||||
if (!intparm)
|
||||
return;
|
||||
cqr = (struct dasd_ccw_req *) intparm;
|
||||
if (cqr->status != DASD_CQR_IN_IO) {
|
||||
MESSAGE(KERN_DEBUG,
|
||||
|
@ -976,17 +978,16 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm,
|
|||
if (IS_ERR(irb)) {
|
||||
switch (PTR_ERR(irb)) {
|
||||
case -EIO:
|
||||
dasd_handle_killed_request(cdev, intparm);
|
||||
break;
|
||||
case -ETIMEDOUT:
|
||||
printk(KERN_WARNING"%s(%s): request timed out\n",
|
||||
__func__, cdev->dev.bus_id);
|
||||
//FIXME - dasd uses own timeout interface...
|
||||
break;
|
||||
default:
|
||||
printk(KERN_WARNING"%s(%s): unknown error %ld\n",
|
||||
__func__, cdev->dev.bus_id, PTR_ERR(irb));
|
||||
}
|
||||
dasd_handle_killed_request(cdev, intparm);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче