btrfs: sysfs: make UUID/debug have its own kobject
Btrfs only allowed attributes to be exposed in debug/. Let's let other groups be created by making debug its own kobject. This also makes the per-fs debug options separate from the global features mount attributes. This seems to be needed as sysfs_create_files() requires const struct attribute * while sysfs_create_group() can take struct attribute *. This seems nicer as per file system, you'll probably use to_fs_info(). Reviewed-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: Dennis Zhou <dennis@kernel.org> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
71e8978eb4
commit
93945cb43e
@ -927,6 +927,10 @@ struct btrfs_fs_info {
|
||||
spinlock_t ref_verify_lock;
|
||||
struct rb_root block_tree;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BTRFS_DEBUG
|
||||
struct kobject *debug_kobj;
|
||||
#endif
|
||||
};
|
||||
|
||||
static inline struct btrfs_fs_info *btrfs_sb(struct super_block *sb)
|
||||
|
@ -344,6 +344,10 @@ static const struct attribute_group btrfs_static_feature_attr_group = {
|
||||
* /sys/fs/btrfs/debug - applies to module or all filesystems
|
||||
* /sys/fs/btrfs/UUID - applies only to the given filesystem
|
||||
*/
|
||||
static const struct attribute *btrfs_debug_mount_attrs[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
static struct attribute *btrfs_debug_feature_attrs[] = {
|
||||
NULL
|
||||
};
|
||||
@ -772,8 +776,11 @@ void btrfs_sysfs_remove_mounted(struct btrfs_fs_info *fs_info)
|
||||
kobject_put(fs_info->space_info_kobj);
|
||||
}
|
||||
#ifdef CONFIG_BTRFS_DEBUG
|
||||
sysfs_remove_group(&fs_info->fs_devices->fsid_kobj,
|
||||
&btrfs_debug_feature_attr_group);
|
||||
if (fs_info->debug_kobj) {
|
||||
sysfs_remove_files(fs_info->debug_kobj, btrfs_debug_mount_attrs);
|
||||
kobject_del(fs_info->debug_kobj);
|
||||
kobject_put(fs_info->debug_kobj);
|
||||
}
|
||||
#endif
|
||||
addrm_unknown_feature_attrs(fs_info, false);
|
||||
sysfs_remove_group(&fs_info->fs_devices->fsid_kobj, &btrfs_feature_attr_group);
|
||||
@ -1111,8 +1118,13 @@ int btrfs_sysfs_add_mounted(struct btrfs_fs_info *fs_info)
|
||||
goto failure;
|
||||
|
||||
#ifdef CONFIG_BTRFS_DEBUG
|
||||
error = sysfs_create_group(fsid_kobj,
|
||||
&btrfs_debug_feature_attr_group);
|
||||
fs_info->debug_kobj = kobject_create_and_add("debug", fsid_kobj);
|
||||
if (!fs_info->debug_kobj) {
|
||||
error = -ENOMEM;
|
||||
goto failure;
|
||||
}
|
||||
|
||||
error = sysfs_create_files(fs_info->debug_kobj, btrfs_debug_mount_attrs);
|
||||
if (error)
|
||||
goto failure;
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user