aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/block/dasd.c
diff options
context:
space:
mode:
authorStefan Haberland <stefan.haberland@de.ibm.com>2015-12-22 13:34:38 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2015-12-30 10:34:41 +0100
commitc6fc7b6f8ca5d3d59446ce4ee870569355cfb04a (patch)
tree80f53bfdd4a1bb1379c08e8038e611d9eaa3f115 /drivers/s390/block/dasd.c
parentcf61393f4aa30f4c2a11cf2437d49ff4de6eb4fb (diff)
downloadlinux-c6fc7b6f8ca5d3d59446ce4ee870569355cfb04a.tar.gz
s390/dasd: fix failfast for disconnected devices
Enabling failfast should let request fail immediately if either an error occurred or the device gets disconnected. For disconnected devices new requests are not fetches from the block queue and therefore failfast is not triggered. Fix by letting the DASD driver fetch requests for disconnected devices with failfast active. 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/dasd.c')
-rw-r--r--drivers/s390/block/dasd.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index a263c10359e15..41605dac83094 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -2556,8 +2556,12 @@ static void __dasd_process_request_queue(struct dasd_block *block)
return;
}
- /* if device ist stopped do not fetch new requests */
- if (basedev->stopped)
+ /*
+ * if device is stopped do not fetch new requests
+ * except failfast is active which will let requests fail
+ * immediately in __dasd_block_start_head()
+ */
+ if (basedev->stopped && !(basedev->features & DASD_FEATURE_FAILFAST))
return;
/* Now we try to fetch requests from the request queue */