]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/ReplicatedPG: release op locks on on commit+applied 1454/head
authorSage Weil <sage@inktank.com>
Fri, 14 Mar 2014 05:02:01 +0000 (22:02 -0700)
committerSage Weil <sage@inktank.com>
Fri, 14 Mar 2014 05:02:01 +0000 (22:02 -0700)
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 <sage@inktank.com>
src/osd/ReplicatedPG.cc

index 46d32e910dac7976962c4675f87899fa5dce7188..33bea32a72e50d447ff87108a0cfd88ab86590ae 100644 (file)
@@ -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