From: Yan, Zheng Date: Wed, 27 Sep 2017 10:49:55 +0000 (+0800) Subject: mds: always re-probe mds log when standby replay done X-Git-Tag: v13.0.1~725^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=82c1f5fcfd151aa1e8c39c7f198abec9bf807b65;p=ceph.git mds: always re-probe mds log when standby replay done Signed-off-by: "Yan, Zheng" --- diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 77f1819788f..ea90712eeef 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -1214,7 +1214,16 @@ void MDSRank::_standby_replay_restart_finish(int r, uint64_t old_read_pos) } } -inline void MDSRank::standby_replay_restart() +class MDSRank::C_MDS_StandbyReplayRestart : public MDSInternalContext { +public: + explicit C_MDS_StandbyReplayRestart(MDSRank *m) : MDSInternalContext(m) {} + void finish(int r) override { + assert(!r); + mds->standby_replay_restart(); + } +}; + +void MDSRank::standby_replay_restart() { if (standby_replaying) { /* Go around for another pass of replaying in standby */ @@ -1227,9 +1236,8 @@ inline void MDSRank::standby_replay_restart() /* We are transitioning out of standby: wait for OSD map update before making final pass */ dout(1) << "standby_replay_restart (final takeover pass)" << dendl; - Context *fin = new C_IO_Wrapper(this, new C_MDS_BootStart(this, MDS_BOOT_PREPARE_LOG)); - bool const ready = - objecter->wait_for_map(mdsmap->get_last_failure_osd_epoch(), fin); + Context *fin = new C_IO_Wrapper(this, new C_MDS_StandbyReplayRestart(this)); + bool ready = objecter->wait_for_map(mdsmap->get_last_failure_osd_epoch(), fin); if (ready) { delete fin; mdlog->get_journaler()->reread_head_and_probe( @@ -1243,15 +1251,6 @@ inline void MDSRank::standby_replay_restart() } } -class MDSRank::C_MDS_StandbyReplayRestart : public MDSInternalContext { -public: - explicit C_MDS_StandbyReplayRestart(MDSRank *m) : MDSInternalContext(m) {} - void finish(int r) override { - assert(!r); - mds->standby_replay_restart(); - } -}; - void MDSRank::replay_done() { dout(1) << "replay_done" << (standby_replaying ? " (as standby)" : "") << dendl;