[PATCH] md: use ffz instead of find_first_set to convert multiplier to shift
find_first_set doesn't find the least-significant bit on bigendian machines, so it is really wrong to use it. ffs is closer, but takes an 'int' and we have a 'unsigned long'. So use ffz(~X) to convert a chunksize into a chunkshift. Signed-off-by: Neil Brown <neilb@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
14f50b49fd
commit
a638b2dc95
1 changed files with 1 additions and 2 deletions
|
@ -1444,8 +1444,7 @@ int bitmap_create(mddev_t *mddev)
|
|||
if (err)
|
||||
goto error;
|
||||
|
||||
bitmap->chunkshift = find_first_bit(&bitmap->chunksize,
|
||||
sizeof(bitmap->chunksize));
|
||||
bitmap->chunkshift = ffz(~bitmap->chunksize);
|
||||
|
||||
/* now that chunksize and chunkshift are set, we can use these macros */
|
||||
chunks = (blocks + CHUNK_BLOCK_RATIO(bitmap) - 1) /
|
||||
|
|
Loading…
Reference in a new issue