diff options
-rw-r--r-- | include/erasurecode/erasurecode.h | 2 | ||||
-rw-r--r-- | src/erasurecode.c | 10 |
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 |