From: Jason Dillaman Date: Mon, 27 Jun 2016 15:13:29 +0000 (-0400) Subject: rbd-mirror: fix potential image replayer state transition race X-Git-Tag: v10.2.3~53^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bdb2189c94badb6e389a3a05794ad8af3eceda1c;p=ceph.git rbd-mirror: fix potential image replayer state transition race Signed-off-by: Jason Dillaman (cherry picked from commit 3e224c6c03a6a5de0e179bd788387cfa3ff49e9d) --- diff --git a/src/tools/rbd_mirror/Replayer.cc b/src/tools/rbd_mirror/Replayer.cc index ae035254d85a..619f07d16532 100644 --- a/src/tools/rbd_mirror/Replayer.cc +++ b/src/tools/rbd_mirror/Replayer.cc @@ -709,6 +709,7 @@ bool Replayer::stop_image_replayer(unique_ptr > &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 > &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 > &image_replayer) } ); image_replayer->stop(ctx); - } else { - // TODO: checkhow long it is stopping and alert if it is too long. } return false;