diff options
Diffstat (limited to 'block/genhd.c')
| -rw-r--r-- | block/genhd.c | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/block/genhd.c b/block/genhd.c index 9253839714ff..02e9fca80825 100644 --- a/block/genhd.c +++ b/block/genhd.c | |||
| @@ -19,7 +19,6 @@ | |||
| 19 | #include <linux/mutex.h> | 19 | #include <linux/mutex.h> |
| 20 | #include <linux/idr.h> | 20 | #include <linux/idr.h> |
| 21 | #include <linux/log2.h> | 21 | #include <linux/log2.h> |
| 22 | #include <linux/ctype.h> | ||
| 23 | 22 | ||
| 24 | #include "blk.h" | 23 | #include "blk.h" |
| 25 | 24 | ||
| @@ -916,74 +915,6 @@ static int __init genhd_device_init(void) | |||
| 916 | 915 | ||
| 917 | subsys_initcall(genhd_device_init); | 916 | subsys_initcall(genhd_device_init); |
| 918 | 917 | ||
| 919 | static ssize_t alias_show(struct device *dev, | ||
| 920 | struct device_attribute *attr, char *buf) | ||
| 921 | { | ||
| 922 | struct gendisk *disk = dev_to_disk(dev); | ||
| 923 | ssize_t ret = 0; | ||
| 924 | |||
| 925 | if (disk->alias) | ||
| 926 | ret = snprintf(buf, ALIAS_LEN, "%s\n", disk->alias); | ||
| 927 | return ret; | ||
| 928 | } | ||
| 929 | |||
| 930 | static ssize_t alias_store(struct device *dev, struct device_attribute *attr, | ||
| 931 | const char *buf, size_t count) | ||
| 932 | { | ||
| 933 | struct gendisk *disk = dev_to_disk(dev); | ||
| 934 | char *alias; | ||
| 935 | char *envp[] = { NULL, NULL }; | ||
| 936 | unsigned char c; | ||
| 937 | int i; | ||
| 938 | ssize_t ret = count; | ||
| 939 | |||
| 940 | if (!count) | ||
| 941 | return -EINVAL; | ||
| 942 | |||
| 943 | if (count >= ALIAS_LEN) { | ||
| 944 | printk(KERN_ERR "alias: alias is too long\n"); | ||
| 945 | return -EINVAL; | ||
| 946 | } | ||
| 947 | |||
| 948 | /* Validation check */ | ||
| 949 | for (i = 0; i < count; i++) { | ||
| 950 | c = buf[i]; | ||
| 951 | if (i == count - 1 && c == '\n') | ||
| 952 | break; | ||
| 953 | if (!isalnum(c) && c != '_' && c != '-') { | ||
| 954 | printk(KERN_ERR "alias: invalid alias\n"); | ||
| 955 | return -EINVAL; | ||
| 956 | } | ||
| 957 | } | ||
| 958 | |||
| 959 | if (disk->alias) { | ||
| 960 | printk(KERN_INFO "alias: %s is already assigned (%s)\n", | ||
| 961 | disk->disk_name, disk->alias); | ||
| 962 | return -EINVAL; | ||
| 963 | } | ||
| 964 | |||
| 965 | alias = kasprintf(GFP_KERNEL, "%s", buf); | ||
| 966 | if (!alias) | ||
| 967 | return -ENOMEM; | ||
| 968 | |||
| 969 | if (alias[count - 1] == '\n') | ||
| 970 | alias[count - 1] = '\0'; | ||
| 971 | |||
| 972 | envp[0] = kasprintf(GFP_KERNEL, "ALIAS=%s", alias); | ||
| 973 | if (!envp[0]) { | ||
| 974 | kfree(alias); | ||
| 975 | return -ENOMEM; | ||
| 976 | } | ||
| 977 | |||
| 978 | disk->alias = alias; | ||
| 979 | printk(KERN_INFO "alias: assigned %s to %s\n", alias, disk->disk_name); | ||
| 980 | |||
| 981 | kobject_uevent_env(&dev->kobj, KOBJ_ADD, envp); | ||
| 982 | |||
| 983 | kfree(envp[0]); | ||
| 984 | return ret; | ||
| 985 | } | ||
| 986 | |||
| 987 | static ssize_t disk_range_show(struct device *dev, | 918 | static ssize_t disk_range_show(struct device *dev, |
| 988 | struct device_attribute *attr, char *buf) | 919 | struct device_attribute *attr, char *buf) |
| 989 | { | 920 | { |
| @@ -1043,7 +974,6 @@ static ssize_t disk_discard_alignment_show(struct device *dev, | |||
| 1043 | return sprintf(buf, "%d\n", queue_discard_alignment(disk->queue)); | 974 | return sprintf(buf, "%d\n", queue_discard_alignment(disk->queue)); |
| 1044 | } | 975 | } |
| 1045 | 976 | ||
| 1046 | static DEVICE_ATTR(alias, S_IRUGO|S_IWUSR, alias_show, alias_store); | ||
| 1047 | static DEVICE_ATTR(range, S_IRUGO, disk_range_show, NULL); | 977 | static DEVICE_ATTR(range, S_IRUGO, disk_range_show, NULL); |
| 1048 | static DEVICE_ATTR(ext_range, S_IRUGO, disk_ext_range_show, NULL); | 978 | static DEVICE_ATTR(ext_range, S_IRUGO, disk_ext_range_show, NULL); |
| 1049 | static DEVICE_ATTR(removable, S_IRUGO, disk_removable_show, NULL); | 979 | static DEVICE_ATTR(removable, S_IRUGO, disk_removable_show, NULL); |
| @@ -1066,7 +996,6 @@ static struct device_attribute dev_attr_fail_timeout = | |||
| 1066 | #endif | 996 | #endif |
| 1067 | 997 | ||
| 1068 | static struct attribute *disk_attrs[] = { | 998 | static struct attribute *disk_attrs[] = { |
| 1069 | &dev_attr_alias.attr, | ||
| 1070 | &dev_attr_range.attr, | 999 | &dev_attr_range.attr, |
| 1071 | &dev_attr_ext_range.attr, | 1000 | &dev_attr_ext_range.attr, |
| 1072 | &dev_attr_removable.attr, | 1001 | &dev_attr_removable.attr, |
