From 393fe75900e2b41471da9b8509f6f44aba95ebfe Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Sat, 23 May 2020 14:48:54 +0300 Subject: [PATCH] Fix creepy (osd_op_t*)(long) casts --- osd.h | 2 +- osd_peering_pg.cpp | 7 +++++++ osd_primary.cpp | 2 +- osd_primary_subops.cpp | 10 +++++----- 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/osd.h b/osd.h index 17c8be1d..09a3e905 100644 --- a/osd.h +++ b/osd.h @@ -108,7 +108,7 @@ struct osd_primary_op_data_t; struct osd_op_t { timespec tv_begin; - int op_type = OSD_OP_IN; + uint64_t op_type = OSD_OP_IN; int peer_fd; osd_any_op_t req; osd_any_reply_t reply; diff --git a/osd_peering_pg.cpp b/osd_peering_pg.cpp index 02ac2499..e67be66d 100644 --- a/osd_peering_pg.cpp +++ b/osd_peering_pg.cpp @@ -231,6 +231,13 @@ void pg_obj_state_check_t::finish_object() printf("Present on: osd %lu, role %ld%s\n", list[i].osd_num, (list[i].oid.stripe & STRIPE_MASK), list[i].is_stable ? " (stable)" : ""); } } + if (log_level > 2) + { + for (int i = obj_start; i < obj_end; i++) + { + printf("v%lu present on: osd %lu, role %ld%s\n", list[i].version, list[i].osd_num, (list[i].oid.stripe & STRIPE_MASK), list[i].is_stable ? " (stable)" : ""); + } + } state = OBJ_DEGRADED; pg->state = pg->state | PG_HAS_DEGRADED; } diff --git a/osd_primary.cpp b/osd_primary.cpp index fc14850f..62ba2177 100644 --- a/osd_primary.cpp +++ b/osd_primary.cpp @@ -211,7 +211,7 @@ resume_1: cur_op->rmw_buf = calc_rmw(cur_op->buf, op_data->stripes, op_data->prev_set, pg.pg_size, pg.pg_minsize, pg.pg_cursize, pg.cur_set.data(), bs_block_size); // Read required blocks - submit_primary_subops(SUBMIT_RMW_READ, pg.pg_size, pg.cur_set.data(), cur_op); + submit_primary_subops(SUBMIT_RMW_READ, pg.pg_size, op_data->prev_set, cur_op); resume_2: op_data->st = 2; return; diff --git a/osd_primary_subops.cpp b/osd_primary_subops.cpp index 7af085c8..8bdcdce9 100644 --- a/osd_primary_subops.cpp +++ b/osd_primary_subops.cpp @@ -111,7 +111,7 @@ void osd_t::submit_primary_subops(int submit_type, int pg_size, const uint64_t* if (role_osd_num == this->osd_num) { clock_gettime(CLOCK_REALTIME, &subops[i].tv_begin); - subops[i].op_type = (long)cur_op; + subops[i].op_type = (uint64_t)cur_op; subops[i].bs_op = new blockstore_op_t({ .opcode = (uint64_t)(w ? BS_OP_WRITE : BS_OP_READ), .callback = [subop = &subops[i], this](blockstore_op_t *bs_subop) @@ -190,7 +190,7 @@ static uint64_t bs_op_to_osd_op[] = { void osd_t::handle_primary_bs_subop(osd_op_t *subop) { - osd_op_t *cur_op = (osd_op_t*)(long)subop->op_type; + osd_op_t *cur_op = (osd_op_t*)subop->op_type; blockstore_op_t *bs_op = subop->bs_op; int expected = bs_op->opcode == BS_OP_READ || bs_op->opcode == BS_OP_WRITE ? bs_op->len : 0; if (bs_op->retval != expected && bs_op->opcode != BS_OP_READ) @@ -307,7 +307,7 @@ void osd_t::submit_primary_del_subops(osd_op_t *cur_op, uint64_t *cur_set, pg_os if (chunk.osd_num == this->osd_num) { clock_gettime(CLOCK_REALTIME, &subops[i].tv_begin); - subops[i].op_type = (long)cur_op; + subops[i].op_type = (uint64_t)cur_op; subops[i].bs_op = new blockstore_op_t({ .opcode = BS_OP_DELETE, .callback = [subop = &subops[i], this](blockstore_op_t *bs_subop) @@ -372,7 +372,7 @@ void osd_t::submit_primary_sync_subops(osd_op_t *cur_op) if (sync_osd == this->osd_num) { clock_gettime(CLOCK_REALTIME, &subops[i].tv_begin); - subops[i].op_type = (long)cur_op; + subops[i].op_type = (uint64_t)cur_op; subops[i].bs_op = new blockstore_op_t({ .opcode = BS_OP_SYNC, .callback = [subop = &subops[i], this](blockstore_op_t *bs_subop) @@ -423,7 +423,7 @@ void osd_t::submit_primary_stab_subops(osd_op_t *cur_op) if (stab_osd.osd_num == this->osd_num) { clock_gettime(CLOCK_REALTIME, &subops[i].tv_begin); - subops[i].op_type = (long)cur_op; + subops[i].op_type = (uint64_t)cur_op; subops[i].bs_op = new blockstore_op_t({ .opcode = BS_OP_STABLE, .callback = [subop = &subops[i], this](blockstore_op_t *bs_subop)