mirror of
https://github.com/torvalds/linux.git
synced 2024-12-02 00:51:44 +00:00
scsi: scsi_dh_alua: Check for negative result value
scsi_execute() will now return a negative error if there was an error prior to command submission; evaluate that instead if checking for DRIVER_ERROR. [mkp: build fix] Link: https://lore.kernel.org/r/20210427083046.31620-6-hare@suse.de Signed-off-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
64aaa3dd09
commit
7e26e3ea02
@ -563,12 +563,12 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_port_group *pg)
|
|||||||
kfree(buff);
|
kfree(buff);
|
||||||
return SCSI_DH_OK;
|
return SCSI_DH_OK;
|
||||||
}
|
}
|
||||||
if (!scsi_sense_valid(&sense_hdr)) {
|
if (retval < 0 || !scsi_sense_valid(&sense_hdr)) {
|
||||||
sdev_printk(KERN_INFO, sdev,
|
sdev_printk(KERN_INFO, sdev,
|
||||||
"%s: rtpg failed, result %d\n",
|
"%s: rtpg failed, result %d\n",
|
||||||
ALUA_DH_NAME, retval);
|
ALUA_DH_NAME, retval);
|
||||||
kfree(buff);
|
kfree(buff);
|
||||||
if (driver_byte(retval) == DRIVER_ERROR)
|
if (retval < 0)
|
||||||
return SCSI_DH_DEV_TEMP_BUSY;
|
return SCSI_DH_DEV_TEMP_BUSY;
|
||||||
if (host_byte(retval) == DID_NO_CONNECT)
|
if (host_byte(retval) == DID_NO_CONNECT)
|
||||||
return SCSI_DH_RES_TEMP_UNAVAIL;
|
return SCSI_DH_RES_TEMP_UNAVAIL;
|
||||||
@ -794,11 +794,11 @@ static unsigned alua_stpg(struct scsi_device *sdev, struct alua_port_group *pg)
|
|||||||
retval = submit_stpg(sdev, pg->group_id, &sense_hdr);
|
retval = submit_stpg(sdev, pg->group_id, &sense_hdr);
|
||||||
|
|
||||||
if (retval) {
|
if (retval) {
|
||||||
if (!scsi_sense_valid(&sense_hdr)) {
|
if (retval < 0 || !scsi_sense_valid(&sense_hdr)) {
|
||||||
sdev_printk(KERN_INFO, sdev,
|
sdev_printk(KERN_INFO, sdev,
|
||||||
"%s: stpg failed, result %d",
|
"%s: stpg failed, result %d",
|
||||||
ALUA_DH_NAME, retval);
|
ALUA_DH_NAME, retval);
|
||||||
if (driver_byte(retval) == DRIVER_ERROR)
|
if (retval < 0)
|
||||||
return SCSI_DH_DEV_TEMP_BUSY;
|
return SCSI_DH_DEV_TEMP_BUSY;
|
||||||
} else {
|
} else {
|
||||||
sdev_printk(KERN_INFO, sdev, "%s: stpg failed\n",
|
sdev_printk(KERN_INFO, sdev, "%s: stpg failed\n",
|
||||||
|
Loading…
Reference in New Issue
Block a user