]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: separate cleanup from PGBackend::on_change()
authorSage Weil <sage@inktank.com>
Tue, 8 Jul 2014 23:10:58 +0000 (16:10 -0700)
committerSage Weil <sage@inktank.com>
Tue, 8 Jul 2014 23:12:25 +0000 (16:12 -0700)
The generic portion of on_change() cleaned up temporary on-disk objects
and requires a Transaction.  The rest is clearing out in-memory state and
does not.  Separate the two.

Signed-off-by: Sage Weil <sage@inktank.com>
src/osd/ECBackend.cc
src/osd/ECBackend.h
src/osd/PGBackend.cc
src/osd/PGBackend.h
src/osd/ReplicatedBackend.cc
src/osd/ReplicatedBackend.h
src/osd/ReplicatedPG.cc

index 0051548418a768a35cb37fa7e62ad3f2e96227dc..e2cdc0e5a5374c4ffdd2d848bc2f48e797e793b7 100644 (file)
@@ -1120,8 +1120,9 @@ void ECBackend::check_recovery_sources(const OSDMapRef osdmap)
   }
 }
 
-void ECBackend::_on_change(ObjectStore::Transaction *t)
+void ECBackend::on_change()
 {
+  dout(10) << __func__ << dendl;
   writing.clear();
   tid_to_op_map.clear();
   for (map<ceph_tid_t, ReadOp>::iterator i = tid_to_read_map.begin();
index 2061ea87912b05fa98f28df3dc90267842894998..c13f30f8061fa0a57ec6c8339587f16fb589bd45 100644 (file)
@@ -82,7 +82,7 @@ public:
   /// @see ReadOp below
   void check_recovery_sources(const OSDMapRef osdmap);
 
-  void _on_change(ObjectStore::Transaction *t);
+  void on_change();
   void clear_state();
 
   void on_flushed();
index 402cc2b4a5a92a0623761574efbc6cdefbe48e9c..d90a2c2862a9e797619f1b1c1dc15c9463c48ea6 100644 (file)
@@ -80,7 +80,7 @@ void PGBackend::rollback(
 }
 
 
-void PGBackend::on_change(ObjectStore::Transaction *t)
+void PGBackend::on_change_cleanup(ObjectStore::Transaction *t)
 {
   dout(10) << __func__ << dendl;
   // clear temp
@@ -94,7 +94,6 @@ void PGBackend::on_change(ObjectStore::Transaction *t)
       ghobject_t(*i, ghobject_t::NO_GEN, get_parent()->whoami_shard().shard));
   }
   temp_contents.clear();
-  _on_change(t);
 }
 
 coll_t PGBackend::get_temp_coll(ObjectStore::Transaction *t)
index dd372612bebbb3e0bb211798aca642698cec1ee0..8c3d9cd5bcab6db73325d8b005af12f28915c18c 100644 (file)
 
    virtual void check_recovery_sources(const OSDMapRef osdmap) = 0;
 
+
+   /**
+    * clean up any temporary on-disk state due to a pg interval change
+    */
+   void on_change_cleanup(ObjectStore::Transaction *t);
    /**
     * implementation should clear itself, contexts blessed prior to on_change
     * won't be called after on_change()
     */
-   void on_change(ObjectStore::Transaction *t);
-   virtual void _on_change(ObjectStore::Transaction *t) = 0;
+   virtual void on_change() = 0;
    virtual void clear_state() = 0;
 
    virtual void on_flushed() = 0;
index 468ca418e41673bb0dbbf2b32058d0663a926a7c..db0db8dc87413722b89a4ba3f55f88871eb8e733 100644 (file)
@@ -192,8 +192,9 @@ void ReplicatedBackend::clear_state()
   pull_from_peer.clear();
 }
 
-void ReplicatedBackend::_on_change(ObjectStore::Transaction *t)
+void ReplicatedBackend::on_change()
 {
+  dout(10) << __func__ << dendl;
   for (map<ceph_tid_t, InProgressOp>::iterator i = in_progress_ops.begin();
        i != in_progress_ops.end();
        in_progress_ops.erase(i++)) {
index 371574b35766b49568cebd51bc8dd0d3cae0584e..2d75d42bd807cfbf2a9341e6b0ea989b0dc52d3d 100644 (file)
@@ -69,7 +69,7 @@ public:
     OpRequestRef op
     );
 
-  void _on_change(ObjectStore::Transaction *t);
+  void on_change();
   void clear_state();
   void on_flushed();
 
index bad48726029fa8809ee26a490bf7985ecd5294b8..93873be6970bb914c5e50cce80f022433e6913ac 100644 (file)
@@ -9438,7 +9438,8 @@ void ReplicatedPG::on_change(ObjectStore::Transaction *t)
   // any dups
   apply_and_flush_repops(is_primary());
 
-  pgbackend->on_change(t);
+  pgbackend->on_change_cleanup(t);
+  pgbackend->on_change();
 
   // clear snap_trimmer state
   snap_trimmer_machine.process_event(Reset());