diff options
Diffstat (limited to 'src/erasurecode_postprocessing.c')
-rw-r--r-- | src/erasurecode_postprocessing.c | 11 |
1 files changed, 9 insertions, 2 deletions
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, |