summaryrefslogtreecommitdiffstats
path: root/fs/btrfs
diff options
context:
space:
mode:
authorAnand Jain <Anand.Jain@oracle.com>2015-03-10 06:38:21 +0800
committerDavid Sterba <dsterba@suse.cz>2015-05-27 12:27:19 +0200
commite7e1aa9c913da380fbf1977ac4fa98e464023605 (patch)
treec758d19a0a30420ba41cb7bf649626e6ddcb1fcc /fs/btrfs
parent4e51f005a22a2c7795351b975437b0cee0acce3e (diff)
downloadop-kernel-dev-e7e1aa9c913da380fbf1977ac4fa98e464023605.zip
op-kernel-dev-e7e1aa9c913da380fbf1977ac4fa98e464023605.tar.gz
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: Anand Jain <anand.jain@oracle.com> Signed-off-by: David Sterba <dsterba@suse.cz>
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/sysfs.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
index db2f8ae..ca07861 100644
--- a/fs/btrfs/sysfs.c
+++ b/fs/btrfs/sysfs.c
@@ -522,6 +522,7 @@ void btrfs_sysfs_remove_one(struct btrfs_fs_info *fs_info)
kobject_del(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_put(fs_info->device_dir_kobj);
addrm_unknown_feature_attrs(fs_info, false);
@@ -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,
struct btrfs_device *one_device)
{
@@ -621,6 +624,20 @@ int btrfs_kobj_rm_device(struct btrfs_fs_info *fs_info,
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;
}
OpenPOWER on IntegriCloud