From 83c2521a5316c922875746a40b95100b62865e67 Mon Sep 17 00:00:00 2001 From: David Zafman Date: Tue, 13 Mar 2018 13:47:28 -0700 Subject: [PATCH] osd: Handle getting RecoveryDone while in RepWaitBackfillReserved Signed-off-by: David Zafman --- src/osd/PG.cc | 8 ++++++++ src/osd/PG.h | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 744cde166f23e..7491f42f1534e 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -7151,6 +7151,14 @@ PG::RecoveryState::RepWaitBackfillReserved::react( return transit(); } +boost::statechart::result +PG::RecoveryState::RepWaitBackfillReserved::react(const RecoveryDone&) +{ + PG *pg = context< RecoveryMachine >().pg; + pg->osd->remote_reserver.cancel_reservation(pg->info.pgid); + return transit(); +} + /*---RepRecovering-------*/ PG::RecoveryState::RepRecovering::RepRecovering(my_context ctx) : my_base(ctx), diff --git a/src/osd/PG.h b/src/osd/PG.h index e091e458501b5..1408294ab04cc 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -2341,7 +2341,8 @@ protected: boost::statechart::custom_reaction< RemoteBackfillReserved >, boost::statechart::custom_reaction< RejectRemoteReservation >, boost::statechart::custom_reaction< RemoteReservationRejected >, - boost::statechart::custom_reaction< RemoteReservationCanceled > + boost::statechart::custom_reaction< RemoteReservationCanceled >, + boost::statechart::custom_reaction< RecoveryDone > > reactions; explicit RepWaitBackfillReserved(my_context ctx); void exit(); @@ -2349,6 +2350,7 @@ protected: boost::statechart::result react(const RejectRemoteReservation &evt); boost::statechart::result react(const RemoteReservationRejected &evt); boost::statechart::result react(const RemoteReservationCanceled &evt); + boost::statechart::result react(const RecoveryDone&); }; struct RepWaitRecoveryReserved : boost::statechart::state< RepWaitRecoveryReserved, ReplicaActive >, NamedState { -- 2.39.5