From: Stefan Haberland <stefan.haberland@de.ibm.com>
Date: Thu, 2 Apr 2015 10:52:41 +0000 (+0200)
Subject: s390/dasd: fix unresumed device after suspend/resume
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=a3147a7bc266df39b4f471ee7c4c9adcb56d29a6;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git

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>
---

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 &&