aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_sysfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/scsi_sysfs.c')
-rw-r--r--drivers/scsi/scsi_sysfs.c41
1 files changed, 39 insertions, 2 deletions
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
index a48782866b22..758598ff3b90 100644
--- a/drivers/scsi/scsi_sysfs.c
+++ b/drivers/scsi/scsi_sysfs.c
@@ -771,6 +771,8 @@ sdev_store_queue_depth_rw(struct device *dev, struct device_attribute *attr,
771 if (retval < 0) 771 if (retval < 0)
772 return retval; 772 return retval;
773 773
774 sdev->max_queue_depth = sdev->queue_depth;
775
774 return count; 776 return count;
775} 777}
776 778
@@ -779,6 +781,37 @@ static struct device_attribute sdev_attr_queue_depth_rw =
779 sdev_store_queue_depth_rw); 781 sdev_store_queue_depth_rw);
780 782
781static ssize_t 783static ssize_t
784sdev_show_queue_ramp_up_period(struct device *dev,
785 struct device_attribute *attr,
786 char *buf)
787{
788 struct scsi_device *sdev;
789 sdev = to_scsi_device(dev);
790 return snprintf(buf, 20, "%u\n",
791 jiffies_to_msecs(sdev->queue_ramp_up_period));
792}
793
794static ssize_t
795sdev_store_queue_ramp_up_period(struct device *dev,
796 struct device_attribute *attr,
797 const char *buf, size_t count)
798{
799 struct scsi_device *sdev = to_scsi_device(dev);
800 unsigned long period;
801
802 if (strict_strtoul(buf, 10, &period))
803 return -EINVAL;
804
805 sdev->queue_ramp_up_period = msecs_to_jiffies(period);
806 return period;
807}
808
809static struct device_attribute sdev_attr_queue_ramp_up_period =
810 __ATTR(queue_ramp_up_period, S_IRUGO | S_IWUSR,
811 sdev_show_queue_ramp_up_period,
812 sdev_store_queue_ramp_up_period);
813
814static ssize_t
782sdev_store_queue_type_rw(struct device *dev, struct device_attribute *attr, 815sdev_store_queue_type_rw(struct device *dev, struct device_attribute *attr,
783 const char *buf, size_t count) 816 const char *buf, size_t count)
784{ 817{
@@ -866,8 +899,12 @@ int scsi_sysfs_add_sdev(struct scsi_device *sdev)
866 } 899 }
867 900
868 /* create queue files, which may be writable, depending on the host */ 901 /* create queue files, which may be writable, depending on the host */
869 if (sdev->host->hostt->change_queue_depth) 902 if (sdev->host->hostt->change_queue_depth) {
870 error = device_create_file(&sdev->sdev_gendev, &sdev_attr_queue_depth_rw); 903 error = device_create_file(&sdev->sdev_gendev,
904 &sdev_attr_queue_depth_rw);
905 error = device_create_file(&sdev->sdev_gendev,
906 &sdev_attr_queue_ramp_up_period);
907 }
871 else 908 else
872 error = device_create_file(&sdev->sdev_gendev, &dev_attr_queue_depth); 909 error = device_create_file(&sdev->sdev_gendev, &dev_attr_queue_depth);
873 if (error) { 910 if (error) {