]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd/: clarify PeeringState deletion interfaces
authorSamuel Just <sjust@redhat.com>
Tue, 2 Apr 2019 22:58:39 +0000 (15:58 -0700)
committersjust@redhat.com <sjust@redhat.com>
Wed, 1 May 2019 18:22:22 +0000 (11:22 -0700)
Signed-off-by: Samuel Just <sjust@redhat.com>
src/osd/PG.cc
src/osd/PG.h
src/osd/PeeringState.cc
src/osd/PeeringState.h
src/osd/PrimaryLogPG.cc

index 02de6bcbd01bafef4aef08a7b045bd4f4ffc564e..eb1e9e3466bee0a15c3075e22ce63efbc7f0f35f 100644 (file)
@@ -4753,7 +4753,7 @@ void PG::C_DeleteMore::complete(int r) {
   delete this;
 }
 
-void PG::_delete_some(ObjectStore::Transaction *t)
+void PG::do_delete_work(ObjectStore::Transaction *t)
 {
   dout(10) << __func__ << dendl;
 
index 60939cd36c9defee2f6eadaa5dcfb1d4d8cb1a45..70a5f8a49aac69d27bc4bf847f97aaf0885e36c4 100644 (file)
@@ -485,6 +485,8 @@ public:
     return std::make_unique<PG::PGLogEntryHandler>(this, t);
   }
 
+  void do_delete_work(ObjectStore::Transaction *t) override;
+
   void queue_peering_event(PGPeeringEventRef evt);
   void do_peering_event(PGPeeringEventRef evt, PeeringCtx *rcx);
   void queue_null(epoch_t msg_epoch, epoch_t query_epoch);
@@ -549,8 +551,6 @@ public:
   virtual void agent_clear() = 0;
   virtual void agent_choose_mode_restart() = 0;
 
-  virtual void on_removal(ObjectStore::Transaction *t) = 0;
-
   struct C_DeleteMore : public Context {
     PGRef pg;
     epoch_t epoch;
index 00f1eadbfa36238f97e9c0d037b4a529e587b498..4c3e88e5c0de7b8593f32bd7a1680f6cce39e811 100644 (file)
@@ -4424,15 +4424,14 @@ PeeringState::Deleting::Deleting(my_context ctx)
   DECLARE_LOCALS
   ps->deleting = true;
   ObjectStore::Transaction* t = context<PeeringMachine>().get_cur_transaction();
-  pg->on_removal(t);
-  t->register_on_commit(new PG::C_DeleteMore(pg, ps->get_osdmap_epoch()));
+  pl->on_removal(t);
 }
 
 boost::statechart::result PeeringState::Deleting::react(
   const DeleteSome& evt)
 {
   DECLARE_LOCALS
-  pg->_delete_some(context<PeeringMachine>().get_cur_transaction());
+  pl->do_delete_work(context<PeeringMachine>().get_cur_transaction());
   return discard_event();
 }
 
index 0c5bc133b7529a45d7fba3ea643bd7ef7695c112..02efbb0cea0fde938d2298187ec5079de5fef031 100644 (file)
@@ -129,6 +129,10 @@ public:
 
     virtual void on_active_exit() = 0;
 
+    // PG deletion
+    virtual void on_removal(ObjectStore::Transaction *t) = 0;
+    virtual void do_delete_work(ObjectStore::Transaction *t) = 0;
+
     // active map notifications
     virtual void on_active_actmap() = 0;
     virtual void on_active_advmap(const OSDMapRef &osdmap) = 0;
index b2b9c914ea19ce5b6ba3e50ccdf0c9455e58a2f4..745ed6544683dfb4c78f64b2ddac19c041508ba2 100644 (file)
@@ -12069,6 +12069,8 @@ void PrimaryLogPG::on_removal(ObjectStore::Transaction *t)
   pg_log.roll_forward(&rollbacker);
 
   on_shutdown();
+
+  t->register_on_commit(new C_DeleteMore(this, get_osdmap_epoch()));
 }
 
 void PrimaryLogPG::clear_async_reads()