On 2017-06-24 03:27, Zang Leigang wrote:
Host set ocs to OCS_ABORTED when clear a doorbell in err handler.
OCS field is valid after host controller has cleared the corresponding doorbell (UTRLDBR) bit to zero. And here HW would be clearing the doorbell bit, not the SW. So I am not sure what do you mean in sentence above? Can you please elaborate more on this?
Then scsi_decide_disposition return SUCCESS. This may cause some filesystem panic because a FAILED REQUESET. Requeue and complete is better.
Why do you think retrying this HW aborted request will succeed next time? Are we going to fix some request parameters before retrying? If not, it will most likely fail again.
Signed-off-by: Zang Leigang <zangleigang@xxxxxxxxxxxxx> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index ffe8d8608818..e050dcea1bea 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -4545,8 +4545,6 @@ ufshcd_transfer_rsp_status(struct ufs_hba *hba, struct ufshcd_lrb *lrbp) } break; case OCS_ABORTED: - result |= DID_ABORT << 16; - break; case OCS_INVALID_COMMAND_STATUS: result |= DID_REQUEUE << 16; break;
-- The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project