[PATCH v4 28/28] scsi: sd: add mpath_queue_depth dev attribute
John Garry <[email protected]> Thu, 23 Jul 2026 09:36:26 +0000
| Newsgroups | dev.linux.lists.dm-devel,org.infradead.lists.linux-nvme,org.kernel.vger.linux-kernel,org.kernel.vger.linux-scsi |
|---|---|
| Message-ID | <[email protected]> |
Add a queue_depth file so that the multipath dynamic queue depth can be looked up from per-path gendisk (scsi_disk) directory. Signed-off-by: John Garry <[email protected]> --- drivers/scsi/sd.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 7255df6e3e971..7b87404b70d6f 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -4089,9 +4089,27 @@ static ssize_t sd_mpath_numa_nodes_show(struct device *dev, } static DEVICE_ATTR(mpath_numa_nodes, 0444, sd_mpath_numa_nodes_show, NULL); +static ssize_t sd_mpath_queue_depth_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct gendisk *gd = dev_to_disk(dev); + struct scsi_disk *sdkp = gd->private_data; + struct scsi_device *sdev = sdkp->device; + struct scsi_mpath_device *scsi_mpath_dev = sdev->scsi_mpath_dev; + struct scsi_mpath_head *scsi_mpath_head = scsi_mpath_dev->scsi_mpath_head; + struct Scsi_Host *shost = sdev->host; + + if (!mpath_qd_iopolicy(&scsi_mpath_head->iopolicy)) + return 0; + + return sysfs_emit(buf, "%d\n", atomic_read(&shost->mpath_nr_active)); +} +static DEVICE_ATTR(mpath_queue_depth, 0444, sd_mpath_queue_depth_show, NULL); + static struct attribute *sd_mpath_dev_attrs[] = { &dev_attr_mpath_dev.attr, &dev_attr_mpath_numa_nodes.attr, + &dev_attr_mpath_queue_depth.attr, NULL }; -- 2.43.7