md/md-bitmap: merge md_bitmap_resize() into bitmap_operations
authorYu Kuai <yukuai3@huawei.com>
Mon, 26 Aug 2024 07:44:45 +0000 (15:44 +0800)
committerSong Liu <song@kernel.org>
Tue, 27 Aug 2024 19:43:15 +0000 (12:43 -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-36-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org>
drivers/md/dm-raid.c
drivers/md/md-bitmap.c
drivers/md/md-bitmap.h
drivers/md/md-cluster.c
drivers/md/raid1.c
drivers/md/raid10.c
drivers/md/raid5.c

index cc071fcd7a046c9ef622ca5a7e9e73d0710f85e2..63682d27fc8dd442b4a2910d4839ef997de475fa 100644 (file)
@@ -4068,7 +4068,8 @@ static int raid_preresume(struct dm_target *ti)
               mddev->bitmap_info.chunksize != to_bytes(rs->requested_bitmap_chunk_sectors)))) {
                int chunksize = to_bytes(rs->requested_bitmap_chunk_sectors) ?: mddev->bitmap_info.chunksize;
 
-               r = md_bitmap_resize(mddev, mddev->dev_sectors, chunksize, false);
+               r = mddev->bitmap_ops->resize(mddev, mddev->dev_sectors,
+                                             chunksize, false);
                if (r)
                        DMERR("Failed to resize bitmap");
        }
index c2292546d6ce183da567803357123315555bf1a7..0506b54f6322cdf77baffee22da452c418bedff9 100644 (file)
@@ -2374,8 +2374,8 @@ err:
        return ret;
 }
 
-int md_bitmap_resize(struct mddev *mddev, sector_t blocks, int chunksize,
-                    bool init)
+static int bitmap_resize(struct mddev *mddev, sector_t blocks, int chunksize,
+                        bool init)
 {
        struct bitmap *bitmap = mddev->bitmap;
 
@@ -2384,7 +2384,6 @@ int md_bitmap_resize(struct mddev *mddev, sector_t blocks, int chunksize,
 
        return __bitmap_resize(bitmap, blocks, chunksize, init);
 }
-EXPORT_SYMBOL_GPL(md_bitmap_resize);
 
 static ssize_t
 location_show(struct mddev *mddev, char *page)
@@ -2763,6 +2762,7 @@ const struct attribute_group md_bitmap_group = {
 
 static struct bitmap_operations bitmap_ops = {
        .create                 = bitmap_create,
+       .resize                 = bitmap_resize,
        .load                   = bitmap_load,
        .destroy                = bitmap_destroy,
        .flush                  = bitmap_flush,
index 4610e50548ebf62331627252e898fb7f0f42627c..d05fc2f1451eda800da841d907790e22d2e6e265 100644 (file)
@@ -248,6 +248,9 @@ struct md_bitmap_stats {
 
 struct bitmap_operations {
        int (*create)(struct mddev *mddev, int slot);
+       int (*resize)(struct mddev *mddev, sector_t blocks, int chunksize,
+                     bool init);
+
        int (*load)(struct mddev *mddev);
        void (*destroy)(struct mddev *mddev);
        void (*flush)(struct mddev *mddev);
@@ -280,8 +283,6 @@ void mddev_set_bitmap_ops(struct mddev *mddev);
 
 /* these are exported */
 
-int md_bitmap_resize(struct mddev *mddev, sector_t blocks, int chunksize,
-                    bool init);
 struct bitmap *get_bitmap_from_slot(struct mddev *mddev, int slot);
 int md_bitmap_copy_from_slot(struct mddev *mddev, int slot,
                             sector_t *lo, sector_t *hi, bool clear_bits);
index a7e5ead71c2f911dd81e6950090bbc3f114d59bc..21cf0f38cbf8c313ac93cc1a865fad836b3bd83f 100644 (file)
@@ -628,8 +628,9 @@ static int process_recvd_msg(struct mddev *mddev, struct cluster_msg *msg)
                break;
        case BITMAP_RESIZE:
                if (le64_to_cpu(msg->high) != mddev->pers->size(mddev, 0, 0))
-                       ret = md_bitmap_resize(mddev, le64_to_cpu(msg->high), 0,
-                                              false);
+                       ret = mddev->bitmap_ops->resize(mddev,
+                                                       le64_to_cpu(msg->high),
+                                                       0, false);
                break;
        default:
                ret = -1;
index cf05bafeae7765dcd42e2fd020d26c30f3db3629..3e678af8f28a25ea0d8d112292bdf6c60b32b932 100644 (file)
@@ -3303,7 +3303,7 @@ static int raid1_resize(struct mddev *mddev, sector_t sectors)
            mddev->array_sectors > newsize)
                return -EINVAL;
 
-       ret = md_bitmap_resize(mddev, newsize, 0, false);
+       ret = mddev->bitmap_ops->resize(mddev, newsize, 0, false);
        if (ret)
                return ret;
 
index 4512d285b76ad470896d38d65b17d30bd679d8d7..f3bf1116794a4e069377fc6d5965101c98fd3ed8 100644 (file)
@@ -4210,7 +4210,7 @@ static int raid10_resize(struct mddev *mddev, sector_t sectors)
            mddev->array_sectors > size)
                return -EINVAL;
 
-       ret = md_bitmap_resize(mddev, size, 0, false);
+       ret = mddev->bitmap_ops->resize(mddev, size, 0, false);
        if (ret)
                return ret;
 
@@ -4479,7 +4479,7 @@ static int raid10_start_reshape(struct mddev *mddev)
                newsize = raid10_size(mddev, 0, conf->geo.raid_disks);
 
                if (!mddev_is_clustered(mddev)) {
-                       ret = md_bitmap_resize(mddev, newsize, 0, false);
+                       ret = mddev->bitmap_ops->resize(mddev, newsize, 0, false);
                        if (ret)
                                goto abort;
                        else
@@ -4494,20 +4494,20 @@ static int raid10_start_reshape(struct mddev *mddev)
 
                /*
                 * some node is already performing reshape, and no need to
-                * call md_bitmap_resize again since it should be called when
+                * call bitmap_ops->resize again since it should be called when
                 * receiving BITMAP_RESIZE msg
                 */
                if ((sb && (le32_to_cpu(sb->feature_map) &
                            MD_FEATURE_RESHAPE_ACTIVE)) || (oldsize == newsize))
                        goto out;
 
-               ret = md_bitmap_resize(mddev, newsize, 0, false);
+               ret = mddev->bitmap_ops->resize(mddev, newsize, 0, false);
                if (ret)
                        goto abort;
 
                ret = md_cluster_ops->resize_bitmaps(mddev, newsize, oldsize);
                if (ret) {
-                       md_bitmap_resize(mddev, oldsize, 0, false);
+                       mddev->bitmap_ops->resize(mddev, oldsize, 0, false);
                        goto abort;
                }
        }
index 47c89f7b1dfe8561559eca08af981b1826fe9046..c84a7e0263cde267b605ef7a610518ee702b993f 100644 (file)
@@ -8323,7 +8323,7 @@ static int raid5_resize(struct mddev *mddev, sector_t sectors)
            mddev->array_sectors > newsize)
                return -EINVAL;
 
-       ret = md_bitmap_resize(mddev, sectors, 0, false);
+       ret = mddev->bitmap_ops->resize(mddev, sectors, 0, false);
        if (ret)
                return ret;