Commit 5a13f430 authored by Anand Jain's avatar Anand Jain Committed by David Sterba

Btrfs: sysfs: add pointer to access fs_info from fs_devices

adds fs_info pointer with struct btrfs_fs_devices.
Signed-off-by: default avatarAnand Jain <anand.jain@oracle.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.cz>
parent c73eccf7
...@@ -530,6 +530,8 @@ static void btrfs_sysfs_remove_fsid(struct btrfs_fs_devices *fs_devs) ...@@ -530,6 +530,8 @@ static void btrfs_sysfs_remove_fsid(struct btrfs_fs_devices *fs_devs)
void btrfs_sysfs_remove_one(struct btrfs_fs_info *fs_info) void btrfs_sysfs_remove_one(struct btrfs_fs_info *fs_info)
{ {
btrfs_reset_fs_info_ptr(fs_info);
if (fs_info->space_info_kobj) { if (fs_info->space_info_kobj) {
sysfs_remove_files(fs_info->space_info_kobj, allocation_attrs); sysfs_remove_files(fs_info->space_info_kobj, allocation_attrs);
kobject_del(fs_info->space_info_kobj); kobject_del(fs_info->space_info_kobj);
...@@ -729,6 +731,8 @@ int btrfs_sysfs_add_one(struct btrfs_fs_info *fs_info) ...@@ -729,6 +731,8 @@ int btrfs_sysfs_add_one(struct btrfs_fs_info *fs_info)
struct btrfs_fs_devices *fs_devs = fs_info->fs_devices; struct btrfs_fs_devices *fs_devs = fs_info->fs_devices;
struct kobject *super_kobj = &fs_devs->super_kobj; struct kobject *super_kobj = &fs_devs->super_kobj;
btrfs_set_fs_info_ptr(fs_info);
error = btrfs_sysfs_add_fsid(fs_devs, NULL); error = btrfs_sysfs_add_fsid(fs_devs, NULL);
if (error) if (error)
return error; return error;
......
...@@ -6733,3 +6733,21 @@ void btrfs_update_commit_device_bytes_used(struct btrfs_root *root, ...@@ -6733,3 +6733,21 @@ void btrfs_update_commit_device_bytes_used(struct btrfs_root *root,
} }
unlock_chunks(root); unlock_chunks(root);
} }
void btrfs_set_fs_info_ptr(struct btrfs_fs_info *fs_info)
{
struct btrfs_fs_devices *fs_devices = fs_info->fs_devices;
while (fs_devices) {
fs_devices->fs_info = fs_info;
fs_devices = fs_devices->seed;
}
}
void btrfs_reset_fs_info_ptr(struct btrfs_fs_info *fs_info)
{
struct btrfs_fs_devices *fs_devices = fs_info->fs_devices;
while (fs_devices) {
fs_devices->fs_info = NULL;
fs_devices = fs_devices->seed;
}
}
...@@ -254,6 +254,7 @@ struct btrfs_fs_devices { ...@@ -254,6 +254,7 @@ struct btrfs_fs_devices {
*/ */
int rotating; int rotating;
struct btrfs_fs_info *fs_info;
/* sysfs kobjects */ /* sysfs kobjects */
struct kobject super_kobj; struct kobject super_kobj;
struct kobject *device_dir_kobj; struct kobject *device_dir_kobj;
...@@ -543,5 +544,7 @@ static inline void unlock_chunks(struct btrfs_root *root) ...@@ -543,5 +544,7 @@ static inline void unlock_chunks(struct btrfs_root *root)
} }
struct list_head *btrfs_get_fs_uuids(void); struct list_head *btrfs_get_fs_uuids(void);
void btrfs_set_fs_info_ptr(struct btrfs_fs_info *fs_info);
void btrfs_reset_fs_info_ptr(struct btrfs_fs_info *fs_info);
#endif #endif
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