Commit 0516c08d10835a8f9169051504cbc9929b3a7f3e

Authored by Bart Van Assche
Committed by James Bottomley
1 parent e2eb7244bc

[SCSI] enable destruction of blocked devices which fail LUN scanning

If something goes wrong during LUN scanning, e.g. a transport layer
failure occurs, then __scsi_remove_device() can get invoked by the
LUN scanning code for a SCSI device in state SDEV_CREATED_BLOCK and
before the SCSI device has been added to sysfs (is_visible == 0).
Make sure that even in this case the transition into state SDEV_DEL
occurs. This avoids that __scsi_remove_device() can get invoked a
second time by scsi_forget_host() if this last function is invoked
from another thread than the thread that performs LUN scanning.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>

Showing 1 changed file with 1 additions and 0 deletions Side-by-side Diff

drivers/scsi/scsi_lib.c
... ... @@ -2193,6 +2193,7 @@
2193 2193 case SDEV_OFFLINE:
2194 2194 case SDEV_TRANSPORT_OFFLINE:
2195 2195 case SDEV_CANCEL:
  2196 + case SDEV_CREATED_BLOCK:
2196 2197 break;
2197 2198 default:
2198 2199 goto illegal;