]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
md/md-bitmap: add a new helper md_bitmap_set_pages()
authorYu Kuai <yukuai3@huawei.com>
Mon, 26 Aug 2024 07:44:20 +0000 (15:44 +0800)
committerSong Liu <song@kernel.org>
Tue, 27 Aug 2024 17:14:15 +0000 (10:14 -0700)
Currently md-cluster will set bitmap->counts.pages directly, add a
helper to do this to avoid dereferencing bitmap directly.

Noted that after this patch bitmap is not dereferenced directly anymore
and following patches will move the structure inside md-bitmap.c.

Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Link: https://lore.kernel.org/r/20240826074452.1490072-11-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 918510f36e33cb26e03d0721e4fdf9545d4be87a..015997b4b83526eb36cbf62dd371398be17a239f 100644 (file)
@@ -2094,6 +2094,12 @@ int md_bitmap_copy_from_slot(struct mddev *mddev, int slot,
 }
 EXPORT_SYMBOL_GPL(md_bitmap_copy_from_slot);
 
+void md_bitmap_set_pages(struct bitmap *bitmap, unsigned long pages)
+{
+       bitmap->counts.pages = pages;
+}
+EXPORT_SYMBOL_GPL(md_bitmap_set_pages);
+
 int md_bitmap_get_stats(struct bitmap *bitmap, struct md_bitmap_stats *stats)
 {
        struct bitmap_storage *storage;
index 909a661383c6950bc402482cc6535f1d6cd82185..c4d64311c0e812dcb5dd055c0a2dfff2549c0c2b 100644 (file)
@@ -285,6 +285,7 @@ int md_bitmap_resize(struct bitmap *bitmap, sector_t blocks,
 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);
+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 76febdc5d7f66534486b8a1f7bfbcfe2484844f7..59f7fbca783bc8a5cefd3911a4c76ba85437d20a 100644 (file)
@@ -1163,7 +1163,6 @@ static int resize_bitmaps(struct mddev *mddev, sector_t newsize, sector_t oldsiz
 
        for (i = 0; i < mddev->bitmap_info.nodes; i++) {
                struct dlm_lock_resource *bm_lockres;
-               struct bitmap_counts *counts;
                char str[64];
 
                if (i == md_cluster_ops->slot_number(mddev))
@@ -1175,7 +1174,6 @@ static int resize_bitmaps(struct mddev *mddev, sector_t newsize, sector_t oldsiz
                        bitmap = NULL;
                        goto out;
                }
-               counts = &bitmap->counts;
 
                rv = md_bitmap_get_stats(bitmap, &stats);
                if (rv)
@@ -1193,7 +1191,7 @@ static int resize_bitmaps(struct mddev *mddev, sector_t newsize, sector_t oldsiz
                bm_lockres->flags |= DLM_LKF_NOQUEUE;
                rv = dlm_lock_sync(bm_lockres, DLM_LOCK_PW);
                if (!rv)
-                       counts->pages = my_pages;
+                       md_bitmap_set_pages(bitmap, my_pages);
                lockres_free(bm_lockres);
 
                if (my_pages != stats.pages)