Fix rare OSD hang on zeroing out bad entries on start
Test / buildenv (push) Successful in 8s
Details
Test / build (push) Successful in 3m2s
Details
Test / test_cas (push) Successful in 8s
Details
Test / make_test (push) Successful in 33s
Details
Test / test_change_pg_count (push) Successful in 32s
Details
Test / test_change_pg_size (push) Successful in 6s
Details
Test / test_change_pg_count_ec (push) Successful in 31s
Details
Test / test_create_nomaxid (push) Successful in 8s
Details
Test / test_etcd_fail (push) Successful in 56s
Details
Test / test_interrupted_rebalance_imm (push) Successful in 1m41s
Details
Test / test_add_osd (push) Successful in 3m7s
Details
Test / test_failure_domain (push) Successful in 8s
Details
Test / test_interrupted_rebalance_ec (push) Successful in 1m46s
Details
Test / test_interrupted_rebalance (push) Successful in 2m51s
Details
Test / test_snapshot (push) Successful in 21s
Details
Test / test_minsize_1 (push) Successful in 15s
Details
Test / test_interrupted_rebalance_ec_imm (push) Successful in 1m23s
Details
Test / test_snapshot_ec (push) Successful in 27s
Details
Test / test_move_reappear (push) Successful in 17s
Details
Test / test_rm (push) Successful in 13s
Details
Test / test_snapshot_down (push) Successful in 24s
Details
Test / test_snapshot_down_ec (push) Successful in 27s
Details
Test / test_splitbrain (push) Successful in 17s
Details
Test / test_snapshot_chain (push) Successful in 2m26s
Details
Test / test_snapshot_chain_ec (push) Successful in 2m55s
Details
Test / test_rebalance_verify_imm (push) Successful in 2m47s
Details
Test / test_switch_primary (push) Successful in 33s
Details
Test / test_write_no_same (push) Successful in 16s
Details
Test / test_write (push) Successful in 56s
Details
Test / test_rebalance_verify (push) Successful in 4m0s
Details
Test / test_write_xor (push) Successful in 1m50s
Details
Test / test_heal_pg_size_2 (push) Successful in 4m33s
Details
Test / test_heal_ec (push) Successful in 5m43s
Details
Test / test_heal_csum_32k_dmj (push) Successful in 5m22s
Details
Test / test_heal_csum_32k_dj (push) Successful in 6m19s
Details
Test / test_heal_csum_32k (push) Successful in 6m38s
Details
Test / test_heal_csum_4k_dmj (push) Successful in 6m22s
Details
Test / test_scrub (push) Successful in 1m26s
Details
Test / test_heal_csum_4k_dj (push) Successful in 6m32s
Details
Test / test_scrub_zero_osd_2 (push) Successful in 50s
Details
Test / test_scrub_xor (push) Successful in 48s
Details
Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 56s
Details
Test / test_scrub_pg_size_3 (push) Successful in 1m42s
Details
Test / test_scrub_ec (push) Successful in 56s
Details
Test / test_heal_csum_4k (push) Successful in 6m36s
Details
Test / test_nfs (push) Successful in 24s
Details
Test / test_rebalance_verify_ec_imm (push) Successful in 3m1s
Details
Test / test_rebalance_verify_ec (push) Successful in 3m42s
Details
Test / buildenv (push) Successful in 8s
Details
Test / build (push) Successful in 3m2s
Details
Test / test_cas (push) Successful in 8s
Details
Test / make_test (push) Successful in 33s
Details
Test / test_change_pg_count (push) Successful in 32s
Details
Test / test_change_pg_size (push) Successful in 6s
Details
Test / test_change_pg_count_ec (push) Successful in 31s
Details
Test / test_create_nomaxid (push) Successful in 8s
Details
Test / test_etcd_fail (push) Successful in 56s
Details
Test / test_interrupted_rebalance_imm (push) Successful in 1m41s
Details
Test / test_add_osd (push) Successful in 3m7s
Details
Test / test_failure_domain (push) Successful in 8s
Details
Test / test_interrupted_rebalance_ec (push) Successful in 1m46s
Details
Test / test_interrupted_rebalance (push) Successful in 2m51s
Details
Test / test_snapshot (push) Successful in 21s
Details
Test / test_minsize_1 (push) Successful in 15s
Details
Test / test_interrupted_rebalance_ec_imm (push) Successful in 1m23s
Details
Test / test_snapshot_ec (push) Successful in 27s
Details
Test / test_move_reappear (push) Successful in 17s
Details
Test / test_rm (push) Successful in 13s
Details
Test / test_snapshot_down (push) Successful in 24s
Details
Test / test_snapshot_down_ec (push) Successful in 27s
Details
Test / test_splitbrain (push) Successful in 17s
Details
Test / test_snapshot_chain (push) Successful in 2m26s
Details
Test / test_snapshot_chain_ec (push) Successful in 2m55s
Details
Test / test_rebalance_verify_imm (push) Successful in 2m47s
Details
Test / test_switch_primary (push) Successful in 33s
Details
Test / test_write_no_same (push) Successful in 16s
Details
Test / test_write (push) Successful in 56s
Details
Test / test_rebalance_verify (push) Successful in 4m0s
Details
Test / test_write_xor (push) Successful in 1m50s
Details
Test / test_heal_pg_size_2 (push) Successful in 4m33s
Details
Test / test_heal_ec (push) Successful in 5m43s
Details
Test / test_heal_csum_32k_dmj (push) Successful in 5m22s
Details
Test / test_heal_csum_32k_dj (push) Successful in 6m19s
Details
Test / test_heal_csum_32k (push) Successful in 6m38s
Details
Test / test_heal_csum_4k_dmj (push) Successful in 6m22s
Details
Test / test_scrub (push) Successful in 1m26s
Details
Test / test_heal_csum_4k_dj (push) Successful in 6m32s
Details
Test / test_scrub_zero_osd_2 (push) Successful in 50s
Details
Test / test_scrub_xor (push) Successful in 48s
Details
Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 56s
Details
Test / test_scrub_pg_size_3 (push) Successful in 1m42s
Details
Test / test_scrub_ec (push) Successful in 56s
Details
Test / test_heal_csum_4k (push) Successful in 6m36s
Details
Test / test_nfs (push) Successful in 24s
Details
Test / test_rebalance_verify_ec_imm (push) Successful in 3m1s
Details
Test / test_rebalance_verify_ec (push) Successful in 3m42s
Details
parent
de57561163
commit
5b25f512d8
|
@ -32,7 +32,7 @@ void blockstore_init_meta::handle_event(ring_data_t *data, int buf_num)
|
|||
if (data->res < 0)
|
||||
{
|
||||
throw std::runtime_error(
|
||||
std::string("read metadata failed at offset ") + std::to_string(bufs[buf_num].offset) +
|
||||
std::string("read metadata failed at offset ") + std::to_string(buf_num >= 0 ? bufs[buf_num].offset : last_read_offset) +
|
||||
std::string(": ") + strerror(-data->res)
|
||||
);
|
||||
}
|
||||
|
@ -63,6 +63,7 @@ int blockstore_init_meta::loop()
|
|||
throw std::runtime_error("Failed to allocate metadata read buffer");
|
||||
// Read superblock
|
||||
GET_SQE();
|
||||
last_read_offset = 0;
|
||||
data->iov = { metadata_buffer, (size_t)bs->dsk.meta_block_size };
|
||||
data->callback = [this](ring_data_t *data) { handle_event(data, -1); };
|
||||
my_uring_prep_readv(sqe, bs->dsk.meta_fd, &data->iov, 1, bs->dsk.meta_offset);
|
||||
|
@ -100,6 +101,7 @@ resume_1:
|
|||
{
|
||||
printf("Initializing metadata area\n");
|
||||
GET_SQE();
|
||||
last_read_offset = 0;
|
||||
data->iov = (struct iovec){ metadata_buffer, (size_t)bs->dsk.meta_block_size };
|
||||
data->callback = [this](ring_data_t *data) { handle_event(data, -1); };
|
||||
my_uring_prep_writev(sqe, bs->dsk.meta_fd, &data->iov, 1, bs->dsk.meta_offset);
|
||||
|
@ -259,9 +261,11 @@ resume_2:
|
|||
next_offset = entries_to_zero[i]/entries_per_block;
|
||||
for (j = i; j < entries_to_zero.size() && entries_to_zero[j]/entries_per_block == next_offset; j++) {}
|
||||
GET_SQE();
|
||||
last_read_offset = (1+next_offset)*bs->dsk.meta_block_size;
|
||||
data->iov = { metadata_buffer, (size_t)bs->dsk.meta_block_size };
|
||||
data->callback = [this](ring_data_t *data) { handle_event(data, -1); };
|
||||
my_uring_prep_readv(sqe, bs->dsk.meta_fd, &data->iov, 1, bs->dsk.meta_offset + (1+next_offset)*bs->dsk.meta_block_size);
|
||||
bs->ringloop->submit();
|
||||
submitted++;
|
||||
resume_5:
|
||||
if (submitted > 0)
|
||||
|
@ -278,6 +282,7 @@ resume_5:
|
|||
data->iov = { metadata_buffer, (size_t)bs->dsk.meta_block_size };
|
||||
data->callback = [this](ring_data_t *data) { handle_event(data, -1); };
|
||||
my_uring_prep_writev(sqe, bs->dsk.meta_fd, &data->iov, 1, bs->dsk.meta_offset + (1+next_offset)*bs->dsk.meta_block_size);
|
||||
bs->ringloop->submit();
|
||||
submitted++;
|
||||
resume_6:
|
||||
if (submitted > 0)
|
||||
|
@ -299,6 +304,7 @@ resume_6:
|
|||
{
|
||||
GET_SQE();
|
||||
my_uring_prep_fsync(sqe, bs->dsk.meta_fd, IORING_FSYNC_DATASYNC);
|
||||
last_read_offset = 0;
|
||||
data->iov = { 0 };
|
||||
data->callback = [this](ring_data_t *data) { handle_event(data, -1); };
|
||||
submitted++;
|
||||
|
|
|
@ -23,6 +23,7 @@ class blockstore_init_meta
|
|||
struct ring_data_t *data;
|
||||
uint64_t md_offset = 0;
|
||||
uint64_t next_offset = 0;
|
||||
uint64_t last_read_offset = 0;
|
||||
uint64_t entries_loaded = 0;
|
||||
unsigned entries_per_block = 0;
|
||||
int i = 0, j = 0;
|
||||
|
|
Loading…
Reference in New Issue