• Miguel's avatar
    Btrfs: Endianess bug fix for v0.13 with kernels · a5eb62e3
    Miguel authored
    Fix for a endianess BUG when using btrfs v0.13 with kernels older than 2.6.23
    
    Problem:
    
    Has of v0.13, btrfs-progs is using crc32c.c equivalent to the one found on
    linux-2.6.23/lib/libcrc32c.c Since crc32c_le() changed in linux-2.6.23, when
    running btrfs v0.13 with older kernels we have a missmatch between the versions
    of crc32c_le() from btrfs-progs and libcrc32c in the kernel.  This missmatch
    causes a bug when using btrfs on big endian machines.
    
    Solution:
    btrfs_crc32c() macro that when compiling for kernels older than 2.6.23, does
    endianess conversion to parameters and return value of crc32c().
    This endianess conversion nullifies the differences in implementation
    of crc32c_le().
    If kernel 2.6.23 or better, it calls crc32c().
    Signed-off-by: default avatarMiguel Sousa Filipe <miguel.filipe@gmail.com>
    ---
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    a5eb62e3
extent-tree.c 72.8 KB