I am testing SCSI error handle with my previous scsi_debug error injection patches, and found two issue when removing device and error handler happened together. The first patch fix IO hang because scsi_eh_flush_done_q() would retry command if the device is in SDEV_CANCEL state; The second patch fix the issue which device's eh_device_reset_handler not called in recovery when device is in removing progress. Wenchao Hao (2): scsi: core: scsi_device_online() return false if state is SDEV_CANCEL scsi: scsi_error: Fix device reset is not triggered drivers/infiniband/ulp/srp/ib_srp.c | 2 +- drivers/message/fusion/mptctl.c | 6 ++-- drivers/message/fusion/mptsas.c | 8 ++--- drivers/message/fusion/mptspi.c | 6 ++-- drivers/s390/scsi/zfcp_fsf.c | 4 +-- drivers/s390/scsi/zfcp_scsi.c | 2 +- drivers/scsi/arm/acornscsi.c | 2 +- drivers/scsi/arm/fas216.c | 4 +-- drivers/scsi/bfa/bfad_im.c | 4 +-- drivers/scsi/ibmvscsi/ibmvfc.c | 2 +- drivers/scsi/lpfc/lpfc_scsi.c | 4 +-- drivers/scsi/megaraid/megaraid_sas_base.c | 2 +- drivers/scsi/megaraid/megaraid_sas_fusion.c | 2 +- drivers/scsi/mpt3sas/mpt3sas_ctl.c | 4 +-- drivers/scsi/mpt3sas/mpt3sas_scsih.c | 16 ++++----- drivers/scsi/myrb.c | 2 +- drivers/scsi/myrs.c | 2 +- drivers/scsi/scsi.c | 37 ++++++++++++--------- drivers/scsi/scsi_debug.c | 2 +- drivers/scsi/scsi_error.c | 12 +++---- drivers/scsi/scsi_lib.c | 6 ++-- drivers/scsi/scsi_scan.c | 2 +- drivers/scsi/scsi_transport_srp.c | 2 +- drivers/scsi/ses.c | 2 +- drivers/scsi/storvsc_drv.c | 2 +- drivers/scsi/virtio_scsi.c | 2 +- drivers/ufs/core/ufshcd.c | 4 +-- include/scsi/scsi_device.h | 15 ++++++--- 28 files changed, 85 insertions(+), 73 deletions(-) -- 2.32.0