Commit 05d91b55 authored by Luo Jiaxing's avatar Luo Jiaxing Committed by Martin K. Petersen
Browse files

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: default avatarLuo Jiaxing <luojiaxing@huawei.com>
Signed-off-by: default avatarJohn Garry <john.garry@huawei.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 46426552
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -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;
	}

+3 −1
Original line number Diff line number Diff line
@@ -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;
	}

+3 −1
Original line number Diff line number Diff line
@@ -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;
	}