scsi: core: Allow the state change from SDEV_QUIESCE to SDEV_BLOCK
The APIs scsi_host_block()/scsi_host_unblock() were recently added by commit2bb955840c
("scsi: core: add scsi_host_(block,unblock) helper function") and so far the APIs are only used by: commit3d3ca53b16
("scsi: aacraid: use scsi_host_(block,unblock) to block I/O"). However, from reading the code, I think the APIs don't really work for aacraid, because, in the resume path of hibernation, when aac_suspend() -> scsi_host_block() is called, scsi_device_quiesce() has set the state to SDEV_QUIESCE, so aac_suspend() -> scsi_host_block() returns -EINVAL. Fix the issue by allowing the state change. Link: https://lore.kernel.org/r/1587170445-50013-1-git-send-email-decui@microsoft.com Fixes:2bb955840c
("scsi: core: add scsi_host_(block,unblock) helper function") Reviewed-by: Ewan D. Milne <emilne@redhat.com> Reviewed-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Dexuan Cui <decui@microsoft.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Родитель
fa17a6dc84
Коммит
6cbb7aeded
|
@ -2284,6 +2284,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_QUIESCE:
|
||||
case SDEV_OFFLINE:
|
||||
break;
|
||||
default:
|
||||
|
|
Загрузка…
Ссылка в новой задаче