From 701eb79422568c94fa07191acb3fe5eca2c6e6de Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Fri, 23 Oct 2020 22:45:05 +0300 Subject: [PATCH] Stabilize writes before deleting extra chunks to not stall peer journals --- osd_primary.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/osd_primary.cpp b/osd_primary.cpp index 434d92f6..9e0846f3 100644 --- a/osd_primary.cpp +++ b/osd_primary.cpp @@ -312,6 +312,13 @@ resume_5: pg_cancel_write_queue(pg, cur_op, op_data->oid, op_data->epipe > 0 ? -EPIPE : -EIO); return; } +resume_6: +resume_7: + if (!remember_unstable_write(cur_op, pg, pg.cur_loc_set, 6)) + { + // FIXME: Check for immediate_commit == IMMEDIATE_SMALL + return; + } if (op_data->fact_ver == 1) { // Object is created @@ -356,13 +363,6 @@ resume_9: } // Remove version override pg.ver_override.erase(op_data->oid); - // FIXME: Check for immediate_commit == IMMEDIATE_SMALL -resume_6: -resume_7: - if (!remember_unstable_write(cur_op, pg, pg.cur_loc_set, 6)) - { - return; - } object_id oid = op_data->oid; finish_op(cur_op, cur_op->req.rw.len); // Continue other write operations to the same object @@ -391,6 +391,7 @@ bool osd_t::remember_unstable_write(osd_op_t *cur_op, pg_t & pg, pg_osd_set_t & { goto resume_7; } + // FIXME: Check for immediate_commit == IMMEDIATE_SMALL if (immediate_commit == IMMEDIATE_ALL) { if (op_data->scheme != POOL_SCHEME_REPLICATED)