Btrfs: sysfs: add pointer to access fs_info from fs_devices
adds fs_info pointer with struct btrfs_fs_devices. Signed-off-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: David Sterba <dsterba@suse.cz>
This commit is contained in:
Родитель
c73eccf75b
Коммит
5a13f4308c
|
@ -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)
|
||||||
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,
|
||||||
}
|
}
|
||||||
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 {
|
||||||
*/
|
*/
|
||||||
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)
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
|
|
Загрузка…
Ссылка в новой задаче