[S390] dasd: check sense type in device change handler
When evaluating sense data in dasd_eckd_check_for_device_change, we must always check for the type of sense data in byte 27, bit 0, to make sure that the rest of the sense data is interpreted correctly. Signed-off-by: Stefan Weinhuber <wein@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
committed by
Martin Schwidefsky
parent
e35c76cd47
commit
c7a29e56f0
@@ -2037,7 +2037,7 @@ static void dasd_eckd_check_for_device_change(struct dasd_device *device,
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
/* summary unit check */
|
/* summary unit check */
|
||||||
if ((sense[7] == 0x0D) &&
|
if ((sense[27] & DASD_SENSE_BIT_0) && (sense[7] == 0x0D) &&
|
||||||
(scsw_dstat(&irb->scsw) & DEV_STAT_UNIT_CHECK)) {
|
(scsw_dstat(&irb->scsw) & DEV_STAT_UNIT_CHECK)) {
|
||||||
dasd_alias_handle_summary_unit_check(device, irb);
|
dasd_alias_handle_summary_unit_check(device, irb);
|
||||||
return;
|
return;
|
||||||
@@ -2053,7 +2053,8 @@ static void dasd_eckd_check_for_device_change(struct dasd_device *device,
|
|||||||
/* loss of device reservation is handled via base devices only
|
/* loss of device reservation is handled via base devices only
|
||||||
* as alias devices may be used with several bases
|
* as alias devices may be used with several bases
|
||||||
*/
|
*/
|
||||||
if (device->block && (sense[7] == 0x3F) &&
|
if (device->block && (sense[27] & DASD_SENSE_BIT_0) &&
|
||||||
|
(sense[7] == 0x3F) &&
|
||||||
(scsw_dstat(&irb->scsw) & DEV_STAT_UNIT_CHECK) &&
|
(scsw_dstat(&irb->scsw) & DEV_STAT_UNIT_CHECK) &&
|
||||||
test_bit(DASD_FLAG_IS_RESERVED, &device->flags)) {
|
test_bit(DASD_FLAG_IS_RESERVED, &device->flags)) {
|
||||||
if (device->features & DASD_FEATURE_FAILONSLCK)
|
if (device->features & DASD_FEATURE_FAILONSLCK)
|
||||||
|
Reference in New Issue
Block a user