]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
md/md-bitmap: merge md_bitmap_copy_from_slot() into struct bitmap_operation.
authorYu Kuai <yukuai3@huawei.com>
Mon, 26 Aug 2024 07:44:47 +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-38-yukuai1@huaweicloud.com
Signed-off-by: Song Liu <song@kernel.org>
drivers/md/md-bitmap.c
drivers/md/md-bitmap.h
drivers/md/md-cluster.c

index a75f4216fd409621e062ff2a721b1871256f3bc1..25126cdee4e112fcf22b108c55f1e6047fbe1e6b 100644 (file)
@@ -2088,8 +2088,8 @@ static struct bitmap *bitmap_get_from_slot(struct mddev *mddev, int slot)
 /* Loads the bitmap associated with slot and copies the resync information
  * to our bitmap
  */
-int md_bitmap_copy_from_slot(struct mddev *mddev, int slot,
-               sector_t *low, sector_t *high, bool clear_bits)
+static int bitmap_copy_from_slot(struct mddev *mddev, int slot, sector_t *low,
+                                sector_t *high, bool clear_bits)
 {
        int rv = 0, i, j;
        sector_t block, lo = 0, hi = 0;
@@ -2131,7 +2131,6 @@ int md_bitmap_copy_from_slot(struct mddev *mddev, int slot,
 
        return rv;
 }
-EXPORT_SYMBOL_GPL(md_bitmap_copy_from_slot);
 
 void md_bitmap_set_pages(struct bitmap *bitmap, unsigned long pages)
 {
@@ -2782,6 +2781,7 @@ static struct bitmap_operations bitmap_ops = {
 
        .sync_with_cluster      = bitmap_sync_with_cluster,
        .get_from_slot          = bitmap_get_from_slot,
+       .copy_from_slot         = bitmap_copy_from_slot,
 };
 
 void mddev_set_bitmap_ops(struct mddev *mddev)
index 6bcb88b7137183b7b904729606fe549c2f3c711f..94d9a6ae244aa0a85ae7260723787e286134b51c 100644 (file)
@@ -277,6 +277,8 @@ struct bitmap_operations {
                                  sector_t old_lo, sector_t old_hi,
                                  sector_t new_lo, sector_t new_hi);
        struct bitmap *(*get_from_slot)(struct mddev *mddev, int slot);
+       int (*copy_from_slot)(struct mddev *mddev, int slot, sector_t *lo,
+                             sector_t *hi, bool clear_bits);
 };
 
 /* the bitmap API */
@@ -284,8 +286,6 @@ void mddev_set_bitmap_ops(struct mddev *mddev);
 
 /* these are exported */
 
-int md_bitmap_copy_from_slot(struct mddev *mddev, int slot,
-                            sector_t *lo, sector_t *hi, bool clear_bits);
 void md_bitmap_set_pages(struct bitmap *bitmap, unsigned long pages);
 void md_bitmap_free(struct bitmap *bitmap);
 void md_bitmap_wait_behind_writes(struct mddev *mddev);
index 81c630dcf9ea0462aaf7f22ca338dd5a70c2948d..515f46983ace523abd82ed71263d707a6fc57dde 100644 (file)
@@ -317,7 +317,7 @@ static void recover_bitmaps(struct md_thread *thread)
                                        str, ret);
                        goto clear_bit;
                }
-               ret = md_bitmap_copy_from_slot(mddev, slot, &lo, &hi, true);
+               ret = mddev->bitmap_ops->copy_from_slot(mddev, slot, &lo, &hi, true);
                if (ret) {
                        pr_err("md-cluster: Could not copy data from bitmap %d\n", slot);
                        goto clear_bit;
@@ -857,7 +857,7 @@ static int gather_all_resync_info(struct mddev *mddev, int total_slots)
                }
 
                /* Read the disk bitmap sb and check if it needs recovery */
-               ret = md_bitmap_copy_from_slot(mddev, i, &lo, &hi, false);
+               ret = mddev->bitmap_ops->copy_from_slot(mddev, i, &lo, &hi, false);
                if (ret) {
                        pr_warn("md-cluster: Could not gather bitmaps from slot %d", i);
                        lockres_free(bm_lockres);
@@ -1600,7 +1600,7 @@ static int gather_bitmaps(struct md_rdev *rdev)
        for (sn = 0; sn < mddev->bitmap_info.nodes; sn++) {
                if (sn == (cinfo->slot_number - 1))
                        continue;
-               err = md_bitmap_copy_from_slot(mddev, sn, &lo, &hi, false);
+               err = mddev->bitmap_ops->copy_from_slot(mddev, sn, &lo, &hi, false);
                if (err) {
                        pr_warn("md-cluster: Could not gather bitmaps from slot %d", sn);
                        goto out;