OSDN Git Service

s390/dasd: fix hanging device after clear subchannel
authorStefan Haberland <sth@linux.vnet.ibm.com>
Mon, 8 Aug 2016 12:08:17 +0000 (14:08 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 7 Sep 2016 06:32:41 +0000 (08:32 +0200)
commit1473e6afbb1a37adba91aed61a62bbc0dd78634b
tree8f6d946c562f09978457ba47cbf92416f797fbcd
parent07adb640aa87c454cb0334a119111d5e5dfb13b7
s390/dasd: fix hanging device after clear subchannel

commit 9ba333dc55cbb9523553df973adb3024d223e905 upstream.

When a device is in a status where CIO has killed all I/O by itself the
interrupt for a clear request may not contain an irb to determine the
clear function. Instead it contains an error pointer -EIO.
This was ignored by the DASD int_handler leading to a hanging device
waiting for a clear interrupt.

Handle -EIO error pointer correctly for requests that are clear pending and
treat the clear as successful.

Signed-off-by: Stefan Haberland <sth@linux.vnet.ibm.com>
Reviewed-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/s390/block/dasd.c