| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For get_segment_info function of PyECLib, liberasurecode should
support get_fragment_size function because if pyeclib and liberasurecode
have the calculation of fragment size each other, it might cause
the size mismatch (i.e. it'll be a bug) in the future development work.
This patch introduces liberasurecode_get_fragment_size function to return
the fragment_size calculated at liberasurecode accoring to specified
backend descriptor.
It really usefull to help caller knows how large size it have to expect
and all pyeclib has to do for retrieving fragment_size will be just calling
the liberasurecode_get_fragment_size function on get_segment_info.
|
|
|
|
|
|
|
|
| |
Small fixes as follows:
- Add is_compatible_with function into shss backend
- Remove encoded data check against to shss at liberasurecode_test.c
- Decrease metadata_adder size on shss backend to be correct fixed value
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch allows to get correct fragment size includes metadata_adder.
Current implementaion automatically allocates extra bytes for the metadata_adder
in alloc_buffer, and then, no information about the extra bytes will be returned
to the api caller side. It's too confusable because callers couldn't know how size they
assumes as the fragment size.
To be easy to find out the size infomation, this patch adds "frag_adder_size"
variable into fragment metadata and also some functions to get fragment size.
The definitions of these size infomation are here,
fragment_meta:
- size-> raw data size used to encode/fragment_to_string
- frag_adder_size-> metadata_adder of backend specification
And the definitions of functions are here,
- get_fragment_size:
-> return sizeof(fragument_header) + size + frag_adder_size
- get_fragment_buffer_size:
-> return size + frag_adder_size
- get_fragment_payload_size:
-> return size
By using these function above, users could get the size information
directly from fragments. It results in enabling to return fragment_len
to the caller side easily.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On the first consideration[1], metadata_adder is defined as a extra byte
size for "each" fragment. However, current implementation is an element
affects to data_len. (i.e. aligned_data_size for original segment data)
We should make metadata_adder to be a fixed value against to each fragment,
otherwise the extra bytes for the fragments will have flexible length depends
on "K". It will be quite complex for backend implementation to know "How large
bytes the raw data size is", "How large bytes the backend could use as extra
bytes for each fragment".
1: https://bitbucket.org/tsg-/liberasurecode/commits/032b57d9b1c7aadc547fccbacf88af786c9067e7?at=master
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch achieves a couple of things as follows:
- Undoing the liberasurecode_encode_cleanup specification to
expect "fragment" pointers as its arguments.
- Ensuring liberasurecode_encode to pass "fratment" pointers to
liberasurecode_encode_cleanup.
liberasurecode_encode_cleanup is used also in pyeclib so that
it is expected that the argument pointers (i.e. encoded_data and
encoded_parity) should be the collection of the heads of "fragment"
pointers.
However, when the backend encode fails, liberasurecode keeps "data"
pointers behind of fragment_header, and then, goes to "out:" statement
to cleanup its memories. It causes invalid pointer failure.
This patch adds a translation function from "data" pointers to "fragment"
pointers and ensure liberasurecode_encode to pass correct pointers to
libersurecode_encode_cleanup.
|
|
|
|
|
|
|
|
| |
When num_missing is over than the num of parities (i.e. > m),
get_fragment_partition should return -1 as an error code.
This patch fixes it and adds a test called "test_get_fragment_partition"
into liberasurecode_test.c.
|
| |
|
| |
|
|
|
|
| |
Signed-off-by: Tushar Gohad <tushar.gohad@intel.com>
|
|
|
|
| |
Signed-off-by: Tushar Gohad <tushar.gohad@intel.com>
|
|
|
|
| |
Signed-off-by: Tushar Gohad <tushar.gohad@intel.com>
|
|
|
|
| |
Signed-off-by: Tushar Gohad <tushar.gohad@intel.com>
|
|
|
|
| |
Signed-off-by: Tushar Gohad <tushar.gohad@intel.com>
|
|
|
|
| |
Signed-off-by: Tushar Gohad <tushar.gohad@intel.com>
|
|\ |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
| |
This introduces a new plug-able backend called "shss" made by
Nippon Telegraph and Telephone corporation (NTT).
Note that this produces a just plug-in to shss erasure coding binary
so that users have to install a shss binary (i.e. libshss.so) aside from
liberasurecode when using shss.
Please contact us if you are insterested in the NTT backend (welcome!):
Kota Tsuyuzaki <tsuyuzaki.kota@lab.ntt.co.jp>
Co-Author: Ryuta Kon <kon.ryuta@po.ntts.co.jp>
|
|
|
|
| |
we were seeing after the checksum enum changes.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
function. Previously, it was failing if the number of invalid
fragments was k or greater, which is incorrect.
We should only be able to decode if:
(num given fragments - num invalid fragments) >= k
This means fail if:
(num given fragments - num invalid fragments) < k
|
|
|
|
|
| |
This reverts commit dc4e6f07ce586327cbb19c1f6c31f2b3edc33def, reversing
changes made to 92c39d590c63fd1dced7b3934962f47428c3c03d.
|
|
|
|
| |
Signed-off-by: Tushar Gohad <tushar.gohad@intel.com>
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When failing at calling a backend encode (i.e. the backend return a minus value),
invalid pointer error will occur at liberasurecode_encode_cleanup() because it
will work to free the memory from data[i] behind the fragment header.
This patch fixes it to use free_fragment_buffer to free whole memory includes
the fragment header field.
TODO:
Add tests (or stub backend) to verify liberasurecode behaviors when a failure
returnd from the backend.
|
| |
| |
| |
| | |
Signed-off-by: Tushar Gohad <tushar.gohad@intel.com>
|
| |
| |
| |
| | |
Signed-off-by: Tushar Gohad <tushar.gohad@intel.com>
|
| |
| |
| |
| |
| | |
tests to a 'fragment verify' test, since it is using is_valid_fragment and
and validating fragment headers, not stripe-level.
|
| | |
|
| | |
|
| | |
|
|/ |
|
|\ |
|
| | |
|
| | |
|
| | |
|
|/
|
|
| |
with using cmake to build the project and cmake does not generate the config_liberasurecode.h file.
|
| |
|
| |
|
|
|
|
| |
freeing the schedule array
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| | |
Small fix to check the return code when malloc'ing temporary buffers.
|
| | |
|