md/bitmap: fix calculation of 'chunks' - missing shift.
commit 61a0d80c
"md/bitmap: discard CHUNK_BLOCK_SHIFT macro"
replaced CHUNK_BLOCK_RATIO() by the same text that was
replacing CHUNK_BLOCK_SHIFT() - which is clearly wrong.
The result is that 'chunks' is often too small by 1,
which can sometimes result in a crash (not sure how).
So use the correct replacement, and get rid of CHUNK_BLOCK_RATIO
which is no longe used.
Reported-by: Karl Newman <siliconfiend@gmail.com>
Tested-by: Karl Newman <siliconfiend@gmail.com>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
@@ -1727,8 +1727,7 @@ int bitmap_create(struct mddev *mddev)
|
||||
bitmap->chunkshift = (ffz(~mddev->bitmap_info.chunksize)
|
||||
- BITMAP_BLOCK_SHIFT);
|
||||
|
||||
/* now that chunksize and chunkshift are set, we can use these macros */
|
||||
chunks = (blocks + bitmap->chunkshift - 1) >>
|
||||
chunks = (blocks + (1 << bitmap->chunkshift) - 1) >>
|
||||
bitmap->chunkshift;
|
||||
pages = (chunks + PAGE_COUNTER_RATIO - 1) / PAGE_COUNTER_RATIO;
|
||||
|
||||
|
Reference in New Issue
Block a user