From 87c911cede50ffadcbb5cfd553df8d436a9975d1 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 13 Mar 2014 22:02:01 -0700 Subject: [PATCH] osd/ReplicatedPG: release op locks on on commit+applied We were releasing the op locks when we applied the update but (potentially) before we committed it. This means that another client can read object state that is not yet durable. Fixes: #7709 Signed-off-by: Sage Weil --- src/osd/ReplicatedPG.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 46d32e910dac..33bea32a72e5 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -6310,8 +6310,6 @@ void ReplicatedPG::eval_repop(RepGather *repop) // applied? if (repop->all_applied) { - release_op_ctx_locks(repop->ctx); - // send dup acks, in order if (waiting_for_ack.count(repop->v)) { assert(waiting_for_ack.begin()->first == repop->v); @@ -6358,6 +6356,8 @@ void ReplicatedPG::eval_repop(RepGather *repop) if (repop->all_applied && repop->all_committed) { repop->rep_done = true; + release_op_ctx_locks(repop->ctx); + calc_min_last_complete_ondisk(); // kick snap_trimmer if necessary -- 2.47.3