Skip to contentSkip to conversation

move scsi_add_host back to where it belongs in aacraid

PATCH New Christoph Hellwig 1 participant 1 message Sep 20, 2004

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 move scsi_add_host back to where it belongs in aacraid

looks like you applied a premature version of the last aacraid patch. This one moves the scsi_add_host back so it's not called before the driver is ready to accept queued commands.

Btw, any chance we can get the performance improvements Mark Salyzyn mentioned on OLS merged into the mainline driver?

drivers/scsi/aacraid/linit.c +14 -5
@@ -579,10 +579,6 @@
 	for (container = 0; container < MAXIMUM_NUM_CONTAINERS; container++)
 		fsa_dev_ptr->devname[container][0] = '\0';
 
-	error = scsi_add_host(shost, &pdev->dev);
-	if (error)
-		goto out_free_fibs;
-
 	if ((*aac_drivers[index].init)(aac))
 		goto out_free_fibs;
 
@@ -619,12 +615,25 @@
 	shost->max_lun = AAC_MAX_LUN;
 
 	pci_set_drvdata(pdev, shost);
+
+	error = scsi_add_host(shost, &pdev->dev);
+	if (error)
+		goto out_deinit;
 	scsi_scan_host(shost);
 
 	return 0;
 
+out_deinit:
+	kill_proc(aac->thread_pid, SIGKILL, 0);
+	wait_for_completion(&aac->aif_completion);
+
+	aac_send_shutdown(aac);
+	fib_map_free(aac);
+	pci_free_consistent(aac->pdev, aac->comm_size, aac->comm_addr, aac->comm_phys);
+	kfree(aac->queues);
+	free_irq(pdev->irq, aac);
+	iounmap((void * )aac->regs.sa);
  out_free_fibs:
-	scsi_remove_host(shost);
 	kfree(aac->fibs);
  out_free_host:
 	scsi_host_put(shost);