Re: [PATCH] block: fix attribute_group lost if set before add_disk

From: Christoph Hellwig
Date: Fri Jun 10 2022 - 04:13:53 EST


On Fri, Jun 10, 2022 at 03:16:29PM +0800, Sun Feng wrote:
> after commit 52b85909f85d("block: fold register_disk into device_add_disk")
> when set attribute_group with following code:
>
> disk_to_dev(disk)->groups = attr_groups;
> err = add_disk(disk);
>
> disk_to_dev(disk)->groups will set to NULL in device_add_disk,
>
> static inline int __must_check add_disk(struct gendisk *disk)
> {
> return device_add_disk(NULL, disk, NULL);
> }
> int __must_check device_add_disk(struct device *parent, ...
> const struct attribute_group **groups)
> {
>
> ddev->groups = groups
>
> and it will lose attribute group set.

Well, your are not supposed to set the attribute group yourself, but
instead pass it to device_add_disk.