Fix CAS retries during snapshot merge
Test / buildenv (push) Successful in 9s Details
Test / build (push) Successful in 2m40s Details
Test / make_test (push) Successful in 33s Details
Test / test_add_osd (push) Successful in 2m42s Details
Test / test_cas (push) Successful in 7s Details
Test / test_change_pg_count (push) Successful in 39s Details
Test / test_change_pg_count_ec (push) Successful in 36s Details
Test / test_change_pg_size (push) Successful in 7s Details
Test / test_create_nomaxid (push) Successful in 7s Details
Test / test_etcd_fail (push) Failing after 10m10s Details
Test / test_interrupted_rebalance (push) Successful in 2m46s Details
Test / test_interrupted_rebalance_imm (push) Successful in 1m35s Details
Test / test_interrupted_rebalance_ec (push) Successful in 1m45s Details
Test / test_interrupted_rebalance_ec_imm (push) Successful in 1m53s Details
Test / test_failure_domain (push) Successful in 7s Details
Test / test_snapshot (push) Successful in 24s Details
Test / test_snapshot_ec (push) Successful in 29s Details
Test / test_minsize_1 (push) Successful in 13s Details
Test / test_move_reappear (push) Failing after 49s Details
Test / test_rm (push) Successful in 12s Details
Test / test_snapshot_chain (push) Successful in 1m35s Details
Test / test_snapshot_chain_ec (push) Successful in 2m9s Details
Test / test_splitbrain (push) Successful in 14s Details
Test / test_rebalance_verify (push) Successful in 3m0s Details
Test / test_rebalance_verify_imm (push) Successful in 3m5s Details
Test / test_rebalance_verify_ec (push) Successful in 3m20s Details
Test / test_rebalance_verify_ec_imm (push) Successful in 5m24s Details
Test / test_write (push) Successful in 34s Details
Test / test_write_xor (push) Successful in 38s Details
Test / test_write_no_same (push) Successful in 14s Details
Test / test_heal_pg_size_2 (push) Successful in 4m0s Details
Test / test_heal_ec (push) Successful in 3m58s Details
Test / test_scrub (push) Successful in 58s Details
Test / test_scrub_zero_osd_2 (push) Successful in 38s Details
Test / test_scrub_xor (push) Successful in 30s Details
Test / test_scrub_pg_size_3 (push) Successful in 35s Details
Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 30s Details
Test / test_scrub_ec (push) Successful in 23s Details

qemu-send-loop
Vitaliy Filippov 2023-06-30 02:30:23 +03:00
parent a7b57386c0
commit 84ed3c6395
2 changed files with 6 additions and 2 deletions

View File

@ -533,7 +533,7 @@ struct snap_merger_t
if (use_cas && subop->retval == -EINTR) if (use_cas && subop->retval == -EINTR)
{ {
// CAS failure - reread and repeat optimistically // CAS failure - reread and repeat optimistically
rwo->start = subop->offset - rwo->offset; rwo->start = rwo->end = 0;
rwo_read(rwo); rwo_read(rwo);
delete subop; delete subop;
return; return;
@ -543,7 +543,7 @@ struct snap_merger_t
rwo->error_read = false; rwo->error_read = false;
} }
// Increment CAS version // Increment CAS version
rwo->op.version++; rwo->op.version = subop->version;
if (use_cas) if (use_cas)
next_write(rwo); next_write(rwo);
else else

View File

@ -1209,6 +1209,10 @@ void cluster_client_t::handle_op_part(cluster_op_part_t *part)
copy_part_bitmap(op, part); copy_part_bitmap(op, part);
op->version = op->parts.size() == 1 ? part->op.reply.rw.version : 0; op->version = op->parts.size() == 1 ? part->op.reply.rw.version : 0;
} }
else if (op->opcode == OSD_OP_WRITE)
{
op->version = op->parts.size() == 1 ? part->op.reply.rw.version : 0;
}
if (op->inflight_count == 0) if (op->inflight_count == 0)
{ {
if (op->opcode == OSD_OP_SYNC) if (op->opcode == OSD_OP_SYNC)