md/md-bitmap: merge md_bitmap_flush() into bitmap_operations
authorYu Kuai <yukuai3@huawei.com>
Mon, 26 Aug 2024 07:44:26 +0000 (15:44 +0800)
committerSong Liu <song@kernel.org>
Tue, 27 Aug 2024 17:14:16 +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-17-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 dc898db266d005872ac7011089bbacad6758588e..0035162fe6f382d3bf1d3b8c26d52f9e87efe592 100644 (file)
@@ -1773,10 +1773,7 @@ void md_bitmap_dirty_bits(struct bitmap *bitmap, unsigned long s, unsigned long
        }
 }
 
-/*
- * flush out any pending updates
- */
-void md_bitmap_flush(struct mddev *mddev)
+static void bitmap_flush(struct mddev *mddev)
 {
        struct bitmap *bitmap = mddev->bitmap;
        long sleep;
@@ -2725,6 +2722,7 @@ static struct bitmap_operations bitmap_ops = {
        .create                 = bitmap_create,
        .load                   = bitmap_load,
        .destroy                = bitmap_destroy,
+       .flush                  = bitmap_flush,
 };
 
 void mddev_set_bitmap_ops(struct mddev *mddev)
index c8d27b91241b326768ef33103290df61a8e2acd5..c0858665554ef26bf96406fa81d6bf19c38f4202 100644 (file)
@@ -250,13 +250,13 @@ struct bitmap_operations {
        int (*create)(struct mddev *mddev, int slot);
        int (*load)(struct mddev *mddev);
        void (*destroy)(struct mddev *mddev);
+       void (*flush)(struct mddev *mddev);
 };
 
 /* the bitmap API */
 void mddev_set_bitmap_ops(struct mddev *mddev);
 
 /* these are used only by md/bitmap */
-void md_bitmap_flush(struct mddev *mddev);
 
 void md_bitmap_print_sb(struct bitmap *bitmap);
 void md_bitmap_update_sb(struct bitmap *bitmap);
index eeb17eb1fc0284e89256ce00f4144af011f34617..b422acd4b2a45b03b7bb43888f0fd51c104aa227 100644 (file)
@@ -6463,7 +6463,8 @@ static void __md_stop_writes(struct mddev *mddev)
                mddev->pers->quiesce(mddev, 1);
                mddev->pers->quiesce(mddev, 0);
        }
-       md_bitmap_flush(mddev);
+
+       mddev->bitmap_ops->flush(mddev);
 
        if (md_is_rdwr(mddev) &&
            ((!mddev->in_sync && !mddev_is_clustered(mddev)) ||