[SCSI] scsi: Add allow_restart sysfs class attribute
This is a resend of a patch I generated in response to an email sent by Ruben Faelens <parasietje@gmail.com>. His original email to linux-scsi requested a method in which he could spin down a scsi disk when not in use and have the kernel automatically spin it back up when an I/O was generated to the disk. The infrastructure to automatically spin a disk up has been in the scsi error handler for some time now, but it is not enabled by default. This patch adds an sd sysfs attribute which allows userspace to enable this behavior. Signed-off-by: Brian King <brking@us.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
3bdad7bd25
commit
a144c5ae09
1 changed files with 26 additions and 0 deletions
|
@ -208,6 +208,23 @@ static ssize_t sd_store_cache_type(struct class_device *cdev, const char *buf,
|
|||
return count;
|
||||
}
|
||||
|
||||
static ssize_t sd_store_allow_restart(struct class_device *cdev, const char *buf,
|
||||
size_t count)
|
||||
{
|
||||
struct scsi_disk *sdkp = to_scsi_disk(cdev);
|
||||
struct scsi_device *sdp = sdkp->device;
|
||||
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
return -EACCES;
|
||||
|
||||
if (sdp->type != TYPE_DISK)
|
||||
return -EINVAL;
|
||||
|
||||
sdp->allow_restart = simple_strtoul(buf, NULL, 10);
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
static ssize_t sd_show_cache_type(struct class_device *cdev, char *buf)
|
||||
{
|
||||
struct scsi_disk *sdkp = to_scsi_disk(cdev);
|
||||
|
@ -223,10 +240,19 @@ static ssize_t sd_show_fua(struct class_device *cdev, char *buf)
|
|||
return snprintf(buf, 20, "%u\n", sdkp->DPOFUA);
|
||||
}
|
||||
|
||||
static ssize_t sd_show_allow_restart(struct class_device *cdev, char *buf)
|
||||
{
|
||||
struct scsi_disk *sdkp = to_scsi_disk(cdev);
|
||||
|
||||
return snprintf(buf, 40, "%d\n", sdkp->device->allow_restart);
|
||||
}
|
||||
|
||||
static struct class_device_attribute sd_disk_attrs[] = {
|
||||
__ATTR(cache_type, S_IRUGO|S_IWUSR, sd_show_cache_type,
|
||||
sd_store_cache_type),
|
||||
__ATTR(FUA, S_IRUGO, sd_show_fua, NULL),
|
||||
__ATTR(allow_restart, S_IRUGO|S_IWUSR, sd_show_allow_restart,
|
||||
sd_store_allow_restart),
|
||||
__ATTR_NULL,
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue