]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-mirror: fix potential image replayer state transition race
authorJason Dillaman <dillaman@redhat.com>
Mon, 27 Jun 2016 15:13:29 +0000 (11:13 -0400)
committerJason Dillaman <dillaman@redhat.com>
Tue, 28 Jun 2016 13:08:47 +0000 (09:08 -0400)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/tools/rbd_mirror/Replayer.cc

index ae035254d85a70b6fe9f71d612160930e82da029..619f07d165323c712ca0a3a61d0ed575ad49eab1 100644 (file)
@@ -709,6 +709,7 @@ bool Replayer::stop_image_replayer(unique_ptr<ImageReplayer<> > &image_replayer)
   dout(20) << "global_image_id=" << image_replayer->get_global_image_id()
            << dendl;
 
+  // TODO: check how long it is stopping and alert if it is too long.
   if (image_replayer->is_stopped()) {
     m_image_deleter->cancel_waiter(image_replayer->get_local_image_name());
     if (!m_stopping.read()) {
@@ -720,9 +721,7 @@ bool Replayer::stop_image_replayer(unique_ptr<ImageReplayer<> > &image_replayer)
         image_replayer->get_global_image_id());
     }
     return true;
-  }
-
-  if (image_replayer->is_running()) {
+  } else {
     if (!m_stopping.read()) {
       dout(20) << "scheduling delete after image replayer stopped" << dendl;
     }
@@ -738,8 +737,6 @@ bool Replayer::stop_image_replayer(unique_ptr<ImageReplayer<> > &image_replayer)
         }
     );
     image_replayer->stop(ctx);
-  } else {
-    // TODO: checkhow long it is stopping and alert if it is too long.
   }
 
   return false;