From b6b3ffb60bde3fe97877d8ce4047f0b0700c4a49 Mon Sep 17 00:00:00 2001 From: Tushar Gohad Date: Tue, 30 Sep 2014 06:35:03 -0700 Subject: [PATCH] Add the ability for backends to specify Signed-off-by: Tushar Gohad --- include/erasurecode/erasurecode_backend.h | 4 ++++ src/backends/isa-l/isa_l_vand.c | 1 + src/backends/jerasure/jerasure_rs_cauchy.c | 1 + src/backends/jerasure/jerasure_rs_vand.c | 1 + src/backends/null/null.c | 1 + src/backends/xor/flat_xor_hd.c | 1 + src/erasurecode_helpers.c | 3 +++ 7 files changed, 12 insertions(+) diff --git a/include/erasurecode/erasurecode_backend.h b/include/erasurecode/erasurecode_backend.h index a6e4440..956b2f1 100644 --- a/include/erasurecode/erasurecode_backend.h +++ b/include/erasurecode/erasurecode_backend.h @@ -106,6 +106,10 @@ struct ec_backend_common { char soversion[MAX_LEN]; /* EC backend shared library version */ struct ec_backend_op_stubs *ops; /* EC backend stubs */ + int metadata_adder; /* EC backend custom metadata adder - + * metadata_adder bytes are added to + * the fragment size when allocating + * data/parity fragment buffers */ }; /* EC backend definition */ diff --git a/src/backends/isa-l/isa_l_vand.c b/src/backends/isa-l/isa_l_vand.c index fe11696..e7a575e 100644 --- a/src/backends/isa-l/isa_l_vand.c +++ b/src/backends/isa-l/isa_l_vand.c @@ -588,4 +588,5 @@ struct ec_backend_common backend_isa_l_rs_vand = { #endif .soversion = "2.0", .ops = &isa_l_rs_vand_op_stubs, + .metadata_adder = 0, }; diff --git a/src/backends/jerasure/jerasure_rs_cauchy.c b/src/backends/jerasure/jerasure_rs_cauchy.c index 1c8b528..9d8466a 100644 --- a/src/backends/jerasure/jerasure_rs_cauchy.c +++ b/src/backends/jerasure/jerasure_rs_cauchy.c @@ -384,4 +384,5 @@ struct ec_backend_common backend_jerasure_rs_cauchy = { #endif .soversion = "2.0", .ops = &jerasure_rs_cauchy_op_stubs, + .metadata_adder = 0, }; diff --git a/src/backends/jerasure/jerasure_rs_vand.c b/src/backends/jerasure/jerasure_rs_vand.c index 5866cd5..a8a8257 100644 --- a/src/backends/jerasure/jerasure_rs_vand.c +++ b/src/backends/jerasure/jerasure_rs_vand.c @@ -325,4 +325,5 @@ struct ec_backend_common backend_jerasure_rs_vand = { #endif .soversion = "2.0", .ops = &jerasure_rs_vand_op_stubs, + .metadata_adder = 0, }; diff --git a/src/backends/null/null.c b/src/backends/null/null.c index f71312c..6ca5c98 100644 --- a/src/backends/null/null.c +++ b/src/backends/null/null.c @@ -223,5 +223,6 @@ struct ec_backend_common backend_null = { #endif .soversion = "1.0", .ops = &null_op_stubs, + .metadata_adder = 0, }; diff --git a/src/backends/xor/flat_xor_hd.c b/src/backends/xor/flat_xor_hd.c index 289f36e..0979b30 100644 --- a/src/backends/xor/flat_xor_hd.c +++ b/src/backends/xor/flat_xor_hd.c @@ -170,5 +170,6 @@ struct ec_backend_common backend_flat_xor_hd = { #endif .soversion = "1.0", .ops = &flat_xor_hd_op_stubs, + .metadata_adder = 0, }; diff --git a/src/erasurecode_helpers.c b/src/erasurecode_helpers.c index 6e4c882..e07e02a 100644 --- a/src/erasurecode_helpers.c +++ b/src/erasurecode_helpers.c @@ -175,6 +175,9 @@ int get_aligned_data_size(ec_backend_t instance, int data_len) int alignment_multiple; int aligned_size = 0; + /* Account for any custom metadata the backend wants to add in data_len */ + data_len += instance->common.metadata_adder; + /* * For Cauchy reed-solomon align to k*word_size*packet_size * For Vandermonde reed-solomon and flat-XOR, align to k*word_size