summaryrefslogtreecommitdiff
path: root/drivers/md
diff options
context:
space:
mode:
authorYu Kuai <yukuai3@huawei.com>2024-08-26 15:44:19 +0800
committerSong Liu <song@kernel.org>2024-08-27 10:14:15 -0700
commit9e4481ce0e55b4ef9795845d8b6770e3f6f4b24d (patch)
tree8d8b74856784d8616af37d949f7af401f103555e /drivers/md
parenta0e7744a460ba5ca91f8d6fc4a696ee345b5baa9 (diff)
downloadlwn-9e4481ce0e55b4ef9795845d8b6770e3f6f4b24d.tar.gz
lwn-9e4481ce0e55b4ef9795845d8b6770e3f6f4b24d.zip
md/md-cluster: use helper md_bitmap_get_stats() to get pages in resize_bitmaps()
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>
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/md-cluster.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/drivers/md/md-cluster.c b/drivers/md/md-cluster.c
index e3faf752f0b1..76febdc5d7f6 100644
--- a/drivers/md/md-cluster.c
+++ b/drivers/md/md-cluster.c
@@ -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