| --- |
| drivers/block/zram/zram_drv.c | 26 +++++++++++++++----------- |
| 1 file changed, 15 insertions(+), 11 deletions(-) |
| |
| --- a/drivers/block/zram/zram_drv.c |
| +++ b/drivers/block/zram/zram_drv.c |
| @@ -1276,6 +1276,13 @@ static int zram_remove(struct zram *zram |
| } |
| |
| /* zram-control sysfs attributes */ |
| + |
| +/* |
| + * NOTE: hot_add attribute is not the usual read-only sysfs attribute. In a |
| + * sense that reading from this file does alter the state of your system -- it |
| + * creates a new un-initialized zram device and returns back this device's |
| + * device_id (or an error code if it fails to create a new device). |
| + */ |
| static ssize_t hot_add_show(struct class *class, |
| struct class_attribute *attr, |
| char *buf) |
| @@ -1290,6 +1297,7 @@ static ssize_t hot_add_show(struct class |
| return ret; |
| return scnprintf(buf, PAGE_SIZE, "%d\n", ret); |
| } |
| +static CLASS_ATTR(hot_add, 0400, hot_add_show, NULL); |
| |
| static ssize_t hot_remove_store(struct class *class, |
| struct class_attribute *attr, |
| @@ -1320,23 +1328,19 @@ static ssize_t hot_remove_store(struct c |
| mutex_unlock(&zram_index_mutex); |
| return ret ? ret : count; |
| } |
| +static CLASS_ATTR_WO(hot_remove); |
| |
| -/* |
| - * NOTE: hot_add attribute is not the usual read-only sysfs attribute. In a |
| - * sense that reading from this file does alter the state of your system -- it |
| - * creates a new un-initialized zram device and returns back this device's |
| - * device_id (or an error code if it fails to create a new device). |
| - */ |
| -static struct class_attribute zram_control_class_attrs[] = { |
| - __ATTR(hot_add, 0400, hot_add_show, NULL), |
| - __ATTR_WO(hot_remove), |
| - __ATTR_NULL, |
| +static struct attribute *zram_control_class_attrs[] = { |
| + &class_attr_hot_add.attr, |
| + &class_attr_hot_remove.attr, |
| + NULL, |
| }; |
| +ATTRIBUTE_GROUPS(zram_control_class); |
| |
| static struct class zram_control_class = { |
| .name = "zram-control", |
| .owner = THIS_MODULE, |
| - .class_attrs = zram_control_class_attrs, |
| + .class_groups = zram_control_class_groups, |
| }; |
| |
| static int zram_remove_cb(int id, void *ptr, void *data) |