From: Yuri Weinstein Date: Wed, 10 Jun 2020 16:21:44 +0000 (-0700) Subject: Merge pull request #35440 from smithfarm/wip-45885-octopus X-Git-Tag: v15.2.4~48 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3b116974f48dfc2ac21245df2fc04db3485f0d83;p=ceph.git Merge pull request #35440 from smithfarm/wip-45885-octopus octopus: rbd-mirror: stop local journal replayer first during shut down Reviewed-by: Jason Dillaman Reviewed-by: Mykola Golub --- 3b116974f48dfc2ac21245df2fc04db3485f0d83 diff --cc src/tools/rbd_mirror/image_replayer/journal/Replayer.cc index af680219442,3af886fdf3a..60b9a7e5931 --- a/src/tools/rbd_mirror/image_replayer/journal/Replayer.cc +++ b/src/tools/rbd_mirror/image_replayer/journal/Replayer.cc @@@ -869,14 -854,15 +893,16 @@@ void Replayer::handle_replay_flush_s template void Replayer::handle_replay_flush(int r) { + std::unique_lock locker{m_lock}; dout(10) << "r=" << r << dendl; + m_flush_tracker.finish_op(); + if (r < 0) { derr << "replay flush encountered an error: " << cpp_strerror(r) << dendl; - handle_replay_complete(r, "replay flush encountered an error"); + handle_replay_complete(locker, r, "replay flush encountered an error"); m_event_replay_tracker.finish_op(); return; - } else if (is_replay_complete()) { + } else if (is_replay_complete(locker)) { m_event_replay_tracker.finish_op(); return; } diff --cc src/tools/rbd_mirror/image_replayer/journal/Replayer.h index ec6e44f1ae6,b279aa9a297..6b1f36d9c7f --- a/src/tools/rbd_mirror/image_replayer/journal/Replayer.h +++ b/src/tools/rbd_mirror/image_replayer/journal/Replayer.h @@@ -235,13 -240,14 +240,16 @@@ private void init_remote_journaler(); void handle_init_remote_journaler(int r); - void start_external_replay(); + void start_external_replay(std::unique_lock& locker); void handle_start_external_replay(int r); + bool add_local_journal_listener(std::unique_lock& locker); + bool notify_init_complete(std::unique_lock& locker); + void wait_for_flush(); + void handle_wait_for_flush(int r); + void shut_down_local_journal_replay(); void handle_shut_down_local_journal_replay(int r);