scsi: dpt_i2o: stop using scsi_unregister
authorChristoph Hellwig <hch@lst.de>
Wed, 14 Mar 2018 11:48:23 +0000 (12:48 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 15 Mar 2018 04:25:37 +0000 (00:25 -0400)
dpt_i2o doesn't use scsi_register, so it should not use scsi_unregister
either.  Also refactor the module exit path to make a little more sense.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/dpt_i2o.c
drivers/scsi/dpti.h

index fd172b0890d33a153e546e1faebad7d71a2d4937..3c667b23a801909b7e6de21ee734037f0949b18b 100644 (file)
@@ -302,16 +302,12 @@ rebuild_sys_tab:
 }
 
 
-/*
- * scsi_unregister will be called AFTER we return.
- */
-static int adpt_release(struct Scsi_Host *host)
+static void adpt_release(adpt_hba *pHba)
 {
-       adpt_hba* pHba = (adpt_hba*) host->hostdata[0];
+       scsi_remove_host(pHba->host);
 //     adpt_i2o_quiesce_hba(pHba);
        adpt_i2o_delete_hba(pHba);
-       scsi_unregister(host);
-       return 0;
+       scsi_host_put(pHba->host);
 }
 
 
@@ -1087,8 +1083,6 @@ static void adpt_i2o_delete_hba(adpt_hba* pHba)
 
 
        mutex_lock(&adpt_configuration_lock);
-       // scsi_unregister calls our adpt_release which
-       // does a quiese
        if(pHba->host){
                free_irq(pHba->host->irq, pHba);
        }
@@ -3595,11 +3589,9 @@ static void __exit adpt_exit(void)
 {
        adpt_hba        *pHba, *next;
 
-       for (pHba = hba_chain; pHba; pHba = pHba->next)
-               scsi_remove_host(pHba->host);
        for (pHba = hba_chain; pHba; pHba = next) {
                next = pHba->next;
-               adpt_release(pHba->host);
+               adpt_release(pHba);
        }
 }
 
index 1fa345ab8ecba1ec71a5264defeddae15a49b1da..dfc8d2eaa09e4b2ac3f178aeb634bc91884856af 100644 (file)
@@ -32,7 +32,6 @@ static int adpt_detect(struct scsi_host_template * sht);
 static int adpt_queue(struct Scsi_Host *h, struct scsi_cmnd * cmd);
 static int adpt_abort(struct scsi_cmnd * cmd);
 static int adpt_reset(struct scsi_cmnd* cmd);
-static int adpt_release(struct Scsi_Host *host);
 static int adpt_slave_configure(struct scsi_device *);
 
 static const char *adpt_info(struct Scsi_Host *pSHost);