[PATCH V2 5/5] blk-mq: Replace tags->lock with SRCU for tag iterators - Rockchip UFS regression

Bart Van Assche bvanassche at acm.org
Mon Oct 6 11:02:02 PDT 2025


On 10/4/25 7:42 AM, Ming Lei wrote:
>    One possible fix is to check hba->scsi_host_added before calling
> scsi_host_busy():
> 
>    dev_err(hba->dev, "%d outstanding reqs, tasks=0x%lx\n",
>        hba->scsi_host_added ? scsi_host_busy(hba->host) : 0,
>        hba->outstanding_tasks);

My preference is to add a check inside scsi_host_busy(), e.g. as follows
(entirely untested):

diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c
index cc5d05dc395c..17173239301e 100644
--- a/drivers/scsi/hosts.c
+++ b/drivers/scsi/hosts.c
@@ -611,8 +611,9 @@ int scsi_host_busy(struct Scsi_Host *shost)
  {
  	int cnt = 0;

-	blk_mq_tagset_busy_iter(&shost->tag_set,
-				scsi_host_check_in_flight, &cnt);
+	if (shost->tag_set.ops)
+		blk_mq_tagset_busy_iter(&shost->tag_set,
+					scsi_host_check_in_flight, &cnt);
  	return cnt;
  }
  EXPORT_SYMBOL(scsi_host_busy);

Thanks,

Bart.



More information about the Linux-rockchip mailing list