]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-mirror: instance replayer now respects manual stop command
authorJason Dillaman <dillaman@redhat.com>
Thu, 3 May 2018 16:03:01 +0000 (12:03 -0400)
committerJason Dillaman <dillaman@redhat.com>
Sat, 19 May 2018 12:16:29 +0000 (08:16 -0400)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 06e1244ee53640edbbab0168d3050152d048d681)

src/tools/rbd_mirror/InstanceReplayer.cc
src/tools/rbd_mirror/PoolReplayer.cc

index 95307b8291be30d3b1f22c35477dbf78059b177c..b4e12aa6fea4a44815decab952cc55c6f7aa74b8 100644 (file)
@@ -309,6 +309,8 @@ void InstanceReplayer<I>::start_image_replayer(
     m_image_replayers.erase(image_replayer->get_global_image_id());
     image_replayer->destroy();
     return;
+  } else if (m_manual_stop) {
+    return;
   }
 
   image_replayer->start(nullptr, false);
index b6f30ee3b31a80d9166c3c4a25b3e16f4d951fd8..0950546aa2b7b7a7096a907059b4f2318243b61b 100644 (file)
@@ -550,6 +550,14 @@ void PoolReplayer<I>::print_status(Formatter *f, stringstream *ss)
   f->dump_stream("peer") << m_peer;
   f->dump_string("instance_id", m_instance_watcher->get_instance_id());
 
+  std::string state("running");
+  if (m_manual_stop) {
+    state = "stopped (manual)";
+  } else if (m_stopping) {
+    state = "stopped";
+  }
+  f->dump_string("state", state);
+
   std::string leader_instance_id;
   m_leader_watcher->get_leader_instance_id(&leader_instance_id);
   f->dump_string("leader_instance_id", leader_instance_id);
@@ -600,6 +608,7 @@ void PoolReplayer<I>::start()
     return;
   }
 
+  m_manual_stop = false;
   m_instance_replayer->start();
 }
 
@@ -617,6 +626,7 @@ void PoolReplayer<I>::stop(bool manual)
     return;
   }
 
+  m_manual_stop = true;
   m_instance_replayer->stop();
 }