linux/drivers/s390/block
Stefan Haberland c3925a3da6 s390/dasd: fix IO error for newly defined devices
commit 5d27a2bf6e upstream.

When a new CKD storage volume is defined at the storage server, Linux
may be relying on outdated information about that volume, which leads to
the following errors:

1. Command Reject Errors for minidisk on z/VM:

dasd-eckd.b3193d: 0.0.XXXX: An error occurred in the DASD device driver,
		  reason=09
dasd(eckd): I/O status report for device 0.0.XXXX:
dasd(eckd): in req: 00000000XXXXXXXX CC:00 FC:04 AC:00 SC:17 DS:02 CS:00
	    RC:0
dasd(eckd): device 0.0.2046: Failing CCW: 00000000XXXXXXXX
dasd(eckd): Sense(hex)  0- 7: 80 00 00 00 00 00 00 00
dasd(eckd): Sense(hex)  8-15: 00 00 00 00 00 00 00 00
dasd(eckd): Sense(hex) 16-23: 00 00 00 00 e1 00 0f 00
dasd(eckd): Sense(hex) 24-31: 00 00 40 e2 00 00 00 00
dasd(eckd): 24 Byte: 0 MSG 0, no MSGb to SYSOP

2. Equipment Check errors on LPAR or for dedicated devices on z/VM:

dasd(eckd): I/O status report for device 0.0.XXXX:
dasd(eckd): in req: 00000000XXXXXXXX CC:00 FC:04 AC:00 SC:17 DS:0E CS:40
	    fcxs:01 schxs:00 RC:0
dasd(eckd): device 0.0.9713: Failing TCW: 00000000XXXXXXXX
dasd(eckd): Sense(hex)  0- 7: 10 00 00 00 13 58 4d 0f
dasd(eckd): Sense(hex)  8-15: 67 00 00 00 00 00 00 04
dasd(eckd): Sense(hex) 16-23: e5 18 05 33 97 01 0f 0f
dasd(eckd): Sense(hex) 24-31: 00 00 40 e2 00 04 58 0d
dasd(eckd): 24 Byte: 0 MSG f, no MSGb to SYSOP

Fix this problem by using the up-to-date information provided during
online processing via the device specific SNEQ to detect the case of
outdated LCU data. If there is a difference, perform a re-read of that
data.

Reviewed-by: Jan Hoeppner <hoeppner@linux.ibm.com>
Signed-off-by: Stefan Haberland <sth@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
[bwh: Backported to 3.16:
 - Move up assignment of "private"
 - Adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2018-10-21 08:45:36 +01:00
..
dasd.c s390/dasd: fix hanging device after clear subchannel 2016-11-20 01:17:08 +00:00
dasd_3990_erp.c s390/time: rename tod clock access functions 2013-02-14 15:55:10 +01:00
dasd_alias.c s390/dasd: fix IO error for newly defined devices 2018-10-21 08:45:36 +01:00
dasd_devmap.c s390: replace strict_strtoul() with kstrtoul() 2013-08-22 12:20:00 +02:00
dasd_diag.c s390/irq: Use defines for external interruption codes 2014-04-03 14:30:52 +02:00
dasd_diag.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
dasd_eckd.c Linux 3.13-rc6 2013-12-31 09:51:02 -07:00
dasd_eckd.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
dasd_eer.c s390/time: rename tod clock access functions 2013-02-14 15:55:10 +01:00
dasd_erp.c s390/dasd: fix statistics for recovered requests 2013-08-28 09:19:34 +02:00
dasd_fba.c block: Convert bio_for_each_segment() to bvec_iter 2013-11-23 22:33:49 -08:00
dasd_fba.h s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
dasd_genhd.c s390/dasd: fix memory leak caused by dangling references to request_queue 2013-12-02 15:31:06 +01:00
dasd_int.h s390/dasd: Fail all requests when DASD_FLAG_ABORTIO is set 2013-07-01 17:31:26 +02:00
dasd_ioctl.c s390/dasd: Fail all requests when DASD_FLAG_ABORTIO is set 2013-07-01 17:31:26 +02:00
dasd_proc.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
dcssblk.c s390: avoid format strings leaking into names 2014-06-11 10:13:27 +02:00
Kconfig s390/scm_block: force cluster writes 2012-09-26 15:45:01 +02:00
Makefile s390/scm_block: force cluster writes 2012-09-26 15:45:01 +02:00
scm_blk.c s390/scm_blk: fix deadlock for requests != REQ_TYPE_FS 2016-06-15 21:29:22 +01:00
scm_blk.h s390/s390dbf: use debug_level_enabled() where applicable 2013-10-24 17:16:54 +02:00
scm_blk_cluster.c block: Convert bio_for_each_segment() to bvec_iter 2013-11-23 22:33:49 -08:00
scm_drv.c s390/scm_block: fix printk format string 2013-03-21 13:35:37 +01:00
xpram.c Merge branch 'for-3.14/core' of git://git.kernel.dk/linux-block 2014-01-30 11:19:05 -08:00