Erasure Code API library written in C with pluggable Erasure Code backends.
Go to file
Pete Zaitcev 7e97b2f808 Make our alt crc32 more portable
Apparently the author of our old crc32 assumed that shifting an int
to the right sign-extends, which is not always the case. Result is,
building and running make test on s390x fails. The fix is to force
a sign-extension using the "xor 0x80; sub 0x80" trick.

N.B. This does not cause a compatibility problem, because by a
miracle the "broken" crc32_alt was actually computing a stock
crc32, same that zlib has. Therefore, if someone, somewhere,
ran a Swift cluster on s390x with erasure coding policy,
the data in it is already stored with zlib checksums, as we
do it now anyway. This fix only permits the tests pass, which
used the bad data sample from x86.

Change-Id: Ibd5e4e6c02be00540a9648cc7e0f8efda275bf3f
Related-Change: Ib5ea2a830c7c23d66bf2ca404a3eb84ad00c5bc5
Related-Bug: 1666320
2019-02-13 21:25:33 +00:00
doc re-org of README 2017-06-07 10:59:01 -04:00
include Release 1.6.0 2018-09-21 10:28:15 -04:00
playbooks/unittests Install Jerasure and ISA-L libs 2018-10-22 10:40:16 -04:00
roles Install Jerasure and ISA-L libs 2018-10-22 10:40:16 -04:00
src Make our alt crc32 more portable 2019-02-13 21:25:33 +00:00
test Allow reading of little-endian frags on big-endian 2018-09-11 21:58:34 -06:00
.gitignore Remove remaining m4/ references 2015-06-21 22:17:08 +00:00
.gitreview Release 1.2.0 2016-05-27 14:03:51 -04:00
.mailmap Release 1.6.0 2018-09-21 10:28:15 -04:00
.zuul.yaml Import Zuul unittests 2018-03-01 20:02:26 +01:00
AUTHORS Release 1.6.0 2018-09-21 10:28:15 -04:00
COPYING Add doxygen config. Update README, copyrights. 2014-09-01 22:40:09 -07:00
ChangeLog Release 1.6.0 2018-09-21 10:28:15 -04:00
Makefile.am Fix building with LD_LIBRARY_PATH set 2018-10-01 16:35:35 +02:00
NEWS Add NEWS and README back 2016-05-27 14:27:11 -04:00
README Add NEWS and README back 2016-05-27 14:27:11 -04:00
README.md re-org of README 2017-06-07 10:59:01 -04:00
Xorcode.pc.in autoconf: Add Xorcode pkgconfig, other minor fixes 2014-06-29 21:42:09 -07:00
autogen.sh Add -f argument to autoreconf to regenerate aclocal macros 2015-06-22 02:49:16 +00:00
bindep.txt Use zlib for CRC-32 2017-07-06 17:40:38 +00:00
configure.ac Merge "Stop using ceill() to compute padded data size" 2017-06-06 19:17:12 +00:00
erasurecode.pc.in Add dl to pkg-config metadata 2017-07-13 13:26:00 -07:00
erasurecode_rs_vand.pc.in Add pkg-config template for liberasurecode_rs_vand 2015-06-23 04:07:26 +00:00
get_flags_from_cpuid.c Fix get_supported_flags() arguments 2015-06-22 02:54:25 +00:00

README.md

liberasurecode

liberasurecode is an Erasure Code API library written in C with pluggable Erasure Code backends.


Highlights

  • Unified Erasure Coding interface for common storage workloads.

  • Pluggable Erasure Code backends - liberasurecode supports the following backends:

    • 'liberasurecode_rs_vand' - Native, software-only Erasure Coding implementation that supports a Reed-Solomon backend
    • 'Jerasure' - Erasure Coding library that supports Reed-Solomon, Cauchy backends [1]
    • 'ISA-L' - Intel Storage Acceleration Library - SIMD accelerated Erasure Coding backends [2]
    • 'SHSS' - NTT Lab Japan's hybrid Erasure Coding backend [4]
    • 'Flat XOR HD' - built-in to liberasurecode, based on [3]
    • 'libphazr' - Phazr.IO's erasure code backend with built-in privacy [5]
    • 'NULL' template backend implemented to help future backend writers
  • True 'plugin' architecture - liberasurecode uses Dynamically Loaded (DL) libraries to realize a true 'plugin' architecture. This also allows one to build liberasurecode indepdendent of the Erasure Code backend libraries.

  • Cross-platform - liberasurecode is known to work on Linux (Fedora/Debian flavors), Solaris, BSD and Darwin/Mac OS X.

  • Community support - Developed alongside Erasure Code authority Kevin Greenan, liberasurecode is an actively maintained open-source project with growing community involvement (Openstack Swift, Ceph, PyECLib, NTT Labs).


Active Users


Build and Install

Install dependencies -

Debian/Ubuntu hosts:

 $ sudo apt-get install build-essential autoconf automake libtool

Fedora/RedHat/CentOS hosts:

 $ sudo yum install -y gcc make autoconf automake libtool

To build the liberasurecode repository, perform the following from the top-level directory:

 $ ./autogen.sh
 $ ./configure
 $ make
 $ make test
 $ sudo make install

References

[1] Jerasure, C library that supports erasure coding in storage applications, http://jerasure.org

[2] Intel(R) Storage Acceleration Library (Open Source Version), https://01.org/intel%C2%AE-storage-acceleration-library-open-source-version

[3] Greenan, Kevin M et al, "Flat XOR-based erasure codes in storage systems", http://www.kaymgee.com/Kevin_Greenan/Publications_files/greenan-msst10.pdf

[4] Kota Tsuyuzaki tsuyuzaki.kota@lab.ntt.co.jp, "NTT SHSS Erasure Coding backend"

[5] Jim Cheung support@phazr.io, "Phazr.IO libphazr erasure code backend with built-in privacy"