md/md-bitmap: merge md_bitmap_create() into bitmap_operations
authorYu Kuai <yukuai3@huawei.com>
Mon, 26 Aug 2024 07:44:23 +0000 (15:44 +0800)
committerSong Liu <song@kernel.org>
Tue, 27 Aug 2024 17:14:15 +0000 (10:14 -0700)
So that the implementation won't be exposed, and it'll be possible
to invent a new bitmap by replacing bitmap_operations.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20240826074452.1490072-14-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org>
drivers/md/md-bitmap.c
drivers/md/md-bitmap.h
drivers/md/md.c

index 2f3ff8e641217f5541e6179b40ecd1f784f52900..c534382f0b570002675d43b6f56a745d9db3aaf7 100644 (file)
@@ -1966,7 +1966,7 @@ static struct bitmap *__bitmap_create(struct mddev *mddev, int slot)
        return ERR_PTR(err);
 }
 
-int md_bitmap_create(struct mddev *mddev, int slot)
+static int bitmap_create(struct mddev *mddev, int slot)
 {
        struct bitmap *bitmap = __bitmap_create(mddev, slot);
 
@@ -2421,7 +2421,7 @@ location_store(struct mddev *mddev, const char *buf, size_t len)
                        }
 
                        mddev->bitmap_info.offset = offset;
-                       rv = md_bitmap_create(mddev, -1);
+                       rv = bitmap_create(mddev, -1);
                        if (rv)
                                goto out;
 
@@ -2723,6 +2723,7 @@ const struct attribute_group md_bitmap_group = {
 };
 
 static struct bitmap_operations bitmap_ops = {
+       .create                 = bitmap_create,
 };
 
 void mddev_set_bitmap_ops(struct mddev *mddev)
index d66f447f4be63a24941584b46a93e8df8e763665..f4c4925102b64812c074b453aa0605cfdf9d549f 100644 (file)
@@ -247,13 +247,13 @@ struct md_bitmap_stats {
 };
 
 struct bitmap_operations {
+       int (*create)(struct mddev *mddev, int slot);
 };
 
 /* the bitmap API */
 void mddev_set_bitmap_ops(struct mddev *mddev);
 
 /* these are used only by md/bitmap */
-int md_bitmap_create(struct mddev *mddev, int slot);
 int md_bitmap_load(struct mddev *mddev);
 void md_bitmap_flush(struct mddev *mddev);
 void md_bitmap_destroy(struct mddev *mddev);
index 7a041640c313a536f95fd0ec434a2edfe545525c..7e774d4aaadd40848868a4379c6a036063f0ede7 100644 (file)
@@ -6224,7 +6224,7 @@ int md_run(struct mddev *mddev)
        }
        if (err == 0 && pers->sync_request &&
            (mddev->bitmap_info.file || mddev->bitmap_info.offset)) {
-               err = md_bitmap_create(mddev, -1);
+               err = mddev->bitmap_ops->create(mddev, -1);
                if (err)
                        pr_warn("%s: failed to create bitmap (%d)\n",
                                mdname(mddev), err);
@@ -7282,7 +7282,7 @@ static int set_bitmap_file(struct mddev *mddev, int fd)
        err = 0;
        if (mddev->pers) {
                if (fd >= 0) {
-                       err = md_bitmap_create(mddev, -1);
+                       err = mddev->bitmap_ops->create(mddev, -1);
                        if (!err)
                                err = md_bitmap_load(mddev);
 
@@ -7576,7 +7576,7 @@ static int update_array_info(struct mddev *mddev, mdu_array_info_t *info)
                                mddev->bitmap_info.default_offset;
                        mddev->bitmap_info.space =
                                mddev->bitmap_info.default_space;
-                       rv = md_bitmap_create(mddev, -1);
+                       rv = mddev->bitmap_ops->create(mddev, -1);
                        if (!rv)
                                rv = md_bitmap_load(mddev);