NULL,
 };
 
+static const struct attribute_group md_default_group = {
+       .attrs = md_default_attrs,
+};
+
 static struct attribute *md_redundancy_attrs[] = {
        &md_scan_mode.attr,
        &md_last_scan_mode.attr,
        .attrs = md_redundancy_attrs,
 };
 
+static const struct attribute_group *md_attr_groups[] = {
+       &md_default_group,
+       &md_bitmap_group,
+       NULL,
+};
+
 static ssize_t
 md_attr_show(struct kobject *kobj, struct attribute *attr, char *page)
 {
 static struct kobj_type md_ktype = {
        .release        = md_free,
        .sysfs_ops      = &md_sysfs_ops,
-       .default_attrs  = md_default_attrs,
+       .default_groups = md_attr_groups,
 };
 
 int mdp_major = 0;
 {
        struct mddev *mddev = container_of(ws, struct mddev, del_work);
 
-       sysfs_remove_group(&mddev->kobj, &md_bitmap_group);
        kobject_del(&mddev->kobj);
        kobject_put(&mddev->kobj);
 }
                         disk->disk_name);
                error = 0;
        }
-       if (mddev->kobj.sd &&
-           sysfs_create_group(&mddev->kobj, &md_bitmap_group))
-               pr_debug("pointless warning\n");
  abort:
        mutex_unlock(&disks_mutex);
        if (!error && mddev->kobj.sd) {