Loading fs/btrfs/sysfs.c +9 −3 Original line number Diff line number Diff line Loading @@ -625,14 +625,17 @@ int btrfs_kobj_rm_device(struct btrfs_fs_info *fs_info, return 0; } static int btrfs_kobj_add_device(struct btrfs_fs_info *fs_info) int btrfs_kobj_add_device(struct btrfs_fs_info *fs_info, struct btrfs_device *one_device) { int error = 0; 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; Loading @@ -643,6 +646,9 @@ static int btrfs_kobj_add_device(struct btrfs_fs_info *fs_info) if (!dev->bdev) continue; if (one_device && one_device != dev) continue; disk = dev->bdev->bd_part; disk_kobj = &part_to_dev(disk)->kobj; Loading Loading @@ -686,7 +692,7 @@ int btrfs_sysfs_add_one(struct btrfs_fs_info *fs_info) if (error) goto failure; error = btrfs_kobj_add_device(fs_info); error = btrfs_kobj_add_device(fs_info, NULL); if (error) goto failure; Loading fs/btrfs/sysfs.h +2 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,8 @@ char *btrfs_printable_features(enum btrfs_feature_set set, u64 flags); extern const char * const btrfs_feature_set_names[3]; extern struct kobj_type space_info_ktype; extern struct kobj_type btrfs_raid_ktype; int btrfs_kobj_add_device(struct btrfs_fs_info *fs_info, struct btrfs_device *one_device); int btrfs_kobj_rm_device(struct btrfs_fs_info *fs_info, struct btrfs_device *one_device); #endif /* _BTRFS_SYSFS_H_ */ fs/btrfs/volumes.c +5 −0 Original line number Diff line number Diff line Loading @@ -2147,6 +2147,10 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path) total_bytes = btrfs_super_num_devices(root->fs_info->super_copy); btrfs_set_super_num_devices(root->fs_info->super_copy, total_bytes + 1); /* add sysfs device entry */ btrfs_kobj_add_device(root->fs_info, device); mutex_unlock(&root->fs_info->fs_devices->device_list_mutex); if (seeding_dev) { Loading Loading @@ -2209,6 +2213,7 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path) unlock_chunks(root); btrfs_end_transaction(trans, root); rcu_string_free(device->name); btrfs_kobj_rm_device(root->fs_info, device); kfree(device); error: blkdev_put(bdev, FMODE_EXCL); Loading Loading
fs/btrfs/sysfs.c +9 −3 Original line number Diff line number Diff line Loading @@ -625,14 +625,17 @@ int btrfs_kobj_rm_device(struct btrfs_fs_info *fs_info, return 0; } static int btrfs_kobj_add_device(struct btrfs_fs_info *fs_info) int btrfs_kobj_add_device(struct btrfs_fs_info *fs_info, struct btrfs_device *one_device) { int error = 0; 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; Loading @@ -643,6 +646,9 @@ static int btrfs_kobj_add_device(struct btrfs_fs_info *fs_info) if (!dev->bdev) continue; if (one_device && one_device != dev) continue; disk = dev->bdev->bd_part; disk_kobj = &part_to_dev(disk)->kobj; Loading Loading @@ -686,7 +692,7 @@ int btrfs_sysfs_add_one(struct btrfs_fs_info *fs_info) if (error) goto failure; error = btrfs_kobj_add_device(fs_info); error = btrfs_kobj_add_device(fs_info, NULL); if (error) goto failure; Loading
fs/btrfs/sysfs.h +2 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,8 @@ char *btrfs_printable_features(enum btrfs_feature_set set, u64 flags); extern const char * const btrfs_feature_set_names[3]; extern struct kobj_type space_info_ktype; extern struct kobj_type btrfs_raid_ktype; int btrfs_kobj_add_device(struct btrfs_fs_info *fs_info, struct btrfs_device *one_device); int btrfs_kobj_rm_device(struct btrfs_fs_info *fs_info, struct btrfs_device *one_device); #endif /* _BTRFS_SYSFS_H_ */
fs/btrfs/volumes.c +5 −0 Original line number Diff line number Diff line Loading @@ -2147,6 +2147,10 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path) total_bytes = btrfs_super_num_devices(root->fs_info->super_copy); btrfs_set_super_num_devices(root->fs_info->super_copy, total_bytes + 1); /* add sysfs device entry */ btrfs_kobj_add_device(root->fs_info, device); mutex_unlock(&root->fs_info->fs_devices->device_list_mutex); if (seeding_dev) { Loading Loading @@ -2209,6 +2213,7 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path) unlock_chunks(root); btrfs_end_transaction(trans, root); rcu_string_free(device->name); btrfs_kobj_rm_device(root->fs_info, device); kfree(device); error: blkdev_put(bdev, FMODE_EXCL); Loading