]> www.infradead.org Git - users/hch/misc.git/commitdiff
md/md-bitmap: merge md_bitmap_group into bitmap_operations
authorYu Kuai <yukuai3@huawei.com>
Mon, 7 Jul 2025 01:27:00 +0000 (09:27 +0800)
committerYu Kuai <yukuai3@huawei.com>
Sat, 6 Sep 2025 09:11:40 +0000 (17:11 +0800)
Now that all bitmap implementations are internal, it doesn't make sense
to export md_bitmap_group anymore.

Link: https://lore.kernel.org/linux-raid/20250707012711.376844-5-yukuai1@huaweicloud.com
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Xiao Ni <xni@redhat.com>
drivers/md/md-bitmap.c
drivers/md/md-bitmap.h
drivers/md/md.c
drivers/md/md.h

index 4b87a09589d5b2713ad263db2181ad12f1330748..30b6b42b9a4842012e09558a488a4a4f899a5845 100644 (file)
@@ -2989,7 +2989,8 @@ static struct attribute *md_bitmap_attrs[] = {
        &max_backlog_used.attr,
        NULL
 };
-const struct attribute_group md_bitmap_group = {
+
+static struct attribute_group md_bitmap_group = {
        .name = "bitmap",
        .attrs = md_bitmap_attrs,
 };
@@ -3025,6 +3026,8 @@ static struct bitmap_operations bitmap_ops = {
        .copy_from_slot         = bitmap_copy_from_slot,
        .set_pages              = bitmap_set_pages,
        .free                   = md_bitmap_free,
+
+       .group                  = &md_bitmap_group,
 };
 
 void mddev_set_bitmap_ops(struct mddev *mddev)
index 28c1f1c1cc831d1db30143447a559f654b1913e7..0ceb9e97d21f6902da259f4db9487d95aadf918c 100644 (file)
@@ -100,6 +100,8 @@ struct bitmap_operations {
                              sector_t *hi, bool clear_bits);
        void (*set_pages)(void *data, unsigned long pages);
        void (*free)(void *data);
+
+       struct attribute_group *group;
 };
 
 /* the bitmap API */
index a9b31f02a9c70da3b7d1928c96544aa40f379132..ee1454948fc594f704d79d486debfe37ac59737c 100644 (file)
@@ -5801,7 +5801,6 @@ static const struct attribute_group md_redundancy_group = {
 
 static const struct attribute_group *md_attr_groups[] = {
        &md_default_group,
-       &md_bitmap_group,
        NULL,
 };
 
@@ -6055,6 +6054,11 @@ struct mddev *md_alloc(dev_t dev, char *name)
                return ERR_PTR(error);
        }
 
+       if (mddev->bitmap_ops && mddev->bitmap_ops->group)
+               if (sysfs_create_group(&mddev->kobj, mddev->bitmap_ops->group))
+                       pr_warn("md: cannot register extra bitmap attributes for %s\n",
+                               mdname(mddev));
+
        kobject_uevent(&mddev->kobj, KOBJ_ADD);
        mddev->sysfs_state = sysfs_get_dirent_safe(mddev->kobj.sd, "array_state");
        mddev->sysfs_level = sysfs_get_dirent_safe(mddev->kobj.sd, "level");
index 51af29a0307931ce45b1fa5317ee8d0e8a4f256d..06364e15e8d16a9a956732b61d30a037ad058de7 100644 (file)
@@ -796,7 +796,6 @@ struct md_sysfs_entry {
        ssize_t (*show)(struct mddev *, char *);
        ssize_t (*store)(struct mddev *, const char *, size_t);
 };
-extern const struct attribute_group md_bitmap_group;
 
 static inline struct kernfs_node *sysfs_get_dirent_safe(struct kernfs_node *sd, char *name)
 {