summaryrefslogtreecommitdiff
path: root/src/backends
diff options
context:
space:
mode:
authorKevin Greenan <kmgreen2@gmail.com>2014-08-21 12:15:32 -0700
committerKevin Greenan <kmgreen2@gmail.com>2014-08-21 13:05:59 -0700
commitc9af505400382a3117e2249acf308a08e97d48a9 (patch)
treeef1975921dbf311c600a535ed611c6a4abb1d464 /src/backends
parentc48eae68e3a9f0ca79e8a4bc1ff837f1d6db5b3a (diff)
downloadliberasurecode-c9af505400382a3117e2249acf308a08e97d48a9.tar.gz
Backend changes needed to honor "excluded fragments".
Diffstat (limited to 'src/backends')
-rw-r--r--src/backends/jerasure/jerasure_rs_cauchy.c5
-rw-r--r--src/backends/jerasure/jerasure_rs_vand.c5
-rw-r--r--src/backends/null/null.c4
-rw-r--r--src/backends/xor/flat_xor_hd.c7
4 files changed, 12 insertions, 9 deletions
diff --git a/src/backends/jerasure/jerasure_rs_cauchy.c b/src/backends/jerasure/jerasure_rs_cauchy.c
index b06ff6d..af37f76 100644
--- a/src/backends/jerasure/jerasure_rs_cauchy.c
+++ b/src/backends/jerasure/jerasure_rs_cauchy.c
@@ -160,11 +160,12 @@ out:
*
*/
static int jerasure_rs_cauchy_min_fragments(void *desc, int *missing_idxs,
- int *fragments_needed)
+ int *fragments_to_exclude, int *fragments_needed)
{
struct jerasure_rs_cauchy_descriptor *jerasure_desc =
(struct jerasure_rs_cauchy_descriptor*)desc;
- uint64_t missing_bm = convert_list_to_bitmap(missing_idxs);
+ uint64_t exclude_bm = convert_list_to_bitmap(fragments_to_exclude);
+ uint64_t missing_bm = convert_list_to_bitmap(missing_idxs) | exclude_bm;
int i;
int j = 0;
int ret = -1;
diff --git a/src/backends/jerasure/jerasure_rs_vand.c b/src/backends/jerasure/jerasure_rs_vand.c
index 970d205..05cbfda 100644
--- a/src/backends/jerasure/jerasure_rs_vand.c
+++ b/src/backends/jerasure/jerasure_rs_vand.c
@@ -139,12 +139,13 @@ out:
}
static int jerasure_rs_vand_min_fragments(void *desc, int *missing_idxs,
- int *fragments_needed)
+ int *fragments_to_exclude, int *fragments_needed)
{
struct jerasure_rs_vand_descriptor *jerasure_desc =
(struct jerasure_rs_vand_descriptor*)desc;
- uint64_t missing_bm = convert_list_to_bitmap(missing_idxs);
+ uint64_t exclude_bm = convert_list_to_bitmap(fragments_to_exclude);
+ uint64_t missing_bm = convert_list_to_bitmap(missing_idxs) | exclude_bm;
int i;
int j = 0;
int ret = -1;
diff --git a/src/backends/null/null.c b/src/backends/null/null.c
index b04cd99..23e8901 100644
--- a/src/backends/null/null.c
+++ b/src/backends/null/null.c
@@ -54,7 +54,7 @@ struct null_descriptor {
/* set of fragments needed to reconstruct at a minimum */
int (*null_code_fragments_needed)(void *code_desc, int *missing_idxs,
- int *fragments_needed);
+ int *fragments_to_exclude, int *fragments_needed);
/* fields needed to hold state */
int *matrix;
@@ -94,7 +94,7 @@ static int null_reconstruct(void *desc, char **data, char **parity,
}
static int null_min_fragments(void *desc, int *missing_idxs,
- int *fragments_needed)
+ int *fragments_to_exclude, int *fragments_needed)
{
struct null_descriptor *xdesc =
(struct null_descriptor *) desc;
diff --git a/src/backends/xor/flat_xor_hd.c b/src/backends/xor/flat_xor_hd.c
index 23e0281..9b87314 100644
--- a/src/backends/xor/flat_xor_hd.c
+++ b/src/backends/xor/flat_xor_hd.c
@@ -46,7 +46,7 @@ struct flat_xor_hd_descriptor {
int (*xor_hd_decode)(xor_code_t *code_desc, char **data, char **parity,
int *missing_idxs, int blocksize, int decode_parity);
int (*xor_hd_fragments_needed)(xor_code_t *code_desc, int *missing_idxs,
- int *fragments_needed);
+ int *fragments_to_exclude, int *fragments_needed);
};
#define DEFAULT_W 32
@@ -86,13 +86,14 @@ static int flat_xor_hd_reconstruct(void *desc,
}
static int flat_xor_hd_min_fragments(void *desc,
- int *missing_idxs, int *fragments_needed)
+ int *missing_idxs, int *fragments_to_exclude,
+ int *fragments_needed)
{
struct flat_xor_hd_descriptor *xdesc =
(struct flat_xor_hd_descriptor *) desc;
xor_code_t *xor_desc = (xor_code_t *) xdesc->xor_desc;
- xor_desc->fragments_needed(xor_desc, missing_idxs, fragments_needed);
+ xor_desc->fragments_needed(xor_desc, missing_idxs, fragments_to_exclude, fragments_needed);
return 0;
}