OpenCloudOS-Kernel/drivers/s390/block
Stefan Haberland 9487cfd343 s390/dasd: fix handling of internal requests
Internal DASD device driver I/O such as query host access count or
path verification is started using the _sleep_on() function.
To mark a request as started or ended the callback_data is set to either
DASD_SLEEPON_START_TAG or DASD_SLEEPON_END_TAG.

In cases where the request has to be stopped unconditionally the status is
set to DASD_SLEEPON_END_TAG as well which leads to immediate clearing of
the request.
But the request might still be on a device request queue for normal
operation which might lead to a panic because of a BUG() statement in
__dasd_device_process_final_queue() or a list corruption of the device
request queue.

Fix by removing the setting of DASD_SLEEPON_END_TAG in the
dasd_cancel_req() and dasd_generic_requeue_all_requests() functions and
ensure that the request is not deleted in the requeue function.
Trigger the device tasklet in the requeue function and let the normal
processing cleanup the request.

Signed-off-by: Stefan Haberland <sth@linux.vnet.ibm.com>
Reviewed-by: Jan Hoeppner <hoeppner@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2018-02-19 08:00:06 +01:00
..
Kconfig dax: require 'struct page' by default for filesystem dax 2018-01-19 16:50:53 -08:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dasd.c s390/dasd: fix handling of internal requests 2018-02-19 08:00:06 +01:00
dasd_3990_erp.c s390/dasd: fix wrongly assigned configuration data 2018-01-02 13:47:01 +01:00
dasd_alias.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dasd_devmap.c s390: block: add SPDX identifiers to the remaining files 2017-11-24 14:28:37 +01:00
dasd_diag.c s390: block: add SPDX identifiers to the remaining files 2017-11-24 14:28:37 +01:00
dasd_diag.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dasd_eckd.c s390/dasd: Simplify code 2018-01-23 07:36:41 +01:00
dasd_eckd.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dasd_eer.c vfs: do bulk POLL* -> EPOLL* replacement 2018-02-11 14:34:03 -08:00
dasd_erp.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dasd_fba.c s390: block: add SPDX identifiers to the remaining files 2017-11-24 14:28:37 +01:00
dasd_fba.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dasd_genhd.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dasd_int.h s390/dasd: remove 'struct timespec' usage 2017-12-05 07:51:08 +01:00
dasd_ioctl.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dasd_proc.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dcssblk.c mm, dax: introduce pfn_t_special() 2018-01-19 16:50:53 -08:00
scm_blk.c s390: block: add SPDX identifiers to the remaining files 2017-11-24 14:28:37 +01:00
scm_blk.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2017-11-13 11:47:01 -08:00
scm_drv.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
xpram.c s390: block: add SPDX identifiers to the remaining files 2017-11-24 14:28:37 +01:00