Skip to content

Commit

Permalink
affs: use memweight()
Browse files Browse the repository at this point in the history
Use memweight() to count the total number of bits set in memory area.

Signed-off-by: Akinobu Mita <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
mita authored and torvalds committed Jul 31, 2012
1 parent 8fb980e commit 0121ad6
Showing 1 changed file with 2 additions and 26 deletions.
28 changes: 2 additions & 26 deletions fs/affs/bitmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,6 @@
#include <linux/slab.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
affs_count_free_blocks(struct super_block *sb)
{
Expand Down Expand Up @@ -317,7 +293,7 @@ int affs_init_bitmap(struct super_block *sb, int *flags)
goto out;
}
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,
* but we also need the right bm pointer below
Expand Down Expand Up @@ -367,7 +343,7 @@ int affs_init_bitmap(struct super_block *sb, int *flags)

/* recalculate bitmap count for last block */
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:
affs_brelse(bh);
Expand Down

0 comments on commit 0121ad6

Please sign in to comment.