]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
md/md-cluster: use helper md_bitmap_get_stats() to get pages in resize_bitmaps()
authorYu Kuai <yukuai3@huawei.com>
Mon, 26 Aug 2024 07:44:19 +0000 (15:44 +0800)
committerSong Liu <song@kernel.org>
Tue, 27 Aug 2024 17:14:15 +0000 (10:14 -0700)
Use the existed helper instead of open coding it, avoid dereferencing
bitmap directly to prepare inventing a new bitmap.

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

index e3faf752f0b1fd69a1947a2dca7b2694d6fbfd0a..76febdc5d7f66534486b8a1f7bfbcfe2484844f7 100644 (file)
@@ -1143,13 +1143,16 @@ static int update_bitmap_size(struct mddev *mddev, sector_t size)
 
 static int resize_bitmaps(struct mddev *mddev, sector_t newsize, sector_t oldsize)
 {
-       struct bitmap_counts *counts;
-       char str[64];
-       struct dlm_lock_resource *bm_lockres;
        struct bitmap *bitmap = mddev->bitmap;
-       unsigned long my_pages = bitmap->counts.pages;
+       struct md_bitmap_stats stats;
+       unsigned long my_pages;
        int i, rv;
 
+       rv = md_bitmap_get_stats(bitmap, &stats);
+       if (rv)
+               return rv;
+
+       my_pages = stats.pages;
        /*
         * We need to ensure all the nodes can grow to a larger
         * bitmap size before make the reshaping.
@@ -1159,6 +1162,10 @@ static int resize_bitmaps(struct mddev *mddev, sector_t newsize, sector_t oldsiz
                return rv;
 
        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))
                        continue;
 
@@ -1170,6 +1177,9 @@ static int resize_bitmaps(struct mddev *mddev, sector_t newsize, sector_t oldsiz
                }
                counts = &bitmap->counts;
 
+               rv = md_bitmap_get_stats(bitmap, &stats);
+               if (rv)
+                       goto out;
                /*
                 * If we can hold the bitmap lock of one node then
                 * the slot is not occupied, update the pages.
@@ -1186,7 +1196,7 @@ static int resize_bitmaps(struct mddev *mddev, sector_t newsize, sector_t oldsiz
                        counts->pages = my_pages;
                lockres_free(bm_lockres);
 
-               if (my_pages != counts->pages)
+               if (my_pages != stats.pages)
                        /*
                         * Let's revert the bitmap size if one node
                         * can't resize bitmap