diff options
author | Tushar Gohad <tusharsg@gmail.com> | 2016-03-03 03:53:13 +0000 |
---|---|---|
committer | Tushar Gohad <tusharsg@gmail.com> | 2016-03-10 07:33:16 +0000 |
commit | a6a8d2018d50068f1177ba9f826518b003dc5917 (patch) | |
tree | 884b3e9b6363e4e7d9da6fc9c963b35318b983a3 /src/erasurecode_helpers.c | |
parent | fd88e703372eed2ecda8f10fe539ee28b2794e0f (diff) | |
download | liberasurecode-frag_metadata_checksum.tar.gz |
Fragment metadata checksumming supportfrag_metadata_checksum
Diffstat (limited to 'src/erasurecode_helpers.c')
-rw-r--r-- | src/erasurecode_helpers.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/erasurecode_helpers.c b/src/erasurecode_helpers.c index c9fa288..5068b27 100644 --- a/src/erasurecode_helpers.c +++ b/src/erasurecode_helpers.c @@ -501,3 +501,45 @@ inline uint32_t* get_chksum(char *buf) /* ==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~== */ +#if LIBERASURECODE_VERSION >= _VERSION(1,2,0) +inline int set_metadata_chksum(char *buf) +{ + fragment_header_t* header = (fragment_header_t*) buf; + + assert(NULL != header); + if (header->magic != LIBERASURECODE_FRAG_HEADER_MAGIC) { + log_error("Invalid fragment header (set meta chksum)!\n"); + return -1; + } + + header->metadata_chksum = crc32(0, &header->meta, + sizeof(fragment_metadata_t)); + return 0; +} + +inline uint32_t* get_metadata_chksum(char *buf) +{ + fragment_header_t* header = (fragment_header_t*) buf; + + assert(NULL != header); + if (header->magic != LIBERASURECODE_FRAG_HEADER_MAGIC) { + log_error("Invalid fragment header (get meta chksum)!"); + return NULL; + } + + return (uint32_t *) &header->metadata_chksum; +} +#else +inline int set_metadata_chksum(char *buf) +{ + return 0; +} + +inline uint32_t* get_metadata_chksum(char *buf) +{ + return (uint32_t *) 0; +} +#endif + +/* ==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~== */ + |