This patch adds an shost attribute, max_device_queue_depth, that will cycle through all devices on the shost and change their current and max queue depth to the new value. Signed-off-by: James Smart <jsmart2021@xxxxxxxxx> --- v3: use kstrtouint specify permissions in octl, not by mnemonic remove unnecessary parens --- drivers/scsi/scsi_sysfs.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index d4e9ad9a6f18..98dbbfb6397b 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c @@ -368,6 +368,26 @@ store_shost_eh_deadline(struct device *dev, struct device_attribute *attr, static DEVICE_ATTR(eh_deadline, S_IRUGO | S_IWUSR, show_shost_eh_deadline, store_shost_eh_deadline); +static ssize_t +store_host_max_device_queue_depth(struct device *dev, + struct device_attribute *attr, const char *buf, size_t count) +{ + struct Scsi_Host *shost = class_to_shost(dev); + unsigned int depth; + int retval; + + retval = kstrtouint(buf, 10, &depth); + if (retval) + return -EINVAL; + + retval = shost_change_max_queue_depths(shost, depth); + + return retval < 0 ? retval : count; +} + +static DEVICE_ATTR(max_device_queue_depth, 0200, NULL, + store_host_max_device_queue_depth); + shost_rd_attr(unique_id, "%u\n"); shost_rd_attr(cmd_per_lun, "%hd\n"); shost_rd_attr(can_queue, "%hd\n"); @@ -411,6 +431,7 @@ static struct attribute *scsi_sysfs_shost_attrs[] = { &dev_attr_prot_guard_type.attr, &dev_attr_host_reset.attr, &dev_attr_eh_deadline.attr, + &dev_attr_max_device_queue_depth.attr, NULL }; -- 2.13.7