[PATCH 03/20] block: add a bdev_kobj helper
Jan Kara
jack at suse.cz
Wed Nov 18 09:18:00 EST 2020
On Wed 18-11-20 09:47:43, Christoph Hellwig wrote:
> Add a little helper to find the kobject for a struct block_device.
>
> Signed-off-by: Christoph Hellwig <hch at lst.de>
Looks good. You can add:
Reviewed-by: Jan Kara <jack at suse.cz>
Honza
> ---
> drivers/md/bcache/super.c | 7 ++-----
> drivers/md/md.c | 4 +---
> fs/btrfs/sysfs.c | 15 +++------------
> include/linux/blk_types.h | 3 +++
> 4 files changed, 9 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c
> index 46a00134a36ae1..a6a5e21e4fd136 100644
> --- a/drivers/md/bcache/super.c
> +++ b/drivers/md/bcache/super.c
> @@ -1447,8 +1447,7 @@ static int register_bdev(struct cache_sb *sb, struct cache_sb_disk *sb_disk,
> goto err;
>
> err = "error creating kobject";
> - if (kobject_add(&dc->disk.kobj, &part_to_dev(bdev->bd_part)->kobj,
> - "bcache"))
> + if (kobject_add(&dc->disk.kobj, bdev_kobj(bdev), "bcache"))
> goto err;
> if (bch_cache_accounting_add_kobjs(&dc->accounting, &dc->disk.kobj))
> goto err;
> @@ -2342,9 +2341,7 @@ static int register_cache(struct cache_sb *sb, struct cache_sb_disk *sb_disk,
> goto err;
> }
>
> - if (kobject_add(&ca->kobj,
> - &part_to_dev(bdev->bd_part)->kobj,
> - "bcache")) {
> + if (kobject_add(&ca->kobj, bdev_kobj(bdev), "bcache")) {
> err = "error calling kobject_add";
> ret = -ENOMEM;
> goto out;
> diff --git a/drivers/md/md.c b/drivers/md/md.c
> index b2edf5e0f965b5..7ce6047c856ea2 100644
> --- a/drivers/md/md.c
> +++ b/drivers/md/md.c
> @@ -2414,7 +2414,6 @@ EXPORT_SYMBOL(md_integrity_add_rdev);
> static int bind_rdev_to_array(struct md_rdev *rdev, struct mddev *mddev)
> {
> char b[BDEVNAME_SIZE];
> - struct kobject *ko;
> int err;
>
> /* prevent duplicates */
> @@ -2477,9 +2476,8 @@ static int bind_rdev_to_array(struct md_rdev *rdev, struct mddev *mddev)
> if ((err = kobject_add(&rdev->kobj, &mddev->kobj, "dev-%s", b)))
> goto fail;
>
> - ko = &part_to_dev(rdev->bdev->bd_part)->kobj;
> /* failure here is OK */
> - err = sysfs_create_link(&rdev->kobj, ko, "block");
> + err = sysfs_create_link(&rdev->kobj, bdev_kobj(rdev->bdev), "block");
> rdev->sysfs_state = sysfs_get_dirent_safe(rdev->kobj.sd, "state");
> rdev->sysfs_unack_badblocks =
> sysfs_get_dirent_safe(rdev->kobj.sd, "unacknowledged_bad_blocks");
> diff --git a/fs/btrfs/sysfs.c b/fs/btrfs/sysfs.c
> index 279d9262b676d4..24b6c6dc69000a 100644
> --- a/fs/btrfs/sysfs.c
> +++ b/fs/btrfs/sysfs.c
> @@ -1232,8 +1232,6 @@ int btrfs_sysfs_add_space_info_type(struct btrfs_fs_info *fs_info,
>
> void btrfs_sysfs_remove_device(struct btrfs_device *device)
> {
> - struct hd_struct *disk;
> - struct kobject *disk_kobj;
> struct kobject *devices_kobj;
>
> /*
> @@ -1243,11 +1241,8 @@ void btrfs_sysfs_remove_device(struct btrfs_device *device)
> devices_kobj = device->fs_info->fs_devices->devices_kobj;
> ASSERT(devices_kobj);
>
> - if (device->bdev) {
> - disk = device->bdev->bd_part;
> - disk_kobj = &part_to_dev(disk)->kobj;
> - sysfs_remove_link(devices_kobj, disk_kobj->name);
> - }
> + if (device->bdev)
> + sysfs_remove_link(devices_kobj, bdev_kobj(device->bdev)->name);
>
> if (device->devid_kobj.state_initialized) {
> kobject_del(&device->devid_kobj);
> @@ -1353,11 +1348,7 @@ int btrfs_sysfs_add_device(struct btrfs_device *device)
> nofs_flag = memalloc_nofs_save();
>
> if (device->bdev) {
> - struct hd_struct *disk;
> - struct kobject *disk_kobj;
> -
> - disk = device->bdev->bd_part;
> - disk_kobj = &part_to_dev(disk)->kobj;
> + struct kobject *disk_kobj = bdev_kobj(device->bdev);
>
> ret = sysfs_create_link(devices_kobj, disk_kobj, disk_kobj->name);
> if (ret) {
> diff --git a/include/linux/blk_types.h b/include/linux/blk_types.h
> index d9b69bbde5cc54..0069bee992063e 100644
> --- a/include/linux/blk_types.h
> +++ b/include/linux/blk_types.h
> @@ -48,6 +48,9 @@ struct block_device {
> struct mutex bd_fsfreeze_mutex;
> } __randomize_layout;
>
> +#define bdev_kobj(_bdev) \
> + (&part_to_dev((_bdev)->bd_part)->kobj)
> +
> /*
> * Block error status values. See block/blk-core:blk_errors for the details.
> * Alpha cannot write a byte atomically, so we need to use 32-bit value.
> --
> 2.29.2
>
--
Jan Kara <jack at suse.com>
SUSE Labs, CR
More information about the linux-mtd
mailing list