scsi: hisi_sas: add internal abort in hisi_sas_dev_gone()
authorJohn Garry <john.garry@huawei.com>
Wed, 24 Aug 2016 11:05:48 +0000 (19:05 +0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Fri, 26 Aug 2016 02:38:54 +0000 (22:38 -0400)
Execute an internal abort for that device when it is removed, so that
commands for that device are not processed.

Signed-off-by: John Garry <john.garry@huawei.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/hisi_sas/hisi_sas_main.c

index 763c6c58e4b982a455f51787b0e4fc08968bc81b..c4e59cd8ff7bc2d3510c688209098bd380551d6e 100644 (file)
@@ -621,6 +621,9 @@ static void hisi_sas_dev_gone(struct domain_device *device)
        dev_info(dev, "found dev[%lld:%x] is gone\n",
                 sas_dev->device_id, sas_dev->dev_type);
 
+       hisi_sas_internal_task_abort(hisi_hba, device,
+                                    HISI_SAS_INT_ABT_DEV, 0);
+
        hisi_hba->hw->free_device(hisi_hba, sas_dev);
        device->lldd_dev = NULL;
        memset(sas_dev, 0, sizeof(*sas_dev));