OSDN Git Service

scsi: ufs: Remove ufshcd_any_tag_in_use()
authorBart Van Assche <bvanassche@acm.org>
Fri, 3 Dec 2021 23:19:40 +0000 (15:19 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 7 Dec 2021 03:30:33 +0000 (22:30 -0500)
Use hba->outstanding_reqs instead of ufshcd_any_tag_in_use(). This patch
prepares for removal of the blk_mq_start_request() call from
ufshcd_wait_for_dev_cmd(). blk_mq_tagset_busy_iter() only iterates over
started requests.

Link: https://lore.kernel.org/r/20211203231950.193369-8-bvanassche@acm.org
Tested-by: Bean Huo <beanhuo@micron.com>
Reviewed-by: Bean Huo <beanhuo@micron.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/ufs/ufshcd.c

index 04a19b8..974bf47 100644 (file)
@@ -1352,25 +1352,6 @@ out:
        return ret;
 }
 
-static bool ufshcd_is_busy(struct request *req, void *priv, bool reserved)
-{
-       int *busy = priv;
-
-       WARN_ON_ONCE(reserved);
-       (*busy)++;
-       return false;
-}
-
-/* Whether or not any tag is in use by a request that is in progress. */
-static bool ufshcd_any_tag_in_use(struct ufs_hba *hba)
-{
-       struct request_queue *q = hba->cmd_queue;
-       int busy = 0;
-
-       blk_mq_tagset_busy_iter(q->tag_set, ufshcd_is_busy, &busy);
-       return busy;
-}
-
 static int ufshcd_devfreq_get_dev_status(struct device *dev,
                struct devfreq_dev_status *stat)
 {
@@ -1769,7 +1750,7 @@ static void ufshcd_gate_work(struct work_struct *work)
 
        if (hba->clk_gating.active_reqs
                || hba->ufshcd_state != UFSHCD_STATE_OPERATIONAL
-               || ufshcd_any_tag_in_use(hba) || hba->outstanding_tasks
+               || hba->outstanding_reqs || hba->outstanding_tasks
                || hba->active_uic_cmd || hba->uic_async_done)
                goto rel_lock;