summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_lib.c
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.com>2018-10-07 10:35:35 +0200
committerMartin K. Petersen <martin.petersen@oracle.com>2018-10-16 05:53:29 +0200
commita33e5bfb29721015349a3864c91abe11f6195d5c (patch)
tree82065a8ff7f13a8d7842dd0ac2bdb4b16fafe357 /drivers/scsi/scsi_lib.c
parentscsi: esp_scsi: remove union in esp_cmd_priv (diff)
downloadlinux-a33e5bfb29721015349a3864c91abe11f6195d5c.tar.xz
linux-a33e5bfb29721015349a3864c91abe11f6195d5c.zip
scsi: core: Allow state transitions from OFFLINE to BLOCKED
When an RSCN gets delayed (or not being sent at all), the transport class will detect an error, EH kicks in, and eventually will be setting the device to offline. If we receive an RSCN after that, the device will stay in 'offline'. This patch allows for an 'offline' to 'blocked' transition, thereby allowing the device to become active again. Signed-off-by: Hannes Reinecke <hare@suse.com> 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.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index aaa1819b0a69..7db3c5fae469 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -2764,6 +2764,7 @@ scsi_device_set_state(struct scsi_device *sdev, enum scsi_device_state state)
switch (oldstate) {
case SDEV_RUNNING:
case SDEV_CREATED_BLOCK:
+ case SDEV_OFFLINE:
break;
default:
goto illegal;