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.ga...@huawei.com>
---
 drivers/scsi/hisi_sas/hisi_sas_main.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/scsi/hisi_sas/hisi_sas_main.c 
b/drivers/scsi/hisi_sas/hisi_sas_main.c
index 763c6c5..c4e59cd 100644
--- a/drivers/scsi/hisi_sas/hisi_sas_main.c
+++ b/drivers/scsi/hisi_sas/hisi_sas_main.c
@@ -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));
-- 
1.9.1

Reply via email to