]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-mirror: straighten ImageReplayer::stop() a bit
authorIlya Dryomov <idryomov@gmail.com>
Sat, 19 Feb 2022 15:43:04 +0000 (16:43 +0100)
committerPonnuvel Palaniyappan <pponnuvel@gmail.com>
Wed, 11 May 2022 06:18:12 +0000 (07:18 +0100)
- don't default on_finish parameter
- m_restart_requested is set in ImageReplayer::restart() which is the
  only restart=true call site, so setting m_restart_requested here is
  redundant
- is_stopped_() can't be true in is_running_() branch
- on_finish->complete(0) in the end is unreachable

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 219c500977bbfbcfe4ccd24beb294edbe0562d35)

src/test/rbd_mirror/test_mock_ImageReplayer.cc
src/tools/rbd_mirror/ImageReplayer.cc
src/tools/rbd_mirror/ImageReplayer.h

index e75fa0ac4907ccc79369deb59766e2440deec8b1..9f40797dd4f4c95cde09723b2d9f05abc6fb3e0a 100644 (file)
@@ -608,7 +608,7 @@ TEST_F(TestMockImageReplayer, BootstrapCancel) {
   MockStateBuilder mock_state_builder;
   EXPECT_CALL(mock_bootstrap_request, send())
     .WillOnce(Invoke([this, &mock_bootstrap_request]() {
-        m_image_replayer->stop();
+        m_image_replayer->stop(nullptr);
         mock_bootstrap_request.on_finish->complete(-ECANCELED);
       }));
   EXPECT_CALL(mock_bootstrap_request, cancel());
index afc980bd809efd7419b1e7343f80365f4c902ba3..3a2fd2357169e59bd16c920d950f947e6b54c8ac 100644 (file)
@@ -526,10 +526,6 @@ void ImageReplayer<I>::stop(Context *on_finish, bool manual, bool restart)
   {
     std::lock_guard locker{m_lock};
 
-    if (restart) {
-      m_restart_requested = true;
-    }
-
     if (!is_running_()) {
       running = false;
       if (!restart && m_restart_requested) {
@@ -537,23 +533,21 @@ void ImageReplayer<I>::stop(Context *on_finish, bool manual, bool restart)
         m_restart_requested = false;
       }
     } else {
-      if (!is_stopped_()) {
-       if (m_state == STATE_STARTING) {
-         dout(10) << "canceling start" << dendl;
-         if (m_bootstrap_request != nullptr) {
-            bootstrap_request = m_bootstrap_request;
-            bootstrap_request->get();
-         }
-       } else {
-         dout(10) << "interrupting replay" << dendl;
-         shut_down_replay = true;
-       }
-
-        ceph_assert(m_on_stop_finish == nullptr);
-        std::swap(m_on_stop_finish, on_finish);
-        m_stop_requested = true;
-        m_manual_stop = manual;
+      if (m_state == STATE_STARTING) {
+        dout(10) << "canceling start" << dendl;
+        if (m_bootstrap_request != nullptr) {
+          bootstrap_request = m_bootstrap_request;
+          bootstrap_request->get();
+        }
+      } else {
+        dout(10) << "interrupting replay" << dendl;
+        shut_down_replay = true;
       }
+
+      ceph_assert(m_on_stop_finish == nullptr);
+      std::swap(m_on_stop_finish, on_finish);
+      m_stop_requested = true;
+      m_manual_stop = manual;
     }
   }
 
@@ -574,8 +568,6 @@ void ImageReplayer<I>::stop(Context *on_finish, bool manual, bool restart)
 
   if (shut_down_replay) {
     on_stop_journal_replay();
-  } else if (on_finish != nullptr) {
-    on_finish->complete(0);
   }
 }
 
index 1fbf8db94d3dddb5601a72d16e78eec40488025a..027a62ac63cbbaea0dd56dac633f44b05a4dff8a 100644 (file)
@@ -101,10 +101,8 @@ public:
     return m_global_image_id;
   }
 
-  void start(Context *on_finish = nullptr, bool manual = false,
-             bool restart = false);
-  void stop(Context *on_finish = nullptr, bool manual = false,
-            bool restart = false);
+  void start(Context *on_finish, bool manual = false, bool restart = false);
+  void stop(Context *on_finish, bool manual = false, bool restart = false);
   void restart(Context *on_finish = nullptr);
   void flush();