scsi: hisi_sas: Directly trigger SCSI error handling for completion errors

Abort failed commands in completion path. This avoids having to wait for
block layer timeouts and triggering the SCSI error handling thread.

Link: https://lore.kernel.org/r/1594627471-235395-2-git-send-email-john.garry@huawei.com
Signed-off-by: Luo Jiaxing <luojiaxing@huawei.com>
Signed-off-by: John Garry <john.garry@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Luo Jiaxing 2020-07-13 16:04:30 +08:00 committed by Martin K. Petersen
parent 46426552e7
commit 05d91b557a
3 changed files with 9 additions and 3 deletions

View file

@ -1258,8 +1258,10 @@ static void slot_complete_v1_hw(struct hisi_hba *hisi_hba,
!(cmplt_hdr_data & CMPLT_HDR_RSPNS_XFRD_MSK)) {
slot_err_v1_hw(hisi_hba, task, slot);
if (unlikely(slot->abort))
if (unlikely(slot->abort)) {
sas_task_abort(task);
return;
}
goto out;
}

View file

@ -2404,8 +2404,10 @@ static void slot_complete_v2_hw(struct hisi_hba *hisi_hba,
error_info[0], error_info[1],
error_info[2], error_info[3]);
if (unlikely(slot->abort))
if (unlikely(slot->abort)) {
sas_task_abort(task);
return;
}
goto out;
}

View file

@ -2235,8 +2235,10 @@ static void slot_complete_v3_hw(struct hisi_hba *hisi_hba,
dw0, dw1, complete_hdr->act, dw3,
error_info[0], error_info[1],
error_info[2], error_info[3]);
if (unlikely(slot->abort))
if (unlikely(slot->abort)) {
sas_task_abort(task);
return;
}
goto out;
}