Several weeks ago Israel Rukshin reported that __scsi_remove_device() hangs if it is waiting for the SYNCHRONIZE CACHE command submitted by the sd driver to finish if the block layer queue is stopped and does not get restarted. This patch series avoids that that hang occurs. Bart Van Assche (4): Introduce scsi_start_queue() Introduce scsi_execute_async() sd: Make synchronize cache upon shutdown asynchronous Avoid that __scsi_remove_device() hangs drivers/scsi/scsi_lib.c | 114 ++++++++++++++++++++++++++++++++++----------- drivers/scsi/scsi_priv.h | 1 + drivers/scsi/scsi_sysfs.c | 9 ++++ drivers/scsi/sd.c | 25 +++++++++- include/scsi/scsi_device.h | 4 ++ 5 files changed, 124 insertions(+), 29 deletions(-) -- 2.12.0