|
@@ -1571,6 +1571,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;
|
|
|
|
|
@@ -5011,10 +5017,6 @@ static int megasas_io_attach(struct megasas_instance *instance)
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- * Trigger SCSI to scan our drives
|
|
|
- */
|
|
|
- scsi_scan_host(host);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -5344,6 +5346,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)
|
|
@@ -6107,6 +6113,11 @@ megasas_mgmt_fw_ioctl(struct megasas_instance *instance,
|
|
|
megasas_issue_blocked_cmd(instance, cmd, 0);
|
|
|
cmd->sync_cmd = 0;
|
|
|
|
|
|
+ if (instance->unload == 1) {
|
|
|
+ dev_info(&instance->pdev->dev, "Driver unload is in progress "
|
|
|
+ "don't submit data to application\n");
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
/*
|
|
|
* copy out the kernel buffers to user buffers
|
|
|
*/
|