From: Zhao Heming Date: Mon, 5 Oct 2020 16:00:23 +0000 (+0800) Subject: md/bitmap: md_bitmap_read_sb uses wrong bitmap blocks X-Git-Tag: v5.10-rc1~165^2^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a913096decbf4101271e7d87b9affb1454bb7676;p=thirdparty%2Fkernel%2Flinux.git md/bitmap: md_bitmap_read_sb uses wrong bitmap blocks The patched code is used to get chunks number, should use round-up div to replace current sector_div. The same code is in md_bitmap_resize(): ``` chunks = DIV_ROUND_UP_SECTOR_T(blocks, 1 << chunkshift); ``` Signed-off-by: Zhao Heming Signed-off-by: Song Liu --- diff --git a/drivers/md/md-bitmap.c b/drivers/md/md-bitmap.c index 55b757a223a4f..cd9a12ca281d3 100644 --- a/drivers/md/md-bitmap.c +++ b/drivers/md/md-bitmap.c @@ -606,8 +606,8 @@ re_read: if (bitmap->cluster_slot >= 0) { sector_t bm_blocks = bitmap->mddev->resync_max_sectors; - sector_div(bm_blocks, - bitmap->mddev->bitmap_info.chunksize >> 9); + bm_blocks = DIV_ROUND_UP_SECTOR_T(bm_blocks, + (bitmap->mddev->bitmap_info.chunksize >> 9)); /* bits to bytes */ bm_blocks = ((bm_blocks+7) >> 3) + sizeof(bitmap_super_t); /* to 4k blocks */