Commit 0121ad62 authored by Akinobu Mita's avatar Akinobu Mita Committed by Linus Torvalds

affs: use memweight()

Use memweight() to count the total number of bits set in memory area.
Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 8fb980e3
...@@ -10,30 +10,6 @@ ...@@ -10,30 +10,6 @@
#include <linux/slab.h> #include <linux/slab.h>
#include "affs.h" #include "affs.h"
/* This is, of course, shamelessly stolen from fs/minix */
static const int nibblemap[] = { 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4 };
static u32
affs_count_free_bits(u32 blocksize, const void *data)
{
const u32 *map;
u32 free;
u32 tmp;
map = data;
free = 0;
for (blocksize /= 4; blocksize > 0; blocksize--) {
tmp = *map++;
while (tmp) {
free += nibblemap[tmp & 0xf];
tmp >>= 4;
}
}
return free;
}
u32 u32
affs_count_free_blocks(struct super_block *sb) affs_count_free_blocks(struct super_block *sb)
{ {
...@@ -317,7 +293,7 @@ int affs_init_bitmap(struct super_block *sb, int *flags) ...@@ -317,7 +293,7 @@ int affs_init_bitmap(struct super_block *sb, int *flags)
goto out; goto out;
} }
pr_debug("AFFS: read bitmap block %d: %d\n", blk, bm->bm_key); pr_debug("AFFS: read bitmap block %d: %d\n", blk, bm->bm_key);
bm->bm_free = affs_count_free_bits(sb->s_blocksize - 4, bh->b_data + 4); bm->bm_free = memweight(bh->b_data + 4, sb->s_blocksize - 4);
/* Don't try read the extension if this is the last block, /* Don't try read the extension if this is the last block,
* but we also need the right bm pointer below * but we also need the right bm pointer below
...@@ -367,7 +343,7 @@ int affs_init_bitmap(struct super_block *sb, int *flags) ...@@ -367,7 +343,7 @@ int affs_init_bitmap(struct super_block *sb, int *flags)
/* recalculate bitmap count for last block */ /* recalculate bitmap count for last block */
bm--; bm--;
bm->bm_free = affs_count_free_bits(sb->s_blocksize - 4, bh->b_data + 4); bm->bm_free = memweight(bh->b_data + 4, sb->s_blocksize - 4);
out: out:
affs_brelse(bh); affs_brelse(bh);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment