delete this;
}
-void PG::_delete_some(ObjectStore::Transaction *t)
+void PG::do_delete_work(ObjectStore::Transaction *t)
{
dout(10) << __func__ << dendl;
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);
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;
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();
}
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;
pg_log.roll_forward(&rollbacker);
on_shutdown();
+
+ t->register_on_commit(new C_DeleteMore(this, get_osdmap_epoch()));
}
void PrimaryLogPG::clear_async_reads()