]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Revert "rbd-mirror: wait for events to replay before shut down journal replay"
authorJason Dillaman <dillaman@redhat.com>
Wed, 3 Jun 2020 11:50:32 +0000 (07:50 -0400)
committerJason Dillaman <dillaman@redhat.com>
Wed, 3 Jun 2020 11:50:32 +0000 (07:50 -0400)
This reverts commit aeccb0330333aad08afea625325b12e01eff909b.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/tools/rbd_mirror/image_replayer/journal/Replayer.cc
src/tools/rbd_mirror/image_replayer/journal/Replayer.h

index 487ed1f90da4261deb7dc7757f5ff0e94d5bc1d6..f1552ac68ca591743fdb2ec9d406875e6428a9ef 100644 (file)
@@ -226,7 +226,7 @@ void Replayer<I>::shut_down(Context* on_finish) {
 
   cancel_delayed_preprocess_task();
   cancel_flush_local_replay_task();
-  wait_for_event_replay();
+  shut_down_local_journal_replay();
 }
 
 template <typename I>
@@ -404,31 +404,12 @@ bool Replayer<I>::notify_init_complete(std::unique_lock<ceph::mutex>& locker) {
   return true;
 }
 
-template <typename I>
-void Replayer<I>::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<I>, &Replayer<I>::handle_wait_for_event_replay>(this));
-  m_event_replay_tracker.wait_for_ops(ctx);
-}
-
-template <typename I>
-void Replayer<I>::handle_wait_for_event_replay(int r) {
-  dout(10) << "r=" << r << dendl;
-
-  std::unique_lock locker{m_lock};
-  shut_down_local_journal_replay();
-}
-
 template <typename I>
 void Replayer<I>::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<I>::handle_shut_down_local_journal_replay(int r) {
     handle_replay_error(r, "failed to shut down local journal replay");
   }
 
+  wait_for_event_replay();
+}
+
+template <typename I>
+void Replayer<I>::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<I>, &Replayer<I>::handle_wait_for_event_replay>(this));
+  m_event_replay_tracker.wait_for_ops(ctx);
+}
+
+template <typename I>
+void Replayer<I>::handle_wait_for_event_replay(int r) {
+  dout(10) << "r=" << r << dendl;
+
+  std::unique_lock locker{m_lock};
   close_local_image();
 }
 
index 35569502945f76709c3cc641cb2508c5c42a0863..f5d59a07f8a4733d1f9e864dab4be2e815aea1fe 100644 (file)
@@ -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  < * * * * * * * * * * * * * * * * * * * *