|
@@ -1222,15 +1222,11 @@ void reiserfs_cache_bitmap_metadata(struct super_block *sb,
|
|
info->free_count = 0;
|
|
info->free_count = 0;
|
|
|
|
|
|
while (--cur >= (unsigned long *)bh->b_data) {
|
|
while (--cur >= (unsigned long *)bh->b_data) {
|
|
- int i;
|
|
|
|
-
|
|
|
|
/* 0 and ~0 are special, we can optimize for them */
|
|
/* 0 and ~0 are special, we can optimize for them */
|
|
if (*cur == 0)
|
|
if (*cur == 0)
|
|
info->free_count += BITS_PER_LONG;
|
|
info->free_count += BITS_PER_LONG;
|
|
else if (*cur != ~0L) /* A mix, investigate */
|
|
else if (*cur != ~0L) /* A mix, investigate */
|
|
- for (i = BITS_PER_LONG - 1; i >= 0; i--)
|
|
|
|
- if (!reiserfs_test_le_bit(i, cur))
|
|
|
|
- info->free_count++;
|
|
|
|
|
|
+ info->free_count += BITS_PER_LONG - hweight_long(*cur);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|