forked from vitalif/vitastor
External jerasure's w into defines
In fact, w=8 looks better than w=32, so it may be changed in the future
parent
1526c5a213
commit
78fbaacf1f
12
osd_rmw.cpp
12
osd_rmw.cpp
|
@ -11,6 +11,8 @@
|
|||
#include "osd_rmw.h"
|
||||
#include "malloc_or_die.h"
|
||||
|
||||
#define OSD_JERASURE_W 32
|
||||
|
||||
static inline void extend_read(uint32_t start, uint32_t end, osd_rmw_stripe_t & stripe)
|
||||
{
|
||||
if (stripe.read_end == 0)
|
||||
|
@ -158,7 +160,7 @@ void use_jerasure(int pg_size, int pg_minsize, bool use)
|
|||
{
|
||||
return;
|
||||
}
|
||||
int *matrix = reed_sol_vandermonde_coding_matrix(pg_minsize, pg_size-pg_minsize, 32);
|
||||
int *matrix = reed_sol_vandermonde_coding_matrix(pg_minsize, pg_size-pg_minsize, OSD_JERASURE_W);
|
||||
matrices[key] = (reed_sol_matrix_t){
|
||||
.refs = 0,
|
||||
.data = matrix,
|
||||
|
@ -214,8 +216,8 @@ int* get_jerasure_decoding_matrix(osd_rmw_stripe_t *stripes, int pg_size, int pg
|
|||
int *decoding_matrix = dm_ids + pg_minsize;
|
||||
if (!dm_ids)
|
||||
throw std::bad_alloc();
|
||||
// we always use row_k_ones=1 and w=32
|
||||
if (jerasure_make_decoding_matrix(pg_minsize, pg_size-pg_minsize, 32, matrix->data, erased, decoding_matrix, dm_ids) < 0)
|
||||
// we always use row_k_ones=1 and w=8 (OSD_JERASURE_W)
|
||||
if (jerasure_make_decoding_matrix(pg_minsize, pg_size-pg_minsize, OSD_JERASURE_W, matrix->data, erased, decoding_matrix, dm_ids) < 0)
|
||||
{
|
||||
free(dm_ids);
|
||||
throw std::runtime_error("jerasure_make_decoding_matrix() failed");
|
||||
|
@ -252,7 +254,7 @@ void reconstruct_stripes_jerasure(osd_rmw_stripe_t *stripes, int pg_size, int pg
|
|||
}
|
||||
data_ptrs[role] = (char*)stripes[role].read_buf;
|
||||
jerasure_matrix_dotprod(
|
||||
pg_minsize, 32, decoding_matrix+(role*pg_minsize), dm_ids, role,
|
||||
pg_minsize, OSD_JERASURE_W, decoding_matrix+(role*pg_minsize), dm_ids, role,
|
||||
data_ptrs, data_ptrs+pg_minsize, stripes[role].read_end - stripes[role].read_start
|
||||
);
|
||||
}
|
||||
|
@ -694,7 +696,7 @@ void calc_rmw_parity_jerasure(osd_rmw_stripe_t *stripes, int pg_size, int pg_min
|
|||
}
|
||||
}
|
||||
jerasure_matrix_encode(
|
||||
pg_minsize, pg_size-pg_minsize, 32, matrix->data,
|
||||
pg_minsize, pg_size-pg_minsize, OSD_JERASURE_W, matrix->data,
|
||||
(char**)data_ptrs, (char**)data_ptrs+pg_minsize, next_end-pos
|
||||
);
|
||||
pos = next_end;
|
||||
|
|
Loading…
Reference in New Issue