1. 25 9月, 2008 1 次提交
    • M
      Btrfs: Endianess bug fix for v0.13 with kernels · a5eb62e3
      Miguel 提交于
      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: NMiguel Sousa Filipe <miguel.filipe@gmail.com>
      ---
      Signed-off-by: NChris Mason <chris.mason@oracle.com>
      a5eb62e3