The following patch is against lk 2.5.26. The prior implementation called
scsi_unregister(host) from idescsi_cleanup(), removing the Scsi_Host instance
from the scsi_hostlist. Later when scsi_unregister_host(&template) was called
from exit_idescsi_module() but since the Scsi_Host instance had already been
removed no matches for the template were found and the device instances
remained.
The patch moves the scsi_unregister_host(&template) to idescsi_cleanup().
Since scsi_unregister_host() invokes scsi_unregister() this part of the
cleanup also occurs normally.
--eqp4TxRxnD4KrmFZ
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="linux-2.5.26-ide-scsi.patch"
diff -Naur linux-2.5.26/drivers/scsi/ide-scsi.c linux-2.5.26-patched/drivers/scsi/ide-scsi.c
--- linux-2.5.26/drivers/scsi/ide-scsi.c Tue Jul 16 18:49:24 2002
+++ linux-2.5.26-patched/drivers/scsi/ide-scsi.c Wed Jul 17 19:14:35 2002
@@ -491,14 +491,13 @@
MOD_DEC_USE_COUNT;
}
+static Scsi_Host_Template template;
static int idescsi_cleanup (struct ata_device *drive)
{
- struct Scsi_Host *host = drive->driver_data;
-
if (ide_unregister_subdriver (drive)) {
return 1;
}
- scsi_unregister(host);
+ scsi_unregister_host(&template);
return 0;
}
@@ -801,7 +800,6 @@
static void __exit exit_idescsi_module(void)
{
unregister_ata_driver(&ata_ops);
- scsi_unregister_host(&template);
}
module_init(init_idescsi_module);
--eqp4TxRxnD4KrmFZ--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/