提交 e7e1aa9c 编写于 作者: A Anand Jain 提交者: David Sterba

Btrfs: sysfs: fix, undo sysfs device links

Theoritically need to remove the device links attributes, but since its entire device
kobject was removed, so there wasn't any issue of about it. Just do it nicely.
Signed-off-by: NAnand Jain <anand.jain@oracle.com>
Signed-off-by: NDavid Sterba <dsterba@suse.cz>
上级 4e51f005
...@@ -522,6 +522,7 @@ void btrfs_sysfs_remove_one(struct btrfs_fs_info *fs_info) ...@@ -522,6 +522,7 @@ void btrfs_sysfs_remove_one(struct btrfs_fs_info *fs_info)
kobject_del(fs_info->space_info_kobj); kobject_del(fs_info->space_info_kobj);
kobject_put(fs_info->space_info_kobj); kobject_put(fs_info->space_info_kobj);
} }
btrfs_kobj_rm_device(fs_info, NULL);
kobject_del(fs_info->device_dir_kobj); kobject_del(fs_info->device_dir_kobj);
kobject_put(fs_info->device_dir_kobj); kobject_put(fs_info->device_dir_kobj);
addrm_unknown_feature_attrs(fs_info, false); addrm_unknown_feature_attrs(fs_info, false);
...@@ -604,6 +605,8 @@ static void init_feature_attrs(void) ...@@ -604,6 +605,8 @@ static void init_feature_attrs(void)
} }
} }
/* when one_device is NULL, it removes all device links */
int btrfs_kobj_rm_device(struct btrfs_fs_info *fs_info, int btrfs_kobj_rm_device(struct btrfs_fs_info *fs_info,
struct btrfs_device *one_device) struct btrfs_device *one_device)
{ {
...@@ -621,6 +624,20 @@ int btrfs_kobj_rm_device(struct btrfs_fs_info *fs_info, ...@@ -621,6 +624,20 @@ int btrfs_kobj_rm_device(struct btrfs_fs_info *fs_info,
disk_kobj->name); disk_kobj->name);
} }
if (one_device)
return 0;
list_for_each_entry(one_device,
&fs_info->fs_devices->devices, dev_list) {
if (!one_device->bdev)
continue;
disk = one_device->bdev->bd_part;
disk_kobj = &part_to_dev(disk)->kobj;
sysfs_remove_link(fs_info->device_dir_kobj,
disk_kobj->name);
}
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册