summaryrefslogtreecommitdiff
path: root/drivers/s390/block
diff options
context:
space:
mode:
authorStefan Haberland <stefan.haberland@de.ibm.com>2013-07-30 12:49:43 +0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2013-07-30 18:17:25 +0400
commit0e003b709ef9f4c43f6338834526c3556ea71b19 (patch)
tree0cbbf9074ebc812dbcab30c3133153657e9fd3aa /drivers/s390/block
parent198b1bf8c3a06de42a88ad7f9d664f18d740a418 (diff)
downloadlinux-0e003b709ef9f4c43f6338834526c3556ea71b19.tar.xz
s390/dasd: fix hanging devices after path events
The processing of the dasd_block tasklet may have been interrupted by a path event. Restart the dasd tasklets in sleep_on_immediately 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.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index 17150a778984..451bf99582ff 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -2392,6 +2392,12 @@ int dasd_sleep_on_immediatly(struct dasd_ccw_req *cqr)
rc = cqr->intrc;
else
rc = -EIO;
+
+ /* kick tasklets */
+ dasd_schedule_device_bh(device);
+ if (device->block)
+ dasd_schedule_block_bh(device->block);
+
return rc;
}