]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG: split out op_applied_replica
authorSamuel Just <sam.just@inktank.com>
Sat, 12 Oct 2013 01:00:53 +0000 (18:00 -0700)
committerSamuel Just <sam.just@inktank.com>
Wed, 22 Jan 2014 22:39:15 +0000 (14:39 -0800)
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/PGBackend.h
src/osd/ReplicatedPG.cc
src/osd/ReplicatedPG.h

index 5ccb5b7dca93b0fd198276088eceaa87f9eee08f..cb070be7c4dca5b57a804026b02f79afd2f1605c 100644 (file)
        const hobject_t &hoid,
        map<string, bufferptr> &attrs) = 0;
 
+     virtual void op_applied_replica(
+       const eversion_t &applied_version) = 0;
+
      virtual ~Listener() {}
    };
    Listener *parent;
index bb988d81ec87927af5aeb51a524d00d525f4389c..8c47321185ec76f72bf89902e91b812df8f60076 100644 (file)
@@ -6706,6 +6706,23 @@ void ReplicatedPG::sub_op_modify(OpRequestRef op)
   // op is cleaned up by oncommit/onapply when both are executed
 }
 
+void ReplicatedPG::op_applied_replica(
+  const eversion_t &applied_version)
+{
+  dout(10) << "op_applied_replica on version " << applied_version << dendl;
+  if (applied_version != eversion_t()) {
+    assert(info.last_update >= applied_version);
+    assert(last_update_applied < applied_version);
+    last_update_applied = applied_version;
+  }
+  if (scrubber.active_rep_scrub) {
+    if (last_update_applied == scrubber.active_rep_scrub->scrub_to) {
+      osd->rep_scrub_wq.queue(scrubber.active_rep_scrub);
+      scrubber.active_rep_scrub = 0;
+    }
+  }
+}
+
 void ReplicatedPG::sub_op_modify_applied(RepModify *rm)
 {
   lock();
@@ -6724,17 +6741,7 @@ void ReplicatedPG::sub_op_modify_applied(RepModify *rm)
       osd->send_message_osd_cluster(rm->ackerosd, ack, get_osdmap()->get_epoch());
     }
     
-    if (m->version != eversion_t()) {
-      assert(info.last_update >= m->version);
-      assert(last_update_applied < m->version);
-      last_update_applied = m->version;
-    }
-    if (scrubber.active_rep_scrub) {
-      if (last_update_applied == scrubber.active_rep_scrub->scrub_to) {
-       osd->rep_scrub_wq.queue(scrubber.active_rep_scrub);
-       scrubber.active_rep_scrub = 0;
-      }
-    }
+    op_applied_replica(m->version);
   } else {
     dout(10) << "sub_op_modify_applied on " << rm << " op " << *rm->op->get_req()
             << " from epoch " << rm->epoch_started << " < last_peering_reset "
index c921029aafc44061ec4d018dedbd55bf4a2b699f..47b411acac35458154c9c5ef31847ddf34bb5f46 100644 (file)
@@ -323,6 +323,9 @@ public:
     return get_object_context(hoid, true, &attrs);
   }
 
+  void op_applied_replica(
+    const eversion_t &applied_version);
+
   /*
    * Capture all object state associated with an in-progress read or write.
    */