diff options
author | Stefan Haberland <stefan.haberland@de.ibm.com> | 2015-04-02 12:52:41 +0200 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2015-04-15 12:23:51 +0200 |
commit | a3147a7bc266df39b4f471ee7c4c9adcb56d29a6 (patch) | |
tree | aeb9d19aadee1fc00fc183188fb9a7e03f6a4227 /drivers/s390 | |
parent | s390/dasd: fix inability to set a DASD device offline (diff) | |
download | linux-a3147a7bc266df39b4f471ee7c4c9adcb56d29a6.tar.xz linux-a3147a7bc266df39b4f471ee7c4c9adcb56d29a6.zip |
s390/dasd: fix unresumed device after suspend/resume
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>
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/block/dasd.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index cd57857a1c84..a5ed35d0cbf3 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c @@ -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 && |