reiserfs: use proper little-endian bitops
PATCH v2 1/2 reiserfs: use proper little-endian bitops
Using __test_and_{set,clear}_bit_le() with ignoring its return value can be replaced with __{set,clear}_bit_le().
This introduces reiserfs_{set,clear}_le_bit for __{set,clear}_bit_le and does the above change with them.
Signed-off-by Akinobu Mita <[email protected]>
---
v2: rewritten to keep reiserfs_*_le_bit() macros
fs/reiserfs/bitmap.c | 2 +- fs/reiserfs/resize.c | 6 +++--- include/linux/reiserfs_fs.h | 2 ++ 3 files changed, 6 insertions(+), 4 deletions(-)
fs/reiserfs/bitmap.c +1 -1
@@ -214,7 +214,7 @@ static int scan_bitmap_block(struct reiserfs_transaction_handle *th, }/* otherwise we clear all bit were set ... */ while (--i >= *beg) -reiserfs_test_and_clear_le_bit +reiserfs_clear_le_bit (i, bh->b_data);reiserfs_restore_prepared_buffer (s, bh); *beg = org;
fs/reiserfs/resize.c +3 -3
@@ -136,7 +136,7 @@ int reiserfs_resize(struct super_block *s, unsigned long block_count_new)return -EIO ; }memset (bh->b_data,0 ,sb_blocksize (sb)); -reiserfs_test_and_set_le_bit (0 , bh->b_data); +reiserfs_set_le_bit (0 , bh->b_data);reiserfs_cache_bitmap_metadata (s, bh, bitmap + i);set_buffer_uptodate (bh);
@@ -172,7 +172,7 @@ int reiserfs_resize(struct super_block *s, unsigned long block_count_new)reiserfs_prepare_for_journal (s, bh,1 );for (i = block_r; i < s->s_blocksize *8 ; i++) -reiserfs_test_and_clear_le_bit (i, bh->b_data); +reiserfs_clear_le_bit (i, bh->b_data); info->free_count += s->s_blocksize *8 - block_r;journal_mark_dirty (&th, s, bh);
@@ -190,7 +190,7 @@ int reiserfs_resize(struct super_block *s, unsigned long block_count_new)reiserfs_prepare_for_journal (s, bh,1 );for (i = block_r_new; i < s->s_blocksize *8 ; i++) -reiserfs_test_and_set_le_bit (i, bh->b_data); +reiserfs_set_le_bit (i, bh->b_data);journal_mark_dirty (&th, s, bh);brelse (bh);
include/linux/reiserfs_fs.h +2 -0
@@ -2332,7 +2332,9 @@ __u32 keyed_hash(const signed char *msg, int len);__u32 yura_hash (const signed char *msg,int len);__u32 r5_hash (const signed char *msg,int len); +#define reiserfs_set_le_bit __set_bit_le#define reiserfs_test_and_set_le_bit __test_and_set_bit_le +#define reiserfs_clear_le_bit __clear_bit_le#define reiserfs_test_and_clear_le_bit __test_and_clear_bit_le#define reiserfs_test_le_bit test_bit_le#define reiserfs_find_next_zero_le_bit find_next_zero_bit_le
Signature · 1 line
1.7.4.4
PATCH v2 2/2 reiserfs: use hweight_long()
Use hweight_long() to count free bits in the bitmap.
Signed-off-by Akinobu Mita <[email protected]>
---
v2: rewritten to keep reiserfs_*_le_bit() macros
fs/reiserfs/bitmap.c | 6 +----- 1 files changed, 1 insertions(+), 5 deletions(-)
fs/reiserfs/bitmap.c +1 -5
@@ -1222,15 +1222,11 @@ void reiserfs_cache_bitmap_metadata(struct super_block *sb, info->free_count =0 ;while (--cur >= (unsigned long *)bh->b_data) { -int i; -/* 0 and ~0 are special, we can optimize for them */ if (*cur ==0 ) info->free_count +=BITS_PER_LONG ;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); } }
Signature · 1 line
1.7.4.4