]> git.apps.os.sepia.ceph.com Git - ceph-ci.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>
Tue, 15 May 2018 20:16:34 +0000 (16:16 -0400)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
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 ba0cad4669d690f437c6d721f22fb7b5ad0fec06..df66778393c246f2316a3bfa81d5d119751f5e53 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();
 }