Commit 3b08aa64 authored by Olaf Hering's avatar Olaf Hering Committed by Greg Kroah-Hartman

[PATCH] add removeable sysfs block device attribute

This patch adds a /block/*/removeable sysfs attribute. A value of 1
indicates the media can change anytime. This is a hint for userland
to poll such devices for possible media changes, and leave all others alone.
There is currently no way to see if a connected usb-storage device is a
disk or a card reader. It will also show 1 for CD and ZIP drives.

It was done by Patrick Mansfield a while ago. I can probably not
sigh-off his work. ;)
Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
parent fd205fa2
...@@ -352,6 +352,12 @@ static ssize_t disk_range_read(struct gendisk * disk, char *page) ...@@ -352,6 +352,12 @@ static ssize_t disk_range_read(struct gendisk * disk, char *page)
{ {
return sprintf(page, "%d\n", disk->minors); return sprintf(page, "%d\n", disk->minors);
} }
static ssize_t disk_removable_read(struct gendisk * disk, char *page)
{
return sprintf(page, "%d\n",
(disk->flags & GENHD_FL_REMOVABLE ? 1 : 0));
}
static ssize_t disk_size_read(struct gendisk * disk, char *page) static ssize_t disk_size_read(struct gendisk * disk, char *page)
{ {
return sprintf(page, "%llu\n", (unsigned long long)get_capacity(disk)); return sprintf(page, "%llu\n", (unsigned long long)get_capacity(disk));
...@@ -384,6 +390,10 @@ static struct disk_attribute disk_attr_range = { ...@@ -384,6 +390,10 @@ static struct disk_attribute disk_attr_range = {
.attr = {.name = "range", .mode = S_IRUGO }, .attr = {.name = "range", .mode = S_IRUGO },
.show = disk_range_read .show = disk_range_read
}; };
static struct disk_attribute disk_attr_removable = {
.attr = {.name = "removable", .mode = S_IRUGO },
.show = disk_removable_read
};
static struct disk_attribute disk_attr_size = { static struct disk_attribute disk_attr_size = {
.attr = {.name = "size", .mode = S_IRUGO }, .attr = {.name = "size", .mode = S_IRUGO },
.show = disk_size_read .show = disk_size_read
...@@ -396,6 +406,7 @@ static struct disk_attribute disk_attr_stat = { ...@@ -396,6 +406,7 @@ static struct disk_attribute disk_attr_stat = {
static struct attribute * default_attrs[] = { static struct attribute * default_attrs[] = {
&disk_attr_dev.attr, &disk_attr_dev.attr,
&disk_attr_range.attr, &disk_attr_range.attr,
&disk_attr_removable.attr,
&disk_attr_size.attr, &disk_attr_size.attr,
&disk_attr_stat.attr, &disk_attr_stat.attr,
NULL, NULL,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment