From: David Zafman Date: Tue, 13 Mar 2018 20:47:28 +0000 (-0700) Subject: osd: Handle getting RecoveryDone while in RepWaitBackfillReserved X-Git-Tag: v13.1.0~519^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=83c2521a5316c922875746a40b95100b62865e67;p=ceph.git osd: Handle getting RecoveryDone while in RepWaitBackfillReserved Signed-off-by: David Zafman --- 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 {