From 04a1f18fa53a5a75c7bd6ebb30dc70950a32fb92 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Tue, 23 Mar 2021 00:59:56 +0300 Subject: [PATCH] Assign .req as a whole to always zero out the remaining part Also clear .reply before processing the operation --- src/osd.cpp | 2 ++ src/osd_primary_subops.cpp | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/osd.cpp b/src/osd.cpp index 025d9bfc..cdadfb72 100644 --- a/src/osd.cpp +++ b/src/osd.cpp @@ -191,6 +191,8 @@ void osd_t::exec_op(osd_op_t *cur_op) delete cur_op; return; } + // Clear the reply buffer + memset(cur_op->reply.buf, 0, OSD_PACKET_SIZE); inflight_ops++; if (cur_op->req.hdr.magic != SECONDARY_OSD_OP_MAGIC || cur_op->req.hdr.opcode < OSD_OP_MIN || cur_op->req.hdr.opcode > OSD_OP_MAX || diff --git a/src/osd_primary_subops.cpp b/src/osd_primary_subops.cpp index ed6b1a92..7f1c793e 100644 --- a/src/osd_primary_subops.cpp +++ b/src/osd_primary_subops.cpp @@ -427,7 +427,7 @@ void osd_t::submit_primary_del_batch(osd_op_t *cur_op, obj_ver_osd_t *chunks_to_ { subops[i].op_type = OSD_OP_OUT; subops[i].peer_fd = c_cli.osd_peer_fds.at(chunk.osd_num); - subops[i].req.sec_del = { + subops[i].req = (osd_any_op_t){ .sec_del = { .header = { .magic = SECONDARY_OSD_OP_MAGIC, .id = c_cli.next_subop_id++, @@ -435,7 +435,7 @@ void osd_t::submit_primary_del_batch(osd_op_t *cur_op, obj_ver_osd_t *chunks_to_ }, .oid = chunk.oid, .version = chunk.version, - }; + } }; subops[i].callback = [cur_op, this](osd_op_t *subop) { int fail_fd = subop->reply.hdr.retval != 0 ? subop->peer_fd : -1; @@ -480,13 +480,13 @@ int osd_t::submit_primary_sync_subops(osd_op_t *cur_op) { subops[i].op_type = OSD_OP_OUT; subops[i].peer_fd = peer_it->second; - subops[i].req.sec_sync = { + subops[i].req = (osd_any_op_t){ .sec_sync = { .header = { .magic = SECONDARY_OSD_OP_MAGIC, .id = c_cli.next_subop_id++, .opcode = OSD_OP_SEC_SYNC, }, - }; + } }; subops[i].callback = [cur_op, this](osd_op_t *subop) { int fail_fd = subop->reply.hdr.retval != 0 ? subop->peer_fd : -1; @@ -543,14 +543,14 @@ void osd_t::submit_primary_stab_subops(osd_op_t *cur_op) { subops[i].op_type = OSD_OP_OUT; subops[i].peer_fd = c_cli.osd_peer_fds.at(stab_osd.osd_num); - subops[i].req.sec_stab = { + subops[i].req = (osd_any_op_t){ .sec_stab = { .header = { .magic = SECONDARY_OSD_OP_MAGIC, .id = c_cli.next_subop_id++, .opcode = OSD_OP_SEC_STABILIZE, }, .len = (uint64_t)(stab_osd.len * sizeof(obj_ver_id)), - }; + } }; subops[i].iov.push_back(op_data->unstable_writes + stab_osd.start, stab_osd.len * sizeof(obj_ver_id)); subops[i].callback = [cur_op, this](osd_op_t *subop) {