]> 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@redhat.com>
Wed, 23 Jul 2014 22:04:33 +0000 (15:04 -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>
(cherry picked from commit e299357e2a24474ab7a02e65ca0279336fd04b76)

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 3c27288c53259e758fcb733cdf717839960bca4e..b69d77a3e9dd43ac11ae97b192f8f3db5f22d229 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 dad17f9cd2619f9efa12d1df49b4519ea734212f..e1aceef4ac9b09585c65c5cb791a35960035b795 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 1dbf20d2a75d62d9297d96dcd079d843dc64c3df..e10201a60164a64a7fa3ceb8633455dcbd72f71c 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 5a9668fc2a161c52e9b546099a37eb0a220be162..489aee4e10dec0b1843ef63916c8f367cddf3494 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 68922082da7373c4d3226dd9503ae6a1a1ecc207..c8f6da2386aa8e80384a657fe57631132b40073a 100644 (file)
@@ -9440,7 +9440,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());