Fix ISA-L version EC recovery with first missing data chunk not being read
Test / buildenv (push) Successful in 10s Details
Test / build (push) Successful in 3m8s Details
Test / test_cas (push) Successful in 8s Details
Test / make_test (push) Successful in 33s Details
Test / test_change_pg_size (push) Successful in 7s Details
Test / test_create_nomaxid (push) Successful in 6s Details
Test / test_change_pg_count_ec (push) Successful in 38s Details
Test / test_change_pg_count (push) Successful in 41s Details
Test / test_etcd_fail (push) Successful in 58s Details
Test / test_interrupted_rebalance_imm (push) Successful in 1m28s Details
Test / test_add_osd (push) Successful in 3m9s Details
Test / test_failure_domain (push) Successful in 11s Details
Test / test_interrupted_rebalance_ec (push) Successful in 2m6s Details
Test / test_interrupted_rebalance_ec_imm (push) Successful in 1m30s Details
Test / test_interrupted_rebalance (push) Successful in 3m9s Details
Test / test_minsize_1 (push) Successful in 13s Details
Test / test_snapshot (push) Successful in 44s Details
Test / test_snapshot_ec (push) Successful in 28s Details
Test / test_move_reappear (push) Successful in 19s Details
Test / test_rm (push) Successful in 16s Details
Test / test_snapshot_down (push) Successful in 30s Details
Test / test_snapshot_down_ec (push) Successful in 31s Details
Test / test_splitbrain (push) Successful in 24s Details
Test / test_snapshot_chain (push) Successful in 2m20s Details
Test / test_snapshot_chain_ec (push) Successful in 3m1s Details
Test / test_rebalance_verify_imm (push) Successful in 2m49s Details
Test / test_rebalance_verify (push) Successful in 3m37s Details
Test / test_write (push) Successful in 42s Details
Test / test_write_no_same (push) Successful in 14s Details
Test / test_write_xor (push) Successful in 54s Details
Test / test_rebalance_verify_ec (push) Successful in 4m55s Details
Test / test_rebalance_verify_ec_imm (push) Successful in 4m13s Details
Test / test_heal_pg_size_2 (push) Successful in 4m4s Details
Test / test_heal_ec (push) Successful in 5m2s Details
Test / test_heal_csum_32k_dmj (push) Failing after 5m54s Details
Test / test_heal_csum_32k_dj (push) Successful in 6m6s Details
Test / test_heal_csum_32k (push) Successful in 6m59s Details
Test / test_scrub (push) Successful in 1m16s Details
Test / test_heal_csum_4k_dmj (push) Successful in 6m56s Details
Test / test_scrub_xor (push) Successful in 51s Details
Test / test_scrub_zero_osd_2 (push) Successful in 1m1s Details
Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 1m25s Details
Test / test_heal_csum_4k (push) Successful in 6m9s Details
Test / test_heal_csum_4k_dj (push) Successful in 6m33s Details
Test / test_scrub_pg_size_3 (push) Successful in 1m37s Details
Test / test_scrub_ec (push) Successful in 26s Details

(Yes, all EC n + k with k >= 2 users should upgrade as soon as possible)
zerocopy-tcp-send
Vitaliy Filippov 2023-11-04 01:20:37 +03:00
parent becf14a705
commit 30dff8893f
1 changed files with 4 additions and 3 deletions

View File

@ -239,8 +239,9 @@ static void* get_jerasure_decoding_matrix(osd_rmw_stripe_t *stripes, int pg_size
{
int edd = 0;
int erased[pg_size];
// we should distinguish stripes which are not at all and missing stripes
for (int i = 0; i < pg_size; i++)
erased[i] = (stripes[i].read_end == 0 || stripes[i].missing ? 1 : 0);
erased[i] = (stripes[i].read_end == 0 ? 2 : (stripes[i].missing ? 1 : 0));
for (int i = 0; i < pg_minsize; i++)
if (stripes[i].read_end != 0 && stripes[i].missing)
edd++;
@ -253,7 +254,7 @@ static void* get_jerasure_decoding_matrix(osd_rmw_stripe_t *stripes, int pg_size
#ifdef WITH_ISAL
int smrow = 0;
uint8_t *submatrix = (uint8_t*)malloc_or_die(pg_minsize*pg_minsize*2);
for (int i = 0; i < pg_size; i++)
for (int i = 0; i < pg_size && smrow < pg_minsize; i++)
{
if (!erased[i])
{
@ -279,7 +280,7 @@ static void* get_jerasure_decoding_matrix(osd_rmw_stripe_t *stripes, int pg_size
smrow = 0;
for (int i = 0; i < pg_minsize; i++)
{
if (erased[i])
if (erased[i] == 1)
{
memcpy(submatrix + pg_minsize*smrow, submatrix + (pg_minsize+i)*pg_minsize, pg_minsize);
smrow++;