diff options
Diffstat (limited to 'fs/btrfs/sysfs.c')
-rw-r--r-- | fs/btrfs/sysfs.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c index 5562ce1f7090..4de9bae3e186 100644 --- a/fs/btrfs/sysfs.c +++ b/fs/btrfs/sysfs.c | |||
@@ -800,6 +800,28 @@ void btrfs_sysfs_add_block_group_type(struct btrfs_block_group_cache *cache) | |||
800 | space_info->block_group_kobjs[index] = &rkobj->kobj; | 800 | space_info->block_group_kobjs[index] = &rkobj->kobj; |
801 | } | 801 | } |
802 | 802 | ||
803 | /* | ||
804 | * Remove sysfs directories for all block group types of a given space info and | ||
805 | * the space info as well | ||
806 | */ | ||
807 | void btrfs_sysfs_remove_space_info(struct btrfs_space_info *space_info) | ||
808 | { | ||
809 | int i; | ||
810 | |||
811 | for (i = 0; i < BTRFS_NR_RAID_TYPES; i++) { | ||
812 | struct kobject *kobj; | ||
813 | |||
814 | kobj = space_info->block_group_kobjs[i]; | ||
815 | space_info->block_group_kobjs[i] = NULL; | ||
816 | if (kobj) { | ||
817 | kobject_del(kobj); | ||
818 | kobject_put(kobj); | ||
819 | } | ||
820 | } | ||
821 | kobject_del(&space_info->kobj); | ||
822 | kobject_put(&space_info->kobj); | ||
823 | } | ||
824 | |||
803 | static const char *alloc_name(u64 flags) | 825 | static const char *alloc_name(u64 flags) |
804 | { | 826 | { |
805 | switch (flags) { | 827 | switch (flags) { |