]> git.itanic.dy.fi Git - linux-stable/commitdiff
s390/dasd: fix unresumed device after suspend/resume
authorStefan Haberland <stefan.haberland@de.ibm.com>
Thu, 2 Apr 2015 10:52:41 +0000 (12:52 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 15 Apr 2015 10:23:51 +0000 (12:23 +0200)
The DASD device driver only has a limited amount of memory to build
I/O requests.
This memory was used by blocklayer requests leading to an inability
to build needed internal requests to resume the device.
Fix by preventing the DASD driver to fetch requests for a stopped
device.

Signed-off-by: Stefan Haberland <stefan.haberland@de.ibm.com>
Reference-ID: RQM 2520
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/block/dasd.c

index cd57857a1c843f806812a2146853a56f588e791d..a5ed35d0cbf3c3372e97cfd61f18a5e398b5de84 100644 (file)
@@ -2527,6 +2527,11 @@ static void __dasd_process_request_queue(struct dasd_block *block)
                        __blk_end_request_all(req, -EIO);
                return;
        }
+
+       /* if device ist stopped do not fetch new requests */
+       if (basedev->stopped)
+               return;
+
        /* Now we try to fetch requests from the request queue */
        while ((req = blk_peek_request(queue))) {
                if (basedev->features & DASD_FEATURE_READONLY &&