On 11/10/2014 01:21 PM, Sumit.Saxena@xxxxxxxxxxxxx wrote: > Do not process any SCSI and IOCTL command further(return them with appropriate return values to callers), > while driver removal is in progress/PCI shutdown is invoked. > > Signed-off-by: Sumit Saxena <sumit.saxena@xxxxxxxxxxxxx> > Signed-off-by: Kashyap Desai <kashyap.desai@xxxxxxxxxxxxx> > --- > drivers/scsi/megaraid/megaraid_sas_base.c | 20 ++++++++++++++++---- > 1 files changed, 16 insertions(+), 4 deletions(-) > > diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c > index f6a69a3..7754eeb 100644 > --- a/drivers/scsi/megaraid/megaraid_sas_base.c > +++ b/drivers/scsi/megaraid/megaraid_sas_base.c > @@ -1572,6 +1572,12 @@ megasas_queue_command(struct Scsi_Host *shost, struct scsi_cmnd *scmd) > instance = (struct megasas_instance *) > scmd->device->host->hostdata; > > + if (instance->unload == 1) { > + scmd->result = DID_NO_CONNECT << 16; > + scmd->scsi_done(scmd); > + return 0; > + } > + > if (instance->issuepend_done == 0) > return SCSI_MLQUEUE_HOST_BUSY; > > @@ -4957,10 +4963,6 @@ static int megasas_io_attach(struct megasas_instance *instance) > return -ENODEV; > } > > - /* > - * Trigger SCSI to scan our drives > - */ > - scsi_scan_host(host); > return 0; > } > > @@ -5288,6 +5290,10 @@ retry_irq_register: > goto fail_io_attach; > > instance->unload = 0; > + /* > + * Trigger SCSI to scan our drives > + */ > + scsi_scan_host(host); > > /* > * Initiate AEN (Asynchronous Event Notification) > @@ -6051,6 +6057,12 @@ megasas_mgmt_fw_ioctl(struct megasas_instance *instance, > megasas_issue_blocked_cmd(instance, cmd, 0); > cmd->sync_cmd = 0; I've expected that you'll not send the command to the card, you first issue blocked command and after that test unload state. Shouldn't it be reversed? > > + if (instance->unload == 1) { > + dev_info(&instance->pdev->dev, "we are doing unload so no need" > + "to submit data to application. This may be force exit" > + "from driver\n"); I'm not a native speaker, so I'll not comment on the wording, but you should add a space at the line breaks. + dev_info(&instance->pdev->dev, "we are doing unload so no need " + "to submit data to application. This may be force exit " + "from driver\n"); > + goto out; > + } > /* > * copy out the kernel buffers to user buffers > */ Aren't there other ioctl paths too - for example megasas_mgmt_ioctl_aen - isn't a block needed there too? -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html