scsi_target_unblock() must unblock SCSI devices even if this function is called after unloading of the LLD that created these devices has started. This is necessary to prevent that __scsi_remove_device() hangs on the SYNCHRONIZE CACHE command issued by the sd driver during shutdown. Bart Van Assche (3): __scsi_iterate_devices(): Make the get and put functions arguments Introduce starget_for_all_devices() and shost_for_all_devices() Ensure that scsi_target_unblock() examines all devices drivers/scsi/scsi.c | 60 +++++++++++++++++++++++++++++++++++++++++----- drivers/scsi/scsi_lib.c | 22 ++++++++++++++--- include/scsi/scsi_device.h | 29 ++++++++++++++++++---- 3 files changed, 97 insertions(+), 14 deletions(-) -- 2.12.0