From: Jason Dillaman Date: Wed, 3 Jun 2020 11:50:32 +0000 (-0400) Subject: Revert "rbd-mirror: wait for events to replay before shut down journal replay" X-Git-Tag: v16.1.0~2141^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e94bee327821f61aa8ff0984c5d066e2d2c2181d;p=ceph.git Revert "rbd-mirror: wait for events to replay before shut down journal replay" This reverts commit aeccb0330333aad08afea625325b12e01eff909b. Signed-off-by: Jason Dillaman --- diff --git a/src/tools/rbd_mirror/image_replayer/journal/Replayer.cc b/src/tools/rbd_mirror/image_replayer/journal/Replayer.cc index 487ed1f90da4..f1552ac68ca5 100644 --- a/src/tools/rbd_mirror/image_replayer/journal/Replayer.cc +++ b/src/tools/rbd_mirror/image_replayer/journal/Replayer.cc @@ -226,7 +226,7 @@ void Replayer::shut_down(Context* on_finish) { cancel_delayed_preprocess_task(); cancel_flush_local_replay_task(); - wait_for_event_replay(); + shut_down_local_journal_replay(); } template @@ -404,31 +404,12 @@ bool Replayer::notify_init_complete(std::unique_lock& locker) { return true; } -template -void Replayer::wait_for_event_replay() { - ceph_assert(ceph_mutex_is_locked_by_me(m_lock)); - - dout(10) << dendl; - auto ctx = create_async_context_callback( - m_threads->work_queue, create_context_callback< - Replayer, &Replayer::handle_wait_for_event_replay>(this)); - m_event_replay_tracker.wait_for_ops(ctx); -} - -template -void Replayer::handle_wait_for_event_replay(int r) { - dout(10) << "r=" << r << dendl; - - std::unique_lock locker{m_lock}; - shut_down_local_journal_replay(); -} - template void Replayer::shut_down_local_journal_replay() { ceph_assert(ceph_mutex_is_locked_by_me(m_lock)); if (m_local_journal_replay == nullptr) { - close_local_image(); + wait_for_event_replay(); return; } @@ -448,6 +429,25 @@ void Replayer::handle_shut_down_local_journal_replay(int r) { handle_replay_error(r, "failed to shut down local journal replay"); } + wait_for_event_replay(); +} + +template +void Replayer::wait_for_event_replay() { + ceph_assert(ceph_mutex_is_locked_by_me(m_lock)); + + dout(10) << dendl; + auto ctx = create_async_context_callback( + m_threads->work_queue, create_context_callback< + Replayer, &Replayer::handle_wait_for_event_replay>(this)); + m_event_replay_tracker.wait_for_ops(ctx); +} + +template +void Replayer::handle_wait_for_event_replay(int r) { + dout(10) << "r=" << r << dendl; + + std::unique_lock locker{m_lock}; close_local_image(); } diff --git a/src/tools/rbd_mirror/image_replayer/journal/Replayer.h b/src/tools/rbd_mirror/image_replayer/journal/Replayer.h index 35569502945f..f5d59a07f8a4 100644 --- a/src/tools/rbd_mirror/image_replayer/journal/Replayer.h +++ b/src/tools/rbd_mirror/image_replayer/journal/Replayer.h @@ -145,10 +145,10 @@ private: * REPLAY_COMPLETE < * * * * * * * * * * * * * * * * * * * * * | * * v * - * WAIT_FOR_REPLAY * + * SHUT_DOWN_LOCAL_JOURNAL_REPLAY * * | * * v * - * SHUT_DOWN_LOCAL_JOURNAL_REPLAY * + * WAIT_FOR_REPLAY * * | * * v * * CLOSE_LOCAL_IMAGE < * * * * * * * * * * * * * * * * * * * *