summaryrefslogtreecommitdiff
path: root/include
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 /include
parentfd88e703372eed2ecda8f10fe539ee28b2794e0f (diff)
downloadliberasurecode-a6a8d2018d50068f1177ba9f826518b003dc5917.tar.gz
Fragment metadata checksumming supportfrag_metadata_checksum
Diffstat (limited to 'include')
-rw-r--r--include/erasurecode/erasurecode.h25
-rw-r--r--include/erasurecode/erasurecode_helpers_ext.h5
-rw-r--r--include/erasurecode/erasurecode_version.h4
3 files changed, 19 insertions, 15 deletions
diff --git a/include/erasurecode/erasurecode.h b/include/erasurecode/erasurecode.h
index f8621a4..5f5e054 100644
--- a/include/erasurecode/erasurecode.h
+++ b/include/erasurecode/erasurecode.h
@@ -256,15 +256,15 @@ int liberasurecode_fragments_needed(int desc,
typedef struct __attribute__((__packed__))
fragment_metadata
{
- uint32_t idx; /* 4 */
- uint32_t size; /* 4 */
- uint32_t frag_backend_metadata_size; /* 4 */
- uint64_t orig_data_size; /* 8 */
- uint8_t chksum_type; /* 1 */
+ uint32_t idx; /* 4 */
+ uint32_t size; /* 4 */
+ uint32_t frag_backend_metadata_size; /* 4 */
+ uint64_t orig_data_size; /* 8 */
+ uint8_t chksum_type; /* 1 */
uint32_t chksum[LIBERASURECODE_MAX_CHECKSUM_LEN]; /* 32 */
- uint8_t chksum_mismatch; /* 1 */
- uint8_t backend_id; /* 1 */
- uint32_t backend_version; /* 4 */
+ uint8_t chksum_mismatch; /* 1 */
+ uint8_t backend_id; /* 1 */
+ uint32_t backend_version; /* 4 */
} fragment_metadata_t;
/**
@@ -321,12 +321,13 @@ int liberasurecode_verify_stripe_metadata(int desc,
typedef struct __attribute__((__packed__)) fragment_header_s
{
- fragment_metadata_t meta; /* 59 bytes */
- uint32_t magic; /* 4 bytes */
- uint32_t libec_version; /* 4 bytes */
+ fragment_metadata_t meta; /* 59 bytes */
+ uint32_t magic; /* 4 bytes */
+ uint32_t libec_version; /* 4 bytes */
+ uint32_t metadata_chksum; /* 4 bytes */
// We must be aligned to 16-byte boundaries
// So, size this array accordingly
- uint8_t aligned_padding[13];
+ uint8_t aligned_padding[9];
} fragment_header_t;
#define FRAGSIZE_2_BLOCKSIZE(fragment_size) \
diff --git a/include/erasurecode/erasurecode_helpers_ext.h b/include/erasurecode/erasurecode_helpers_ext.h
index 278996b..740d7db 100644
--- a/include/erasurecode/erasurecode_helpers_ext.h
+++ b/include/erasurecode/erasurecode_helpers_ext.h
@@ -65,13 +65,16 @@ int get_fragment_buffer_size(char *buf);
int set_orig_data_size(char *buf, int orig_data_size);
int get_orig_data_size(char *buf);
int set_checksum(ec_checksum_type_t ct, char *buf, int blocksize);
-int get_checksum(char *buf); //TODO implement this
+int get_checksum(char *buf);
int set_libec_version(char *fragment);
int get_libec_version(char *fragment, uint32_t *ver);
int set_backend_id(char *buf, ec_backend_id_t id);
int get_backend_id(char *buf, ec_backend_id_t *id);
int set_backend_version(char *buf, uint32_t version);
int get_backend_version(char *buf, uint32_t *version);
+int set_metadata_chksum(char *buf);
+uint32_t *get_metadata_chksum(char *buf);
+int is_invalid_fragment_header(fragment_header_t *header);
/* ==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~==~=*=~== */
diff --git a/include/erasurecode/erasurecode_version.h b/include/erasurecode/erasurecode_version.h
index e02c8bc..bc19d01 100644
--- a/include/erasurecode/erasurecode_version.h
+++ b/include/erasurecode/erasurecode_version.h
@@ -26,8 +26,8 @@
#define _ERASURECODE_VERSION_H_
#define _MAJOR 1
-#define _MINOR 1
-#define _REV 2
+#define _MINOR 2
+#define _REV 0
#define _VERSION(x, y, z) ((x << 16) | (y << 8) | (z))
#define LIBERASURECODE_VERSION _VERSION(_MAJOR, _MINOR, _REV)