summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/erasurecode/erasurecode.h2
-rw-r--r--src/erasurecode.c10
2 files changed, 12 insertions, 0 deletions
diff --git a/include/erasurecode/erasurecode.h b/include/erasurecode/erasurecode.h
index f811555..b85a9df 100644
--- a/include/erasurecode/erasurecode.h
+++ b/include/erasurecode/erasurecode.h
@@ -328,6 +328,8 @@ int liberasurecode_get_aligned_data_size(int desc, uint64_t data_len);
*/
int liberasurecode_get_minimum_encode_size(int desc);
+int liberasurecode_get_fragment_size(int desc, int size);
+
/* ==~=*=~===~=*=~==~=*=~== liberasurecode Error codes =~=*=~==~=~=*=~==~== */
/* Error codes */
diff --git a/src/erasurecode.c b/src/erasurecode.c
index f4e9c5b..6d2cc10 100644
--- a/src/erasurecode.c
+++ b/src/erasurecode.c
@@ -1121,6 +1121,16 @@ int liberasurecode_get_minimum_encode_size(int desc)
return liberasurecode_get_aligned_data_size(desc, 1);
}
+int liberasurecode_get_fragment_size(int desc, int orig_data_size)
+{
+ ec_backend_t instance = liberasurecode_backend_instance_get_by_desc(desc);
+ // TODO: Create a common function to calculate fragment size also for preprocessing
+ int aligned_data_len = get_aligned_data_size(instance, orig_data_size);
+ int size = (aligned_data_len / instance->args.uargs.k) + instance->common.metadata_adder;
+
+ return size;
+}
+
/* ==~=*=~==~=*=~==~=*=~==~=*=~==~=* misc *=~==~=*=~==~=*=~==~=*=~==~=*=~== */
#if 0