All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/47] SCSI EH argument reshuffle part II
@ 2017-06-28  8:32 Hannes Reinecke
  2017-06-28  8:32 ` [PATCH 01/47] aacraid: split off functions to generate reset FIB Hannes Reinecke
                   ` (48 more replies)
  0 siblings, 49 replies; 89+ messages in thread
From: Hannes Reinecke @ 2017-06-28  8:32 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: Martin K. Petersen, James Bottomley, linux-scsi, Hannes Reinecke

Hi all,
finally here's the patchset to revamp the SCSI EH callback arguments
which I promised to do (some years ago ...).

The overall idea is to match the scope of the eh_XXX callbacks with
the appropriate argument, eg eh_device_reset_handler() should have a
scsi device as argument etc.
Relying on the scsi command has the problem that
a) we're holding a reference on that command for the entire lifetime
of the error handling and
b) it leads to some 'interesting' driver implementations; some
higher-level EH callback implementations go through the list of
outstanding commands and try to abort this particular command only;
makes one wonder what'll happen to the other commands ...

However, this patchset has the nice side-effect that we don't need to
allocate an out-of-order scsi command in scsi_ioctl_reset(), but can
call the function directly.

As per request from hch the patchset has been split in two parts;
this is the second part which rearranges the individual EH handler
implementation to not rely on the passed in scsi command and do
the final conversion to the new calling convention.

The entire patchset can be found at

https://git.kernel.org/hare/scsi-devel/h/eh-reset.v3

As usual, comments and reviews are welcome.

Hannes Reinecke (47):
  aacraid: split off functions to generate reset FIB
  aacraid: split off host reset
  aacraid: split off device, target, and bus reset
  aacraid: use aac_tmf_callback for reset fib
  aacraid: enable sending of TMFs from aac_hba_send()
  aacraid: add fib flag to mark scsi command callback
  aacraid: complete all commands during bus reset
  sym53c8xx_2: split off bus reset from host reset
  zfcp: open-code fc_block_scsi_eh() for host reset
  ips: Do not try to abort command from host reset
  snic: reserve tag for TMF
  qla1280: separate out host reset function from qla1280_error_action()
  megaraid: pass in NULL scb for host reset
  scsi: Use Scsi_Host as argument for eh_host_reset_handler
  scsi_transport_fc: Use fc_rport as argument for fc_block_scsi_eh
  mptfc: simplify mpt_fc_block_error_handler()
  mptfusion: correct definitions for mptscsih_dev_reset()
  mptfc: open-code mptfc_block_error_handler() for bus reset
  pmcraid: Select device in pmcraid_eh_bus_reset_handler()
  scsi: Use Scsi_Host and channel number as argument for
    eh_bus_reset_handler()
  libiscsi: use cls_session as argument for target and session reset
  bnx2fc: Do not rely on a scsi command when issueing lun or target
    reset
  zfcp: do not rely on scsi command for debugging message
  zfcp: use scsi device as argument for zfcp_task_mgmt_function()
  ibmvfc: open-code reset loop for target reset
  lpfc: use rport as argument for lpfc_send_taskmgmt()
  lpfc: use rport as argument for lpfc_chk_tgt_mapped()
  qla2xxx: open-code qla2xxx_generic_reset()
  qedf: use fc rport as argument for qedf_initiate_tmf()
  sym53c8xx_2: rework reset handling
  bfa: Do not use scsi command to signal TMF status
  scsi: Use scsi_target as argument for eh_target_reset_handler()
  cxlflash: use dedicated reset command in send_tmf()
  aha152x: look for stuck command when resetting device
  fnic: use dedicated device reset command
  a1000u2w: do not rely on the command for inia100_device_reset()
  aic79xx: use scsi device as argument for BUILD_SCSIID()
  aic7xxx: use scsi device as argument for BUILD_SCSIID()
  aic79xx: do not reference scsi command when resetting device
  aic7xxx: do not reference scsi command when resetting device
  xen-scsifront: add scsi device as argument to scsifront_do_request()
  xen-scsifront: call scsifront_action_handler() with a NULL command
    argument
  fas216: Rework device reset to not rely on SCSI command pointer
  csiostor: use separate TMF command
  snic: use dedicated device reset command
  scsi: Move eh_device_reset_handler() to use scsi_device as argument
  scsi: Do not allocate scsi command in scsi_ioctl_reset()

 Documentation/scsi/scsi_eh.txt                  |   6 +-
 Documentation/scsi/scsi_mid_low_api.txt         |  13 +-
 arch/ia64/hp/sim/simscsi.c                      |   2 +-
 drivers/block/cciss_scsi.c                      |  14 +-
 drivers/infiniband/ulp/srp/ib_srp.c             |  14 +-
 drivers/message/fusion/mptfc.c                  |  99 +++++---
 drivers/message/fusion/mptsas.c                 |  10 +-
 drivers/message/fusion/mptscsih.c               | 117 ++++++---
 drivers/message/fusion/mptscsih.h               |   7 +-
 drivers/message/fusion/mptspi.c                 |   8 +-
 drivers/s390/scsi/zfcp_dbf.c                    |  28 +--
 drivers/s390/scsi/zfcp_dbf.h                    |  10 +-
 drivers/s390/scsi/zfcp_ext.h                    |   6 +-
 drivers/s390/scsi/zfcp_fc.h                     |   9 +-
 drivers/s390/scsi/zfcp_fsf.c                    |  21 +-
 drivers/s390/scsi/zfcp_scsi.c                   |  73 ++++--
 drivers/scsi/3w-9xxx.c                          |  11 +-
 drivers/scsi/3w-sas.c                           |  11 +-
 drivers/scsi/3w-xxxx.c                          |  11 +-
 drivers/scsi/53c700.c                           |  39 +--
 drivers/scsi/BusLogic.c                         |  14 +-
 drivers/scsi/NCR5380.c                          |   5 +-
 drivers/scsi/NCR53c406a.c                       |   6 +-
 drivers/scsi/a100u2w.c                          |  52 ++--
 drivers/scsi/aacraid/aacraid.h                  |   1 +
 drivers/scsi/aacraid/commsup.c                  |   3 +-
 drivers/scsi/aacraid/linit.c                    | 318 +++++++++++++++++-------
 drivers/scsi/advansys.c                         |  26 +-
 drivers/scsi/aha152x.c                          |  39 ++-
 drivers/scsi/aha152x.h                          |   2 +-
 drivers/scsi/aha1542.c                          |  27 +-
 drivers/scsi/aic7xxx/aic79xx_osm.c              |  64 ++---
 drivers/scsi/aic7xxx/aic7xxx_osm.c              | 120 ++++-----
 drivers/scsi/arcmsr/arcmsr_hba.c                |   9 +-
 drivers/scsi/arm/fas216.c                       |  67 +++--
 drivers/scsi/arm/fas216.h                       |  11 +-
 drivers/scsi/atari_scsi.c                       |   4 +-
 drivers/scsi/be2iscsi/be_main.c                 |  18 +-
 drivers/scsi/bfa/bfad_im.c                      | 113 +++++----
 drivers/scsi/bfa/bfad_im.h                      |   2 +
 drivers/scsi/bnx2fc/bnx2fc.h                    |   5 +-
 drivers/scsi/bnx2fc/bnx2fc_hwi.c                |  14 +-
 drivers/scsi/bnx2fc/bnx2fc_io.c                 |  97 ++++----
 drivers/scsi/csiostor/csio_hw.h                 |   2 +
 drivers/scsi/csiostor/csio_init.c               |   2 +-
 drivers/scsi/csiostor/csio_scsi.c               |  53 ++--
 drivers/scsi/cxlflash/common.h                  |   3 +-
 drivers/scsi/cxlflash/main.c                    |  51 ++--
 drivers/scsi/dc395x.c                           |  25 +-
 drivers/scsi/dpt_i2o.c                          |  43 ++--
 drivers/scsi/dpti.h                             |   6 +-
 drivers/scsi/eata.c                             |  10 +-
 drivers/scsi/eata_pio.c                         |  29 ++-
 drivers/scsi/esas2r/esas2r.h                    |   8 +-
 drivers/scsi/esas2r/esas2r_main.c               |  55 ++--
 drivers/scsi/esp_scsi.c                         |   8 +-
 drivers/scsi/fdomain.c                          |   2 +-
 drivers/scsi/fdomain.h                          |   2 +-
 drivers/scsi/fnic/fnic.h                        |   4 +-
 drivers/scsi/fnic/fnic_main.c                   |   2 +
 drivers/scsi/fnic/fnic_scsi.c                   | 117 ++++-----
 drivers/scsi/gdth.c                             |  16 +-
 drivers/scsi/hpsa.c                             |  14 +-
 drivers/scsi/hptiop.c                           |   6 +-
 drivers/scsi/ibmvscsi/ibmvfc.c                  |  58 +++--
 drivers/scsi/ibmvscsi/ibmvscsi.c                |  23 +-
 drivers/scsi/imm.c                              |   6 +-
 drivers/scsi/initio.c                           |  11 +-
 drivers/scsi/ipr.c                              |  35 +--
 drivers/scsi/ips.c                              |  40 +--
 drivers/scsi/libfc/fc_fcp.c                     |  18 +-
 drivers/scsi/libiscsi.c                         |  38 ++-
 drivers/scsi/libsas/sas_scsi_host.c             |  21 +-
 drivers/scsi/lpfc/lpfc_scsi.c                   |  67 +++--
 drivers/scsi/mac53c94.c                         |   8 +-
 drivers/scsi/megaraid.c                         |  46 ++--
 drivers/scsi/megaraid.h                         |   2 +-
 drivers/scsi/megaraid/megaraid_mbox.c           |  14 +-
 drivers/scsi/megaraid/megaraid_sas.h            |   3 +-
 drivers/scsi/megaraid/megaraid_sas_base.c       |  38 ++-
 drivers/scsi/megaraid/megaraid_sas_fusion.c     |  47 ++--
 drivers/scsi/mesh.c                             |  10 +-
 drivers/scsi/mpt3sas/mpt3sas_scsih.c            |  77 +++---
 drivers/scsi/mvumi.c                            |   7 +-
 drivers/scsi/ncr53c8xx.c                        |   4 +-
 drivers/scsi/nsp32.c                            |  12 +-
 drivers/scsi/pcmcia/aha152x_stub.c              |   2 +-
 drivers/scsi/pcmcia/nsp_cs.c                    |  10 +-
 drivers/scsi/pcmcia/qlogic_stub.c               |   4 +-
 drivers/scsi/pcmcia/sym53c500_cs.c              |   8 +-
 drivers/scsi/pmcraid.c                          |  75 ++++--
 drivers/scsi/ppa.c                              |   6 +-
 drivers/scsi/qedf/qedf.h                        |   5 +-
 drivers/scsi/qedf/qedf_io.c                     |  48 ++--
 drivers/scsi/qedf/qedf_main.c                   |  16 +-
 drivers/scsi/qedi/qedi_iscsi.c                  |   3 +-
 drivers/scsi/qla1280.c                          |  72 +++---
 drivers/scsi/qla2xxx/qla_os.c                   | 167 +++++++------
 drivers/scsi/qla4xxx/ql4_os.c                   |  85 ++++---
 drivers/scsi/qlogicfas408.c                     |  10 +-
 drivers/scsi/qlogicfas408.h                     |   2 +-
 drivers/scsi/scsi_debug.c                       |  86 +++----
 drivers/scsi/scsi_error.c                       | 160 ++++++------
 drivers/scsi/scsi_transport_fc.c                |   7 +-
 drivers/scsi/scsi_transport_iscsi.c             |   6 +-
 drivers/scsi/smartpqi/smartpqi_init.c           |   6 +-
 drivers/scsi/snic/snic.h                        |   6 +-
 drivers/scsi/snic/snic_main.c                   |   3 +
 drivers/scsi/snic/snic_scsi.c                   | 126 ++++------
 drivers/scsi/stex.c                             |   7 +-
 drivers/scsi/storvsc_drv.c                      |   4 +-
 drivers/scsi/sym53c416.c                        |  16 +-
 drivers/scsi/sym53c8xx_2/sym_glue.c             | 190 ++++++++------
 drivers/scsi/ufs/ufshcd.c                       |  24 +-
 drivers/scsi/virtio_scsi.c                      |  14 +-
 drivers/scsi/vmw_pvscsi.c                       |  20 +-
 drivers/scsi/wd33c93.c                          |   4 +-
 drivers/scsi/wd33c93.h                          |   2 +-
 drivers/scsi/wd719x.c                           |  17 +-
 drivers/scsi/xen-scsifront.c                    |  54 ++--
 drivers/staging/rts5208/rtsx.c                  |   4 +-
 drivers/staging/unisys/visorhba/visorhba_main.c |  42 ++--
 drivers/target/loopback/tcm_loop.c              |  17 +-
 drivers/usb/image/microtek.c                    |   4 +-
 drivers/usb/storage/scsiglue.c                  |   8 +-
 drivers/usb/storage/uas.c                       |   3 +-
 include/scsi/libfc.h                            |   4 +-
 include/scsi/libiscsi.h                         |   6 +-
 include/scsi/libsas.h                           |   4 +-
 include/scsi/scsi_host.h                        |   8 +-
 include/scsi/scsi_transport_fc.h                |   2 +-
 include/scsi/scsi_transport_iscsi.h             |   2 +-
 132 files changed, 2093 insertions(+), 1845 deletions(-)

-- 
1.8.5.6

^ permalink raw reply	[flat|nested] 89+ messages in thread

end of thread, other threads:[~2018-01-08 11:26 UTC | newest]

Thread overview: 89+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-28  8:32 [PATCH 00/47] SCSI EH argument reshuffle part II Hannes Reinecke
2017-06-28  8:32 ` [PATCH 01/47] aacraid: split off functions to generate reset FIB Hannes Reinecke
2017-06-28  9:07   ` Johannes Thumshirn
2017-06-29 19:59   ` Raghava Aditya Renukunta
2017-06-28  8:32 ` [PATCH 02/47] aacraid: split off host reset Hannes Reinecke
2017-06-28  9:10   ` Johannes Thumshirn
2017-06-29 20:00   ` Raghava Aditya Renukunta
2017-06-28  8:32 ` [PATCH 03/47] aacraid: split off device, target, and bus reset Hannes Reinecke
2017-06-28  9:14   ` Johannes Thumshirn
2017-06-29 20:01   ` Raghava Aditya Renukunta
2017-06-28  8:32 ` [PATCH 04/47] aacraid: use aac_tmf_callback for reset fib Hannes Reinecke
2017-06-28 19:42   ` Dave Carroll
2017-06-29 20:06   ` Raghava Aditya Renukunta
2017-06-30  7:19     ` Hannes Reinecke
2017-06-28  8:32 ` [PATCH 05/47] aacraid: enable sending of TMFs from aac_hba_send() Hannes Reinecke
2017-06-28  9:17   ` Johannes Thumshirn
2017-06-29 20:07   ` Raghava Aditya Renukunta
2017-06-28  8:32 ` [PATCH 06/47] aacraid: add fib flag to mark scsi command callback Hannes Reinecke
2017-06-28  9:18   ` Johannes Thumshirn
2017-06-29 20:07   ` Raghava Aditya Renukunta
2017-06-28  8:32 ` [PATCH 07/47] aacraid: complete all commands during bus reset Hannes Reinecke
2017-06-28  9:19   ` Johannes Thumshirn
2017-06-29 20:07   ` Raghava Aditya Renukunta
2017-06-28  8:32 ` [PATCH 08/47] sym53c8xx_2: split off bus reset from host reset Hannes Reinecke
2017-06-28  9:19   ` Johannes Thumshirn
2017-06-28  9:25   ` Johannes Thumshirn
2017-06-28  8:32 ` [PATCH 09/47] zfcp: open-code fc_block_scsi_eh() for " Hannes Reinecke
2017-07-24 16:18   ` Steffen Maier
2017-07-24 18:01     ` Hannes Reinecke
2017-07-24 16:24   ` Steffen Maier
2017-06-28  8:32 ` [PATCH 10/47] ips: Do not try to abort command from " Hannes Reinecke
2017-06-28  9:31   ` Johannes Thumshirn
2017-06-28  8:32 ` [PATCH 11/47] snic: reserve tag for TMF Hannes Reinecke
2017-06-28  9:37   ` Johannes Thumshirn
2017-06-28  8:32 ` [PATCH 12/47] qla1280: separate out host reset function from qla1280_error_action() Hannes Reinecke
2017-06-28  9:39   ` Johannes Thumshirn
2017-06-28  8:32 ` [PATCH 13/47] megaraid: pass in NULL scb for host reset Hannes Reinecke
2017-06-28  9:39   ` Johannes Thumshirn
2017-06-28 13:41   ` Sumit Saxena
2017-06-28 15:30     ` Hannes Reinecke
2017-06-28 17:40       ` Kashyap Desai
     [not found]         ` <CAHtARFFTFMaUsVZ_KuYGr3hFcTuD5sf=h2+1RM6aj8yfpwsCWQ@mail.gmail.com>
2017-06-28 18:40           ` Christoph Hellwig
2017-06-29  5:53         ` Hannes Reinecke
2017-06-29  7:51           ` Sumit Saxena
2017-06-28  8:32 ` [PATCH 14/47] scsi: Use Scsi_Host as argument for eh_host_reset_handler Hannes Reinecke
2017-07-24 16:55   ` Steffen Maier
2017-06-28  8:32 ` [PATCH 15/47] scsi_transport_fc: Use fc_rport as argument for fc_block_scsi_eh Hannes Reinecke
2017-07-24 16:34   ` Steffen Maier
2017-06-28  8:32 ` [PATCH 16/47] mptfc: simplify mpt_fc_block_error_handler() Hannes Reinecke
2017-06-28  8:32 ` [PATCH 17/47] mptfusion: correct definitions for mptscsih_dev_reset() Hannes Reinecke
2017-06-28  8:32 ` [PATCH 18/47] mptfc: open-code mptfc_block_error_handler() for bus reset Hannes Reinecke
2017-06-28  8:32 ` [PATCH 19/47] pmcraid: Select device in pmcraid_eh_bus_reset_handler() Hannes Reinecke
2017-06-28  8:32 ` [PATCH 20/47] scsi: Use Scsi_Host and channel number as argument for eh_bus_reset_handler() Hannes Reinecke
2017-06-28  8:32 ` [PATCH 21/47] libiscsi: use cls_session as argument for target and session reset Hannes Reinecke
2017-06-28  8:32 ` [PATCH 22/47] bnx2fc: Do not rely on a scsi command when issueing lun or target reset Hannes Reinecke
2017-06-28  8:32 ` [PATCH 23/47] zfcp: do not rely on scsi command for debugging message Hannes Reinecke
2017-06-28  8:32 ` [PATCH 24/47] zfcp: use scsi device as argument for zfcp_task_mgmt_function() Hannes Reinecke
2017-07-24 17:15   ` Steffen Maier
2017-07-25 14:14     ` Hannes Reinecke
2017-06-28  8:32 ` [PATCH 25/47] ibmvfc: open-code reset loop for target reset Hannes Reinecke
2017-06-28  8:32 ` [PATCH 26/47] lpfc: use rport as argument for lpfc_send_taskmgmt() Hannes Reinecke
2017-06-28  8:32 ` [PATCH 27/47] lpfc: use rport as argument for lpfc_chk_tgt_mapped() Hannes Reinecke
2017-06-28  8:32 ` [PATCH 28/47] qla2xxx: open-code qla2xxx_generic_reset() Hannes Reinecke
2017-06-28  8:32 ` [PATCH 29/47] qedf: use fc rport as argument for qedf_initiate_tmf() Hannes Reinecke
2017-06-28  8:32 ` [PATCH 30/47] sym53c8xx_2: rework reset handling Hannes Reinecke
2017-06-28  8:32 ` [PATCH 31/47] bfa: Do not use scsi command to signal TMF status Hannes Reinecke
2017-06-28  8:32 ` [PATCH 32/47] scsi: Use scsi_target as argument for eh_target_reset_handler() Hannes Reinecke
2017-07-24 18:10   ` Steffen Maier
2017-07-25 14:19     ` Hannes Reinecke
2017-08-02 16:52       ` Steffen Maier
2017-06-28  8:32 ` [PATCH 33/47] cxlflash: use dedicated reset command in send_tmf() Hannes Reinecke
2017-06-28 16:29   ` Matthew R. Ochs
2017-06-28  8:33 ` [PATCH 34/47] aha152x: look for stuck command when resetting device Hannes Reinecke
2017-06-28  8:33 ` [PATCH 35/47] fnic: use dedicated device reset command Hannes Reinecke
2017-06-28  8:33 ` [PATCH 36/47] a1000u2w: do not rely on the command for inia100_device_reset() Hannes Reinecke
2017-06-28  8:33 ` [PATCH 37/47] aic79xx: use scsi device as argument for BUILD_SCSIID() Hannes Reinecke
2017-06-28  8:33 ` [PATCH 38/47] aic7xxx: " Hannes Reinecke
2017-06-28  8:33 ` [PATCH 39/47] aic79xx: do not reference scsi command when resetting device Hannes Reinecke
2017-06-28  8:33 ` [PATCH 40/47] aic7xxx: " Hannes Reinecke
2017-06-28  8:33 ` [PATCH 41/47] xen-scsifront: add scsi device as argument to scsifront_do_request() Hannes Reinecke
2017-06-28  8:33 ` [PATCH 42/47] xen-scsifront: call scsifront_action_handler() with a NULL command argument Hannes Reinecke
2017-06-28  8:33 ` [PATCH 43/47] fas216: Rework device reset to not rely on SCSI command pointer Hannes Reinecke
2017-06-28  8:33 ` [PATCH 44/47] csiostor: use separate TMF command Hannes Reinecke
2017-06-28  8:33 ` [PATCH 45/47] snic: use dedicated device reset command Hannes Reinecke
2017-06-28  8:33 ` [PATCH 46/47] scsi: Move eh_device_reset_handler() to use scsi_device as argument Hannes Reinecke
2017-07-24 18:42   ` Steffen Maier
2017-06-28  8:33 ` [PATCH 47/47] scsi: Do not allocate scsi command in scsi_ioctl_reset() Hannes Reinecke
2017-06-28 14:06 ` [PATCH 00/47] SCSI EH argument reshuffle part II Christoph Hellwig
2018-01-08 11:26 ` Christoph Hellwig

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.