> > * mpi3mr_slave_destroy - Slave destroy callback handler > > * @sdev: SCSI device reference > > @@ -126,10 +658,114 @@ static int mpi3mr_target_alloc(struct > > scsi_target *starget) static int mpi3mr_qcmd(struct Scsi_Host *shost, > > struct scsi_cmnd *scmd) > > { > > + struct mpi3mr_ioc *mrioc = shost_priv(shost); > > + struct mpi3mr_stgt_priv_data *stgt_priv_data; > > + struct mpi3mr_sdev_priv_data *sdev_priv_data; > > + struct scmd_priv *scmd_priv_data = NULL; > > + Mpi3SCSIIORequest_t *scsiio_req = NULL; > > + struct op_req_qinfo *op_req_q = NULL; > > int retval = 0; > > + u16 dev_handle; > > + u16 host_tag; > > + u32 scsiio_flags = 0; > > + struct request *rq = scmd->request; > > + int iprio_class; > > + > > + sdev_priv_data = scmd->device->hostdata; > > + if (!sdev_priv_data || !sdev_priv_data->tgt_priv_data) { > > + scmd->result = DID_NO_CONNECT << 16; > > + scmd->scsi_done(scmd); > > + goto out; > > + } > > > > - scmd->result = DID_NO_CONNECT << 16; > > - scmd->scsi_done(scmd); > > + if (mrioc->stop_drv_processing) { > > + scmd->result = DID_NO_CONNECT << 16; > > + scmd->scsi_done(scmd); > > + goto out; > > + } > Hi Kashyap, > for what is the above test needed (stop_drv_processing) it looks like other > drivers don't need to protect exit function in this was (for example mpt3sas). Tomas, This driver code Is still under active development and I will review this (marking as TBD). Not only this area, but there are many more optimization possible in mpi3mr driver. We want to start with stable version of driver and gradually improve. as multiple h/w queue support and mpt3sas is single queue h/w. Due to some h/w differences we have noticed some issue are very frequent for mp3mr vs mpt3sas. We can opt other way around as well. We can remove this check now and when we find the bug we can add the fix with root cause details. Let me know if you are OK to keep this check now or add it whenever it is required. Kashyap > Regards, > Tomash