Hi,
About 3 years ago Liu Bo has try add xxhash support to btrfs[1].
For now (Kernel 4.14) kernel have a native library for xxhash.

Main reason to not add that support is what:
 - CRC32C - has hardware support and amazing fast
 - CRC32C - Can fix 1 bit error
   (Yes that possible, but that not used in btrfs and i hard to find
example of correction in the kernel)
   So that a not a valuable reason.

xxhash32/64 did not have a HW support but must outperform CRC32c in SW mode.

I'm not sure that ARM boxes, as example, some NAS have a HW crc32c.
([2] show that CRC32 can have HW on some types of ARMv8).
([3] for ARM v8.1-A CRC hw must be)

May be that make a sense to add support for both xxhash32/64?
And do some type of testing on module load like raid6 have, and use
fastest for newly written data?

I test speed on xxhash32/64 and crc32c, and use fastest function for
new written data?

Thanks!

P.S.
May be some one has ARMv8 boxes?
Can you check which module used by btrfs:
~ dmesg| grep crc
[    0.666469] Btrfs loaded, crc32c=crc32c-intel
May be you want/can test xxhash32/64 on arm, i backport kernel version in [4].
(But [4] doesn't have HW CRC32 support, i hard to find example
userspace implementation to stole on github and didn't have ARM box)

Links:
1. 
http://linux-btrfs.vger.kernel.narkive.com/pO9lOshJ/patch-2-3-crypto-xxhash-add-tests
2. 
https://github.com/torvalds/linux/blob/5518b69b76680a4f2df96b1deca260059db0c2de/arch/arm/crypto/crc32-ce-glue.c
3. https://en.wikipedia.org/wiki/ARM_architecture#ARMv8.1-A
4. https://github.com/Nefelim4ag/CRC32C_AND_8Byte_parity
-- 
Have a nice day,
Timofey.
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to