|
@@ -1636,6 +1636,11 @@ static const struct attribute_group zram_disk_attr_group = {
|
|
|
.attrs = zram_disk_attrs,
|
|
|
};
|
|
|
|
|
|
+static const struct attribute_group *zram_disk_attr_groups[] = {
|
|
|
+ &zram_disk_attr_group,
|
|
|
+ NULL,
|
|
|
+};
|
|
|
+
|
|
|
/*
|
|
|
* Allocate and initialize new zram device. the function returns
|
|
|
* '>= 0' device_id upon success, and negative value otherwise.
|
|
@@ -1716,24 +1721,14 @@ static int zram_add(void)
|
|
|
|
|
|
zram->disk->queue->backing_dev_info->capabilities |=
|
|
|
(BDI_CAP_STABLE_WRITES | BDI_CAP_SYNCHRONOUS_IO);
|
|
|
- add_disk(zram->disk);
|
|
|
-
|
|
|
- ret = sysfs_create_group(&disk_to_dev(zram->disk)->kobj,
|
|
|
- &zram_disk_attr_group);
|
|
|
- if (ret < 0) {
|
|
|
- pr_err("Error creating sysfs group for device %d\n",
|
|
|
- device_id);
|
|
|
- goto out_free_disk;
|
|
|
- }
|
|
|
+ device_add_disk(NULL, zram->disk, zram_disk_attr_groups);
|
|
|
+
|
|
|
strlcpy(zram->compressor, default_compressor, sizeof(zram->compressor));
|
|
|
|
|
|
zram_debugfs_register(zram);
|
|
|
pr_info("Added device: %s\n", zram->disk->disk_name);
|
|
|
return device_id;
|
|
|
|
|
|
-out_free_disk:
|
|
|
- del_gendisk(zram->disk);
|
|
|
- put_disk(zram->disk);
|
|
|
out_free_queue:
|
|
|
blk_cleanup_queue(queue);
|
|
|
out_free_idr:
|
|
@@ -1762,15 +1757,6 @@ static int zram_remove(struct zram *zram)
|
|
|
mutex_unlock(&bdev->bd_mutex);
|
|
|
|
|
|
zram_debugfs_unregister(zram);
|
|
|
- /*
|
|
|
- * Remove sysfs first, so no one will perform a disksize
|
|
|
- * store while we destroy the devices. This also helps during
|
|
|
- * hot_remove -- zram_reset_device() is the last holder of
|
|
|
- * ->init_lock, no later/concurrent disksize_store() or any
|
|
|
- * other sysfs handlers are possible.
|
|
|
- */
|
|
|
- sysfs_remove_group(&disk_to_dev(zram->disk)->kobj,
|
|
|
- &zram_disk_attr_group);
|
|
|
|
|
|
/* Make sure all the pending I/O are finished */
|
|
|
fsync_bdev(bdev);
|