Hi all, (taking up an old thread:) here's the second batch of patches for my EH rework. It modifies the reset callbacks for SCSI drivers such that the final conversion to drop the 'struct scsi_cmnd' argument and use the entity in question (host, bus, target, device) as the argument to the SCSI EH callbacks becomes possible. The second part covers drivers which require a bit more love. In particular the fnic, snic, and csiostor drivers require a tag to send TMFs. So to handle that I've modified the patches to call scsi_alloc_request() with the NOWAIT flag; that will return a scsi command with a valid tag. It might fail (eg when the tagset is full), but in these cases it might be better to fall back to host_reset anyway. As usual, comments and reviews are welcome. Changes to v4: - rework snic to use a dedicated tag for host reset - rework snic to allocate TMFs on the fly - rework fnic to allocate TMFs on the fly - rework csiostor to allocat TMFs on the fly - drop fc_block_rport() from zfcp host_reset - Rebase to latest linus tree Changes to v3: - Move fnic and snic patches to the next patchset - Include reviews from Ewan Milne Changes to v2: - Include reviews from John Garry - move mpi3mr, zfcp, sym53c8xx_2, and qla1280 patches to the next patchset Changes to the initial version: - Include reviews from Christoph - Fixup build robot issues Hannes Reinecke (15): zfcp: do not wait for rports to become unblocked after host reset bfa: Do not use scsi command to signal TMF status aha152x: look for stuck command when resetting device a1000u2w: do not rely on the command for inia100_device_reset() fas216: Rework device reset to not rely on SCSI command pointer xen-scsifront: add scsi device as argument to scsifront_do_request() xen-scsifront: rework scsifront_action_handler() libiscsi: use cls_session as argument for target and session reset scsi_transport_iscsi: use session as argument for iscsi_block_scsi_eh() snic: reserve tag for TMF snic: allocate device reset command snic: Use scsi_host_busy_iter() to traverse commands fnic: allocate device reset command on the fly fnic: use fc_block_rport() correctly csiostor: use separate TMF command drivers/s390/scsi/zfcp_scsi.c | 4 - drivers/scsi/a100u2w.c | 43 +--- drivers/scsi/aha152x.c | 26 ++- drivers/scsi/arm/fas216.c | 39 ++-- drivers/scsi/be2iscsi/be_main.c | 10 +- drivers/scsi/bfa/bfad_im.c | 112 +++++----- drivers/scsi/bfa/bfad_im.h | 2 + drivers/scsi/csiostor/csio_scsi.c | 72 ++++--- drivers/scsi/fnic/fnic.h | 1 - drivers/scsi/fnic/fnic_scsi.c | 115 +++++----- drivers/scsi/libiscsi.c | 21 +- drivers/scsi/qla4xxx/ql4_os.c | 34 +-- drivers/scsi/scsi_transport_iscsi.c | 6 +- drivers/scsi/snic/snic.h | 2 +- drivers/scsi/snic/snic_main.c | 5 +- drivers/scsi/snic/snic_scsi.c | 319 ++++++++++++---------------- drivers/scsi/xen-scsifront.c | 49 +++-- include/scsi/libiscsi.h | 2 +- include/scsi/scsi_transport_iscsi.h | 2 +- 19 files changed, 414 insertions(+), 450 deletions(-) -- 2.35.3