]> git.baikalelectronics.ru Git - kernel.git/commit
s390/dasd: fix hanging device offline processing
authorStefan Haberland <sth@linux.ibm.com>
Thu, 17 Dec 2020 15:59:04 +0000 (16:59 +0100)
committerJens Axboe <axboe@kernel.dk>
Thu, 17 Dec 2020 20:41:11 +0000 (13:41 -0700)
commited1d2dc5eddf769ed912cf4a3c3bb910bcef7aa9
tree4e0525198342376530993bc3ec55ea08f8570b19
parentacfe33f494564be0bf09fbd22378dfdabd725ed2
s390/dasd: fix hanging device offline processing

For an LCU update a read unit address configuration IO is required.
This is started using sleep_on(), which has early exit paths in case the
device is not usable for IO. For example when it is in offline processing.

In those cases the LCU update should fail and not be retried.
Therefore lcu_update_work checks if EOPNOTSUPP is returned or not.

Commit d1112f9cd5b8 ("s390/dasd: fix endless loop after read unit address configuration")
accidentally removed the EOPNOTSUPP return code from
read_unit_address_configuration(), which in turn might lead to an endless
loop of the LCU update in offline processing.

Fix by returning EOPNOTSUPP again if the device is not able to perform the
request.

Fixes: d1112f9cd5b8 ("s390/dasd: fix endless loop after read unit address configuration")
Cc: stable@vger.kernel.org #5.3
Signed-off-by: Stefan Haberland <sth@linux.ibm.com>
Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/s390/block/dasd_alias.c