The patch titled reiserfs: use little-endian bitops has been added to the -mm tree. Its filename is reiserfs-use-little-endian-bitops.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: reiserfs: use little-endian bitops From: Akinobu Mita <akinobu.mita@xxxxxxxxx> As a preparation for removing ext2 non-atomic bit operations from asm/bitops.h. This converts ext2 non-atomic bit operations to little-endian bit operations. Signed-off-by: Akinobu Mita <akinobu.mita@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/reiserfs_fs.h | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff -puN include/linux/reiserfs_fs.h~reiserfs-use-little-endian-bitops include/linux/reiserfs_fs.h --- a/include/linux/reiserfs_fs.h~reiserfs-use-little-endian-bitops +++ a/include/linux/reiserfs_fs.h @@ -1124,15 +1124,21 @@ struct reiserfs_de_head { # define aligned_address(addr) ((void *)((long)(addr) & ~((1UL << ADDR_UNALIGNED_BITS) - 1))) # define unaligned_offset(addr) (((int)((long)(addr) & ((1 << ADDR_UNALIGNED_BITS) - 1))) << 3) -# define set_bit_unaligned(nr, addr) ext2_set_bit((nr) + unaligned_offset(addr), aligned_address(addr)) -# define clear_bit_unaligned(nr, addr) ext2_clear_bit((nr) + unaligned_offset(addr), aligned_address(addr)) -# define test_bit_unaligned(nr, addr) ext2_test_bit((nr) + unaligned_offset(addr), aligned_address(addr)) +# define set_bit_unaligned(nr, addr) \ + __test_and_set_le_bit((nr) + unaligned_offset(addr), aligned_address(addr)) +# define clear_bit_unaligned(nr, addr) \ + __test_and_clear_le_bit((nr) + unaligned_offset(addr), aligned_address(addr)) +# define test_bit_unaligned(nr, addr) \ + test_le_bit((nr) + unaligned_offset(addr), aligned_address(addr)) #else -# define set_bit_unaligned(nr, addr) ext2_set_bit(nr, addr) -# define clear_bit_unaligned(nr, addr) ext2_clear_bit(nr, addr) -# define test_bit_unaligned(nr, addr) ext2_test_bit(nr, addr) +# define set_bit_unaligned(nr, addr) \ + __test_and_set_le_bit(nr, (unsigned long *)(addr)) +# define clear_bit_unaligned(nr, addr) \ + __test_and_clear_le_bit(nr, (unsigned long *)(addr)) +# define test_bit_unaligned(nr, addr) \ + test_le_bit(nr, (unsigned long *)(addr)) #endif @@ -2329,14 +2335,14 @@ __u32 keyed_hash(const signed char *msg, __u32 yura_hash(const signed char *msg, int len); __u32 r5_hash(const signed char *msg, int len); -/* the ext2 bit routines adjust for big or little endian as -** appropriate for the arch, so in our laziness we use them rather -** than using the bit routines they call more directly. These -** routines must be used when changing on disk bitmaps. */ -#define reiserfs_test_and_set_le_bit ext2_set_bit -#define reiserfs_test_and_clear_le_bit ext2_clear_bit -#define reiserfs_test_le_bit ext2_test_bit -#define reiserfs_find_next_zero_le_bit ext2_find_next_zero_bit +#define reiserfs_test_and_set_le_bit(nr, addr) \ + __test_and_set_le_bit((nr), (unsigned long *)(addr)) +#define reiserfs_test_and_clear_le_bit(nr, addr) \ + __test_and_clear_le_bit((nr), (unsigned long *)(addr)) +#define reiserfs_test_le_bit(nr, addr) \ + test_le_bit((nr), (unsigned long *)(addr)) +#define reiserfs_find_next_zero_le_bit(addr, size, off) \ + find_next_zero_le_bit((unsigned long *)(addr), (size), (off)) /* sometimes reiserfs_truncate may require to allocate few new blocks to perform indirect2direct conversion. People probably used to _ Patches currently in -mm which might be from akinobu.mita@xxxxxxxxx are bitops-merge-little-and-big-endian-definisions-in-asm-generic-bitops-leh.patch bitops-rename-generic-little-endian-bitops-functions.patch s390-introduce-little-endian-bitops.patch arm-introduce-little-endian-bitops.patch m68k-introduce-little-endian-bitops.patch m68knommu-introduce-little-endian-bitops.patch bitops-introduce-little-endian-bitops-for-most-architectures.patch rds-stop-including-asm-generic-bitops-leh.patch kvm-stop-including-asm-generic-bitops-leh.patch asm-generic-use-little-endian-bitops.patch ext3-use-little-endian-bitops.patch ext4-use-little-endian-bitops.patch ocfs2-use-little-endian-bitops.patch nilfs2-use-little-endian-bitops.patch reiserfs-use-little-endian-bitops.patch udf-use-little-endian-bitops.patch ufs-use-little-endian-bitops.patch md-use-little-endian-bit-operations.patch dm-use-little-endian-bit-operations.patch bitops-remove-ext2-non-atomic-bitops-from-asm-bitopsh.patch m68k-remove-inline-asm-from-minix_find_first_zero_bit.patch bitops-remove-minix-bitops-from-asm-bitopsh.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html