Oops, 1.3.0 needs a hotfix
Test / buildenv (push) Successful in 11s Details
Test / build (push) Successful in 2m39s Details
Test / test_cas (push) Successful in 9s Details
Test / make_test (push) Successful in 33s Details
Test / test_change_pg_size (push) Successful in 9s Details
Test / test_create_nomaxid (push) Successful in 7s Details
Test / test_change_pg_count (push) Successful in 46s Details
Test / test_change_pg_count_ec (push) Successful in 41s Details
Test / test_etcd_fail (push) Successful in 1m29s Details
Test / test_interrupted_rebalance_imm (push) Successful in 1m27s Details
Test / test_add_osd (push) Successful in 3m5s Details
Test / test_failure_domain (push) Successful in 18s Details
Test / test_interrupted_rebalance (push) Successful in 2m44s Details
Test / test_interrupted_rebalance_ec_imm (push) Successful in 1m19s Details
Test / test_snapshot (push) Successful in 26s Details
Test / test_minsize_1 (push) Successful in 12s Details
Test / test_snapshot_ec (push) Successful in 30s Details
Test / test_move_reappear (push) Successful in 19s Details
Test / test_interrupted_rebalance_ec (push) Successful in 1m53s Details
Test / test_rm (push) Successful in 18s 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 27s Details
Test / test_snapshot_chain (push) Successful in 2m13s Details
Test / test_snapshot_chain_ec (push) Successful in 2m56s Details
Test / test_rebalance_verify_imm (push) Successful in 2m51s Details
Test / test_rebalance_verify (push) Successful in 3m38s Details
Test / test_write (push) Successful in 45s Details
Test / test_write_no_same (push) Successful in 13s Details
Test / test_rebalance_verify_ec (push) Successful in 4m5s Details
Test / test_rebalance_verify_ec_imm (push) Successful in 3m22s Details
Test / test_heal_pg_size_2 (push) Successful in 3m51s Details
Test / test_heal_csum_32k_dmj (push) Successful in 4m39s Details
Test / test_heal_ec (push) Successful in 6m39s Details
Test / test_heal_csum_32k_dj (push) Successful in 5m55s Details
Test / test_heal_csum_32k (push) Successful in 6m5s Details
Test / test_scrub (push) Successful in 1m18s Details
Test / test_scrub_zero_osd_2 (push) Successful in 1m19s Details
Test / test_heal_csum_4k_dmj (push) Successful in 6m25s Details
Test / test_scrub_xor (push) Successful in 50s Details
Test / test_scrub_pg_size_3 (push) Successful in 1m46s Details
Test / test_heal_csum_4k_dj (push) Successful in 6m17s Details
Test / test_heal_csum_4k (push) Successful in 5m51s Details
Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 1m0s Details
Test / test_scrub_ec (push) Successful in 21s Details
Test / test_write_xor (push) Successful in 33s Details

kv-update
Vitaliy Filippov 2023-12-04 10:08:38 +03:00
parent 7972502eaf
commit a5e3dfbc5a
2 changed files with 20 additions and 16 deletions

View File

@ -144,8 +144,10 @@ journal_entry* prefill_single_journal_entry(journal_t & journal, uint16_t type,
journal.sector_info[journal.cur_sector].written = false;
journal.sector_info[journal.cur_sector].offset = journal.next_free;
journal.in_sector_pos = 0;
journal.next_free = (journal.next_free+journal.block_size) < journal.len ? journal.next_free + journal.block_size : journal.block_size;
assert(journal.next_free != journal.used_start);
auto next_next_free = (journal.next_free+journal.block_size) < journal.len ? journal.next_free + journal.block_size : journal.block_size;
// double check that next_free doesn't cross used_start from the left
assert(journal.next_free >= journal.used_start || next_next_free < journal.used_start);
journal.next_free = next_next_free;
memset(journal.inmemory
? (uint8_t*)journal.buffer + journal.sector_info[journal.cur_sector].offset
: (uint8_t*)journal.sector_buf + journal.block_size*journal.cur_sector, 0, journal.block_size);

View File

@ -386,7 +386,7 @@ int blockstore_impl_t::dequeue_write(blockstore_op_t *op)
sqe, dsk.data_fd, PRIV(op)->iov_zerofill, vcnt, dsk.data_offset + (loc << dsk.block_order) + op->offset - stripe_offset
);
PRIV(op)->pending_ops = 1;
if (immediate_commit != IMMEDIATE_ALL && !(dirty_it->second.state & BS_ST_INSTANT))
if (!(dirty_it->second.state & BS_ST_INSTANT))
{
unstable_unsynced++;
}
@ -412,7 +412,7 @@ int blockstore_impl_t::dequeue_write(blockstore_op_t *op)
sizeof(journal_entry_big_write) + dsk.clean_dyn_size, 0)
|| !space_check.check_available(op, 1,
sizeof(journal_entry_small_write) + dyn_size,
(unstable_writes.size()+unstable_unsynced)*journal.block_size))
op->len + (unstable_writes.size()+unstable_unsynced)*journal.block_size))
{
return 0;
}
@ -462,6 +462,8 @@ int blockstore_impl_t::dequeue_write(blockstore_op_t *op)
exit(1);
}
}
// double check that next_free doesn't cross used_start from the left
assert(journal.next_free >= journal.used_start || next_next_free < journal.used_start);
journal.next_free = next_next_free;
je->oid = op->oid;
je->version = op->version;
@ -499,13 +501,13 @@ int blockstore_impl_t::dequeue_write(blockstore_op_t *op)
}
dirty_it->second.location = journal.next_free;
dirty_it->second.state = (dirty_it->second.state & ~BS_ST_WORKFLOW_MASK) | BS_ST_SUBMITTED;
journal.next_free += op->len;
if (journal.next_free >= journal.len)
{
journal.next_free = dsk.journal_block_size;
assert(journal.next_free != journal.used_start);
}
if (immediate_commit == IMMEDIATE_NONE && !(dirty_it->second.state & BS_ST_INSTANT))
next_next_free = journal.next_free + op->len;
if (next_next_free >= journal.len)
next_next_free = dsk.journal_block_size;
// double check that next_free doesn't cross used_start from the left
assert(journal.next_free >= journal.used_start || next_next_free < journal.used_start);
journal.next_free = next_next_free;
if (!(dirty_it->second.state & BS_ST_INSTANT))
{
unstable_unsynced++;
}
@ -596,11 +598,11 @@ resume_4:
{
auto & unstab = unstable_writes[op->oid];
unstab = unstab < op->version ? op->version : unstab;
}
else if (!is_instant)
{
unstable_unsynced--;
assert(unstable_unsynced >= 0);
if (!is_instant)
{
unstable_unsynced--;
assert(unstable_unsynced >= 0);
}
}
dirty_it->second.state = (dirty_it->second.state & ~BS_ST_WORKFLOW_MASK)
| (imm ? BS_ST_SYNCED : BS_ST_WRITTEN);