Re: [PATCH] scsi: core: Set BLK_FEAT_SKIP_TAGSET_QUIESCE on pseudo SCSI devices

From: Bart Van Assche

Date: Tue Sep 01 2026 - 13:59:57 EST


On 9/1/26 5:23 AM, Stanley Jhu wrote:
diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
index 3b82e80e807a..eb48866ed0dc 100644
--- a/drivers/scsi/scsi_scan.c
+++ b/drivers/scsi/scsi_scan.c
@@ -336,6 +336,8 @@ static struct scsi_device *scsi_alloc_sdev(struct
scsi_target *starget,
sdev->sg_reserved_size = INT_MAX;

scsi_init_limits(shost, &lim);
+ if (scsi_device_is_pseudo_dev(sdev))
+ lim.features |= BLK_FEAT_SKIP_TAGSET_QUIESCE;
q = blk_mq_alloc_queue(&sdev->host->tag_set, &lim, sdev);
if (IS_ERR(q)) {
/* release fn is set up in scsi_sysfs_device_initialise, so

The above change will break frequency scaling because
ufshcd_pause_command_processing() also calls blk_mq_quiesce_tagset(),
isn't it? Has it been considered to remove the blk_mq_unquiesce_tagset()
call from ufshcd_err_handling_unprepare() and to change the
blk_mq_quiesce_tagset() call in ufshcd_err_handling_prepare() into
blk_mq_wait_quiesce_done()? The following comment can be kept:
/* Wait for ongoing ufshcd_queuecommand() calls to finish. */

Thanks,

Bart.