summaryrefslogtreecommitdiff
path: root/src/erasurecode_helpers.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/erasurecode_helpers.c')
-rw-r--r--src/erasurecode_helpers.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/erasurecode_helpers.c b/src/erasurecode_helpers.c
index 4be2634..84b114c 100644
--- a/src/erasurecode_helpers.c
+++ b/src/erasurecode_helpers.c
@@ -463,6 +463,7 @@ inline int set_checksum(ec_checksum_type_t ct, char *buf, int blocksize)
{
fragment_header_t* header = (fragment_header_t*) buf;
char *data = get_data_ptr_from_fragment(buf);
+ char *flag;
assert(NULL != header);
if (header->magic != LIBERASURECODE_FRAG_HEADER_MAGIC) {
@@ -475,7 +476,12 @@ inline int set_checksum(ec_checksum_type_t ct, char *buf, int blocksize)
switch(header->meta.chksum_type) {
case CHKSUM_CRC32:
- header->meta.chksum[0] = crc32(0, (unsigned char *) data, blocksize);
+ flag = getenv("LIBERASURECODE_WRITE_LEGACY_CRC");
+ if (flag && !(flag[0] == '\0' || (flag[0] == '0' && flag[1] == '\0'))) {
+ header->meta.chksum[0] = liberasurecode_crc32_alt(0, data, blocksize);
+ } else {
+ header->meta.chksum[0] = crc32(0, (unsigned char *) data, blocksize);
+ }
break;
case CHKSUM_MD5:
break;