[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <d017548a-16fb-8ad0-2363-09dad00c9642@acm.org>
Date: Fri, 11 Jun 2021 13:52:18 -0700
From: Bart Van Assche <bvanassche@....org>
To: Can Guo <cang@...eaurora.org>, asutoshd@...eaurora.org,
nguyenb@...eaurora.org, hongwus@...eaurora.org,
ziqichen@...eaurora.org, linux-scsi@...r.kernel.org,
kernel-team@...roid.com
Cc: Alim Akhtar <alim.akhtar@...sung.com>,
Avri Altman <avri.altman@....com>,
"James E.J. Bottomley" <jejb@...ux.ibm.com>,
"Martin K. Petersen" <martin.petersen@...cle.com>,
Stanley Chu <stanley.chu@...iatek.com>,
Bean Huo <beanhuo@...ron.com>,
Jaegeuk Kim <jaegeuk@...nel.org>,
open list <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v3 4/9] scsi: ufs: Complete the cmd before returning in
queuecommand
On 6/9/21 9:43 PM, Can Guo wrote:
> diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
> index 0c9d2ee..7dc0fda 100644
> --- a/drivers/scsi/ufs/ufshcd.c
> +++ b/drivers/scsi/ufs/ufshcd.c
> @@ -2758,6 +2758,16 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
> goto out;
> }
>
> + if (unlikely(test_bit(tag, &hba->outstanding_reqs))) {
> + if (hba->wl_pm_op_in_progress) {
> + set_host_byte(cmd, DID_BAD_TARGET);
> + cmd->scsi_done(cmd);
> + } else {
> + err = SCSI_MLQUEUE_HOST_BUSY;
> + }
> + goto out;
> + }
> +
> hba->req_abort_count = 0;
>
> err = ufshcd_hold(hba, true);
> @@ -2768,15 +2778,6 @@ static int ufshcd_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *cmd)
> WARN_ON(ufshcd_is_clkgating_allowed(hba) &&
> (hba->clk_gating.state != CLKS_ON));
>
> - if (unlikely(test_bit(tag, &hba->outstanding_reqs))) {
> - if (hba->wl_pm_op_in_progress)
> - set_host_byte(cmd, DID_BAD_TARGET);
> - else
> - err = SCSI_MLQUEUE_HOST_BUSY;
> - ufshcd_release(hba);
> - goto out;
> - }
> -
> lrbp = &hba->lrb[tag];
> WARN_ON(lrbp->cmd);
> lrbp->cmd = cmd;
Can the code under "if (unlikely(test_bit(tag,
&hba->outstanding_reqs)))" be deleted instead of moving it? I don't
think that it is useful to verify whether the block layer tag allocator
works correctly. Additionally, I'm not aware of any similar code in any
other SCSI LLD.
Thanks,
Bart.
Powered by blists - more mailing lists