scsi: dpt_i2o: use scsi_host_complete_all_commands() to abort outstanding commands
authorHannes Reinecke <hare@suse.de>
Fri, 28 Feb 2020 07:53:08 +0000 (08:53 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 29 Feb 2020 01:54:48 +0000 (20:54 -0500)
Rather than traversing all outstanding commands manually, use the
scsi_host_complete_all_commands() helper to terminate all commands during
reset.  With that we can drop the cmd_list usage from the midlayer.

Link: https://lore.kernel.org/r/20200228075318.91255-4-hare@suse.de
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/dpt_i2o.c
drivers/scsi/dpti.h

index c30ace9..ac27323 100644 (file)
@@ -817,7 +817,7 @@ static int adpt_hba_reset(adpt_hba* pHba)
        }
        pHba->state &= ~DPTI_STATE_RESET;
 
-       adpt_fail_posted_scbs(pHba);
+       scsi_host_complete_all_commands(pHba->host, DID_RESET);
        return 0;       /* return success */
 }
 
@@ -2335,7 +2335,6 @@ static s32 adpt_scsi_host_alloc(adpt_hba* pHba, struct scsi_host_template *sht)
        host->unique_id = (u32)sys_tbl_pa + pHba->unit;
        host->sg_tablesize = pHba->sg_tablesize;
        host->can_queue = pHba->post_fifo_size;
-       host->use_cmd_list = 1;
 
        return 0;
 }
@@ -2646,23 +2645,6 @@ static s32 adpt_i2o_reparse_lct(adpt_hba* pHba)
        return 0;
 }
 
-static void adpt_fail_posted_scbs(adpt_hba* pHba)
-{
-       struct scsi_cmnd*       cmd = NULL;
-       struct scsi_device*     d = NULL;
-
-       shost_for_each_device(d, pHba->host) {
-               unsigned long flags;
-               spin_lock_irqsave(&d->list_lock, flags);
-               list_for_each_entry(cmd, &d->cmd_list, list) {
-                       cmd->result = (DID_OK << 16) | (QUEUE_FULL <<1);
-                       cmd->scsi_done(cmd);
-               }
-               spin_unlock_irqrestore(&d->list_lock, flags);
-       }
-}
-
-
 /*============================================================================
  *  Routines from i2o subsystem
  *============================================================================
index 3ec3911..72293b8 100644 (file)
@@ -295,7 +295,6 @@ static s32 adpt_i2o_reparse_lct(adpt_hba* pHba);
 static s32 adpt_send_nop(adpt_hba*pHba,u32 m);
 static void adpt_i2o_delete_hba(adpt_hba* pHba);
 static void adpt_inquiry(adpt_hba* pHba);
-static void adpt_fail_posted_scbs(adpt_hba* pHba);
 static struct adpt_device* adpt_find_device(adpt_hba* pHba, u32 chan, u32 id, u64 lun);
 static int adpt_install_hba(struct scsi_host_template* sht, struct pci_dev* pDev) ;
 static int adpt_i2o_online_hba(adpt_hba* pHba);