scsi: aacraid: replace aac_flush_ios() with midlayer helper
authorHannes Reinecke <hare@suse.de>
Fri, 28 Feb 2020 07:53:11 +0000 (08:53 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 29 Feb 2020 01:54:49 +0000 (20:54 -0500)
Use the midlayer helper scsi_host_complete_all_commands() to flush all
outstanding commands.

Link: https://lore.kernel.org/r/20200228075318.91255-7-hare@suse.de
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Acked-by: Balsundar P <balsundar.p@microchip.com>
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/aacraid/linit.c

index ee6bc2f..4d5b34e 100644 (file)
@@ -1977,26 +1977,6 @@ static void aac_remove_one(struct pci_dev *pdev)
        }
 }
 
-static void aac_flush_ios(struct aac_dev *aac)
-{
-       int i;
-       struct scsi_cmnd *cmd;
-
-       for (i = 0; i < aac->scsi_host_ptr->can_queue; i++) {
-               cmd = (struct scsi_cmnd *)aac->fibs[i].callback_data;
-               if (cmd && (cmd->SCp.phase == AAC_OWNER_FIRMWARE)) {
-                       scsi_dma_unmap(cmd);
-
-                       if (aac->handle_pci_error)
-                               cmd->result = DID_NO_CONNECT << 16;
-                       else
-                               cmd->result = DID_RESET << 16;
-
-                       cmd->scsi_done(cmd);
-               }
-       }
-}
-
 static pci_ers_result_t aac_pci_error_detected(struct pci_dev *pdev,
                                        enum pci_channel_state error)
 {
@@ -2013,7 +1993,7 @@ static pci_ers_result_t aac_pci_error_detected(struct pci_dev *pdev,
 
                scsi_block_requests(aac->scsi_host_ptr);
                aac_cancel_rescan_worker(aac);
-               aac_flush_ios(aac);
+               scsi_host_complete_all_commands(shost, DID_NO_CONNECT);
                aac_release_resources(aac);
 
                pci_disable_pcie_error_reporting(pdev);
@@ -2023,7 +2003,7 @@ static pci_ers_result_t aac_pci_error_detected(struct pci_dev *pdev,
        case pci_channel_io_perm_failure:
                aac->handle_pci_error = 1;
 
-               aac_flush_ios(aac);
+               scsi_host_complete_all_commands(shost, DID_NO_CONNECT);
                return PCI_ERS_RESULT_DISCONNECT;
        }