Message ID | 20250403015322.2873369-1-zhengqixing@huaweicloud.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [V2] md/md-bitmap: fix stats collection for external bitmaps | expand |
在 2025/04/03 9:53, Zheng Qixing 写道: > From: Zheng Qixing <zhengqixing@huawei.com> > > The bitmap_get_stats() function incorrectly returns -ENOENT for external > bitmaps. > > Remove the external bitmap check as the statistics should be available > regardless of bitmap storage location. > > Return -EINVAL only for invalid bitmap with no storage (neither in > superblock nor in external file). > > Note: "bitmap_info.external" here refers to a bitmap stored in a separate > file (bitmap_file), not to external metadata. > > Fixes: 8d28d0ddb986 ("md/md-bitmap: Synchronize bitmap_get_stats() with bitmap lifetime") > Signed-off-by: Zheng Qixing <zhengqixing@huawei.com> > --- > drivers/md/md-bitmap.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > Applied to md-6.15 Thanks > diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c > index 44ec9b17cfd3..37b08f26c62f 100644 > --- a/drivers/md/md-bitmap.c > +++ b/drivers/md/md-bitmap.c > @@ -2357,9 +2357,8 @@ static int bitmap_get_stats(void *data, struct md_bitmap_stats *stats) > > if (!bitmap) > return -ENOENT; > - if (bitmap->mddev->bitmap_info.external) > - return -ENOENT; > - if (!bitmap->storage.sb_page) /* no superblock */ > + if (!bitmap->mddev->bitmap_info.external && > + !bitmap->storage.sb_page) > return -EINVAL; > sb = kmap_local_page(bitmap->storage.sb_page); > stats->sync_size = le64_to_cpu(sb->sync_size); >
diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c index 44ec9b17cfd3..37b08f26c62f 100644 --- a/drivers/md/md-bitmap.c +++ b/drivers/md/md-bitmap.c @@ -2357,9 +2357,8 @@ static int bitmap_get_stats(void *data, struct md_bitmap_stats *stats) if (!bitmap) return -ENOENT; - if (bitmap->mddev->bitmap_info.external) - return -ENOENT; - if (!bitmap->storage.sb_page) /* no superblock */ + if (!bitmap->mddev->bitmap_info.external && + !bitmap->storage.sb_page) return -EINVAL; sb = kmap_local_page(bitmap->storage.sb_page); stats->sync_size = le64_to_cpu(sb->sync_size);