summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_lib.c
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2020-09-30 10:02:56 +0200
committerMartin K. Petersen <martin.petersen@oracle.com>2020-11-11 04:58:12 +0100
commit0d88232010d5f40a8a31ff7b454e3f2594fd047f (patch)
tree27a1bdfd9b21b2cee221a5142538e96d6dc1c874 /drivers/scsi/scsi_lib.c
parentscsi: scsi_dh_alua: Set 'transitioning' state on Unit Attention (diff)
downloadlinux-0d88232010d5f40a8a31ff7b454e3f2594fd047f.tar.xz
linux-0d88232010d5f40a8a31ff7b454e3f2594fd047f.zip
scsi: core: Return BLK_STS_AGAIN for ALUA transitioning
Whenever we encounter a sense code of ALUA transitioning in scsi_io_completion() it means that the SCSI midlayer ran out of retries trying to wait for ALUA transitioning. In these cases we should be passing up the error, but signalling that the I/O might be retried, preferably on another path. So return BLK_STS_AGAIN in these cases. [mkp: typo + fallthrough] Link: https://lore.kernel.org/r/20200930080256.90964-5-hare@suse.de Reviewed-by: Ewan D. Milne <emilne@redhat.com> Signed-off-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/scsi_lib.c')
-rw-r--r--drivers/scsi/scsi_lib.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 7691196f288c..855e48c7514f 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -766,6 +766,9 @@ static void scsi_io_completion_action(struct scsi_cmnd *cmd, int result)
case 0x24: /* depopulation in progress */
action = ACTION_DELAYED_RETRY;
break;
+ case 0x0a: /* ALUA state transition */
+ blk_stat = BLK_STS_AGAIN;
+ fallthrough;
default:
action = ACTION_FAIL;
break;