Re: [PATCH] scsi: add attribute to set lun queue depth on all luns on shost

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2020-01-21 15:53, James Smart wrote:
> +static int
> +sdev_set_queue_depth(struct scsi_device *sdev, int depth)
> +{
> +	struct scsi_host_template *sht = sdev->host->hostt;
> +	int retval;
> +
> +	retval = sht->change_queue_depth(sdev, depth);
> +	if (retval < 0)
> +		return retval;
> +
> +	sdev->max_queue_depth = sdev->queue_depth;
> +
> +	return 0;
> +}

'sht' is only used once, so I'm not sure whether it is worth it to keep
that local variable.

> +static ssize_t
> +store_host_lun_queue_depth(struct device *dev, struct device_attribute *attr,
> +		const char *buf, size_t count)
> +{
> +	struct Scsi_Host *shost = class_to_shost(dev);
> +	struct scsi_host_template *sht = shost->hostt;
> +	struct scsi_device *sdev;
> +	int depth, retval;
> +
> +	if (!sht->change_queue_depth)
> +		return -EINVAL;
> +
> +	depth = simple_strtoul(buf, NULL, 0);
> +	if (depth < 1 || depth > shost->can_queue)
> +		return -EINVAL;
> +
> +	shost_for_each_device(sdev, shost) {
> +		retval = sdev_set_queue_depth(sdev, depth);
> +		if (retval != 0)
> +			sdev_printk(KERN_INFO, sdev,
> +				"failed to set queue depth to %d (err %d)",
> +				depth, retval);
> +	}
> +
> +	return count;
> +}

Returning -EINVAL from all error paths makes it impossible to tell the
difference between a value that is out of range and queue depth changes
not being supported. Should another error code be returned if
sht->change_queue_depth == NULL?

> @@ -992,12 +1037,10 @@ sdev_store_queue_depth(struct device *dev, struct device_attribute *attr,
>  	if (depth < 1 || depth > sdev->host->can_queue)
>  		return -EINVAL;
>  
> -	retval = sht->change_queue_depth(sdev, depth);
> +	retval = sdev_set_queue_depth(sdev, depth);
>  	if (retval < 0)
>  		return retval;
>  
> -	sdev->max_queue_depth = sdev->queue_depth;
> -
>  	return count;
>  }

How about splitting this patch into two patches: one that introduces the
function sdev_set_queue_depth() and a second patch that introduces the
lun_queue_depth sysfs attribute?

Thanks,

Bart.



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux