Btrfs: sysfs: separate device kobject and its attribute creation

Separate device kobject and its attribute creation so that device
kobject can be created from the device discovery thread.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
This commit is contained in:
Anand Jain 2015-03-10 06:38:28 +08:00 committed by David Sterba
parent 0dd2906f72
commit 00c921c23f

View file

@ -645,6 +645,18 @@ int btrfs_kobj_rm_device(struct btrfs_fs_info *fs_info,
return 0;
}
int btrfs_sysfs_add_device(struct btrfs_fs_info *fs_info)
{
if (!fs_info->device_dir_kobj)
fs_info->device_dir_kobj = kobject_create_and_add("devices",
&fs_info->super_kobj);
if (!fs_info->device_dir_kobj)
return -ENOMEM;
return 0;
}
int btrfs_kobj_add_device(struct btrfs_fs_info *fs_info,
struct btrfs_device *one_device)
{
@ -652,12 +664,9 @@ int btrfs_kobj_add_device(struct btrfs_fs_info *fs_info,
struct btrfs_fs_devices *fs_devices = fs_info->fs_devices;
struct btrfs_device *dev;
if (!fs_info->device_dir_kobj)
fs_info->device_dir_kobj = kobject_create_and_add("devices",
&fs_info->super_kobj);
if (!fs_info->device_dir_kobj)
return -ENOMEM;
error = btrfs_sysfs_add_device(fs_info);
if (error)
return error;
list_for_each_entry(dev, &fs_devices->devices, dev_list) {
struct hd_struct *disk;