pg->publish_stats_to_osd();
}
-void PG::RecoveryState::Backfilling::cancel_backfill()
+void PG::RecoveryState::Backfilling::backfill_release_reservations()
{
PG *pg = context< RecoveryMachine >().pg;
pg->osd->local_reserver.cancel_reservation(pg->info.pgid);
-
for (set<pg_shard_t>::iterator it = pg->backfill_targets.begin();
it != pg->backfill_targets.end();
++it) {
con.get());
}
}
+}
+void PG::RecoveryState::Backfilling::cancel_backfill()
+{
+ PG *pg = context< RecoveryMachine >().pg;
+ backfill_release_reservations();
if (!pg->waiting_on_backfill.empty()) {
pg->waiting_on_backfill.clear();
pg->finish_recovery_op(hobject_t::get_max());
}
}
+boost::statechart::result
+PG::RecoveryState::Backfilling::react(const Backfilled &c)
+{
+ backfill_release_reservations();
+ return transit<Recovered>();
+}
+
boost::statechart::result
PG::RecoveryState::Backfilling::react(const DeferBackfill &c)
{
struct Backfilling : boost::statechart::state< Backfilling, Active >, NamedState {
typedef boost::mpl::list<
- boost::statechart::transition< Backfilled, Recovered >,
+ boost::statechart::custom_reaction< Backfilled >,
boost::statechart::custom_reaction< DeferBackfill >,
boost::statechart::custom_reaction< UnfoundBackfill >,
boost::statechart::custom_reaction< RemoteReservationRejected >,
post_event(RemoteReservationRevokedTooFull());
return discard_event();
}
+ void backfill_release_reservations();
+ boost::statechart::result react(const Backfilled& evt);
boost::statechart::result react(const RemoteReservationRevokedTooFull& evt);
boost::statechart::result react(const RemoteReservationRevoked& evt);
boost::statechart::result react(const DeferBackfill& evt);