]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
scsi: core: Allow the state change from SDEV_QUIESCE to SDEV_BLOCK
authorDexuan Cui <decui@microsoft.com>
Sat, 18 Apr 2020 00:40:45 +0000 (17:40 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 22 Apr 2020 03:44:26 +0000 (23:44 -0400)
commit6cbb7aeded716b8660ee5d4b3dc082f791cdebaa
tree95691047a6ff203e661b5c57de3717307696911e
parentfa17a6dc84d1eb6b62bcf981a4ddcc966b1a2c04
scsi: core: Allow the state change from SDEV_QUIESCE to SDEV_BLOCK

The APIs scsi_host_block()/scsi_host_unblock() were recently added by
commit 2bb955840c1d ("scsi: core: add scsi_host_(block,unblock) helper
function") and so far the APIs are only used by: commit 3d3ca53b1639
("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: 2bb955840c1d ("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>
drivers/scsi/scsi_lib.c