summaryrefslogtreecommitdiff
path: root/src/erasurecode_helpers.c
diff options
context:
space:
mode:
authorTushar Gohad <tusharsg@gmail.com>2016-03-03 03:53:13 +0000
committerTushar Gohad <tusharsg@gmail.com>2016-03-10 07:33:16 +0000
commita6a8d2018d50068f1177ba9f826518b003dc5917 (patch)
tree884b3e9b6363e4e7d9da6fc9c963b35318b983a3 /src/erasurecode_helpers.c
parentfd88e703372eed2ecda8f10fe539ee28b2794e0f (diff)
downloadliberasurecode-frag_metadata_checksum.tar.gz
Fragment metadata checksumming supportfrag_metadata_checksum
Diffstat (limited to 'src/erasurecode_helpers.c')
-rw-r--r--src/erasurecode_helpers.c42
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
+
+/* ==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~== */
+