summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/erasurecode_helpers.c8
-rw-r--r--src/erasurecode_postprocessing.c11
2 files changed, 16 insertions, 3 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;
diff --git a/src/erasurecode_postprocessing.c b/src/erasurecode_postprocessing.c
index 07c08f5..f665e60 100644
--- a/src/erasurecode_postprocessing.c
+++ b/src/erasurecode_postprocessing.c
@@ -32,6 +32,7 @@
#include "erasurecode_helpers_ext.h"
#include "erasurecode_log.h"
#include "erasurecode_stdinc.h"
+#include "alg_sig.h"
void add_fragment_metadata(ec_backend_t be, char *fragment,
int idx, uint64_t orig_data_size, int blocksize,
@@ -59,8 +60,14 @@ void add_fragment_metadata(ec_backend_t be, char *fragment,
return;
}
- header->metadata_chksum = crc32(0, (unsigned char *) &header->meta,
- sizeof(fragment_metadata_t));
+ char *flag = getenv("LIBERASURECODE_WRITE_LEGACY_CRC");
+ if (flag && !(flag[0] == '\0' || (flag[0] == '0' && flag[1] == '\0'))) {
+ header->metadata_chksum = liberasurecode_crc32_alt(
+ 0, &header->meta, sizeof(fragment_metadata_t));
+ } else {
+ header->metadata_chksum = crc32(0, (unsigned char *) &header->meta,
+ sizeof(fragment_metadata_t));
+ }
}
int finalize_fragments_after_encode(ec_backend_t instance,