diff options
author | Paul Clements <paul.clements@steeleye.com> | 2006-10-03 04:16:01 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-03 11:04:18 -0400 |
commit | a638b2dc951c4cafea31b34a1db1c3d94809649e (patch) | |
tree | 73c1c2135a117290308b5807b6ede21389e3264c | |
parent | 14f50b49fdab8f4c9fc87b55d3631e3bf1ffd385 (diff) |
[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>
-rw-r--r-- | drivers/md/bitmap.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c index 0a44298fb353..8e67634e79a0 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c | |||
@@ -1444,8 +1444,7 @@ int bitmap_create(mddev_t *mddev) | |||
1444 | if (err) | 1444 | if (err) |
1445 | goto error; | 1445 | goto error; |
1446 | 1446 | ||
1447 | bitmap->chunkshift = find_first_bit(&bitmap->chunksize, | 1447 | bitmap->chunkshift = ffz(~bitmap->chunksize); |
1448 | sizeof(bitmap->chunksize)); | ||
1449 | 1448 | ||
1450 | /* now that chunksize and chunkshift are set, we can use these macros */ | 1449 | /* now that chunksize and chunkshift are set, we can use these macros */ |
1451 | chunks = (blocks + CHUNK_BLOCK_RATIO(bitmap) - 1) / | 1450 | chunks = (blocks + CHUNK_BLOCK_RATIO(bitmap) - 1) / |