Message ID | 20231016121542.111501-1-hare@suse.de |
---|---|
Headers | show |
Series | scsi: EH rework, main part | expand |
Looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
Looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
Looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
On 2023/10/16 20:15, Hannes Reinecke wrote: > The device reset function should only depend on the scsi device, > not the scsi command. > > Signed-off-by: Hannes Reinecke <hare@suse.de> > Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> > --- > Documentation/scsi/scsi_eh.rst | 2 +- > Documentation/scsi/scsi_mid_low_api.rst | 4 +- > drivers/infiniband/ulp/srp/ib_srp.c | 6 +-- > drivers/message/fusion/mptfc.c | 12 +++--- > drivers/message/fusion/mptscsih.c | 27 ++++--------- > drivers/message/fusion/mptscsih.h | 2 +- > drivers/s390/scsi/zfcp_scsi.c | 4 +- > drivers/scsi/a100u2w.c | 7 ++-- > drivers/scsi/aacraid/linit.c | 9 ++--- > drivers/scsi/aha152x.c | 6 +-- > drivers/scsi/aha1542.c | 8 ++-- > drivers/scsi/aic7xxx/aic79xx_osm.c | 27 +++++-------- > drivers/scsi/aic7xxx/aic7xxx_osm.c | 4 +- > drivers/scsi/arm/fas216.c | 5 +-- > drivers/scsi/arm/fas216.h | 6 +-- > drivers/scsi/be2iscsi/be_main.c | 8 ++-- > drivers/scsi/bfa/bfad_im.c | 3 +- > drivers/scsi/bnx2fc/bnx2fc.h | 2 +- > drivers/scsi/bnx2fc/bnx2fc_io.c | 6 +-- > drivers/scsi/csiostor/csio_scsi.c | 5 +-- > drivers/scsi/cxlflash/main.c | 5 +-- > drivers/scsi/esas2r/esas2r.h | 2 +- > drivers/scsi/esas2r/esas2r_main.c | 3 +- > drivers/scsi/fnic/fnic.h | 2 +- > drivers/scsi/fnic/fnic_scsi.c | 5 +-- > drivers/scsi/hpsa.c | 14 +++---- > drivers/scsi/ibmvscsi/ibmvfc.c | 8 ++-- > drivers/scsi/ibmvscsi/ibmvscsi.c | 19 ++++----- > drivers/scsi/ipr.c | 24 +++++------ > drivers/scsi/libfc/fc_fcp.c | 13 +++--- > drivers/scsi/libiscsi.c | 15 ++++--- > drivers/scsi/libsas/sas_scsi_host.c | 12 +++--- > drivers/scsi/lpfc/lpfc_scsi.c | 12 +++--- > drivers/scsi/mpi3mr/mpi3mr_os.c | 40 ++++++++----------- > drivers/scsi/mpt3sas/mpt3sas_scsih.c | 30 ++++++-------- > drivers/scsi/pcmcia/nsp_cs.h | 2 - > drivers/scsi/pmcraid.c | 8 ++-- > drivers/scsi/qedf/qedf_main.c | 6 +-- > drivers/scsi/qla1280.c | 53 ++++++++----------------- > drivers/scsi/qla2xxx/qla_os.c | 24 +++++------ > drivers/scsi/qla4xxx/ql4_os.c | 23 +++++------ > drivers/scsi/scsi_debug.c | 3 +- > drivers/scsi/scsi_error.c | 2 +- > drivers/scsi/smartpqi/smartpqi.h | 1 - > drivers/scsi/smartpqi/smartpqi_init.c | 19 ++++----- > drivers/scsi/snic/snic.h | 2 +- > drivers/scsi/snic/snic_scsi.c | 4 +- > drivers/scsi/virtio_scsi.c | 12 +++--- > drivers/scsi/vmw_pvscsi.c | 10 ++--- > drivers/scsi/wd719x.c | 6 +-- > drivers/scsi/xen-scsifront.c | 6 +-- > drivers/staging/rts5208/rtsx.c | 6 ++- > drivers/target/loopback/tcm_loop.c | 8 ++-- > drivers/ufs/core/ufshcd.c | 8 ++-- > drivers/usb/storage/scsiglue.c | 4 +- > drivers/usb/storage/uas.c | 3 +- > include/scsi/libfc.h | 2 +- > include/scsi/libiscsi.h | 2 +- > include/scsi/libsas.h | 2 +- > include/scsi/scsi_host.h | 2 +- > 60 files changed, 253 insertions(+), 322 deletions(-) > > diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c > index c247a3c7ae17..a2c3ffa2b5bd 100644 > --- a/drivers/scsi/scsi_debug.c > +++ b/drivers/scsi/scsi_debug.c > @@ -5306,9 +5306,8 @@ static void scsi_debug_stop_all_queued(struct scsi_device *sdp) > scsi_debug_stop_all_queued_iter, sdp); > } > > -static int scsi_debug_device_reset(struct scsi_cmnd *SCpnt) > +static int scsi_debug_device_reset(struct scsi_device *sdp) > { > - struct scsi_device *sdp = SCpnt->device; > struct sdebug_dev_info *devip = sdp->hostdata; > > ++num_dev_resets; The change of my scsi_debug error injection conflict with it, you can fix the conflict with following: diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c index a7c374b399a1..60070d12c949 100644 --- a/drivers/scsi/scsi_debug.c +++ b/drivers/scsi/scsi_debug.c @@ -5590,12 +5590,10 @@ static void scsi_debug_stop_all_queued(struct scsi_device *sdp) scsi_debug_stop_all_queued_iter, sdp); } -static int sdebug_fail_lun_reset(struct scsi_cmnd *cmnd) +static int sdebug_fail_lun_reset(struct scsi_device *sdp) { - struct scsi_device *sdp = cmnd->device; struct sdebug_dev_info *devip = (struct sdebug_dev_info *)sdp->hostdata; struct sdebug_err_inject *err; - unsigned char *cmd = cmnd->cmnd; int ret = 0; if (devip == NULL) @@ -5603,8 +5601,7 @@ static int sdebug_fail_lun_reset(struct scsi_cmnd *cmnd) rcu_read_lock(); list_for_each_entry_rcu(err, &devip->inject_err_list, list) { - if (err->type == ERR_LUN_RESET_FAILED && - (err->cmd == cmd[0] || err->cmd == 0xff)) { + if (err->type == ERR_LUN_RESET_FAILED) { ret = !!err->cnt; if (err->cnt < 0) err->cnt++; @@ -5618,12 +5615,9 @@ static int sdebug_fail_lun_reset(struct scsi_cmnd *cmnd) return 0; } -static int scsi_debug_device_reset(struct scsi_cmnd *SCpnt) +static int scsi_debug_device_reset(struct scsi_device *sdp) { - struct scsi_device *sdp = SCpnt->device; struct sdebug_dev_info *devip = sdp->hostdata; - u8 *cmd = SCpnt->cmnd; - u8 opcode = cmd[0]; ++num_dev_resets; @@ -5634,8 +5628,8 @@ static int scsi_debug_device_reset(struct scsi_cmnd *SCpnt) if (devip) set_bit(SDEBUG_UA_POR, devip->uas_bm); - if (sdebug_fail_lun_reset(SCpnt)) { - scmd_printk(KERN_INFO, SCpnt, "fail lun reset 0x%x\n", opcode); + if (sdebug_fail_lun_reset(sdp)) { + sdev_printk(KERN_INFO, sdp, "fail lun reset\n"); return FAILED; }