From: Jason Dillaman Date: Mon, 28 Mar 2016 14:48:02 +0000 (-0400) Subject: rbd-mirror: update mirror peer sync state after completion X-Git-Tag: v10.1.1~64^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=882bc06f5424b837cc9bcea58c3394a761e30543;p=ceph.git rbd-mirror: update mirror peer sync state after completion Signed-off-by: Jason Dillaman --- diff --git a/src/test/rbd_mirror/image_sync/test_mock_SyncPointPruneRequest.cc b/src/test/rbd_mirror/image_sync/test_mock_SyncPointPruneRequest.cc index 4558d6c55ffe..e45bf7839584 100644 --- a/src/test/rbd_mirror/image_sync/test_mock_SyncPointPruneRequest.cc +++ b/src/test/rbd_mirror/image_sync/test_mock_SyncPointPruneRequest.cc @@ -109,6 +109,7 @@ TEST_F(TestMockImageSyncSyncPointPruneRequest, SyncCompleteSuccess) { librbd::journal::MirrorPeerClientMeta client_meta; client_meta.sync_points.emplace_front("snap1", boost::none); m_client_meta = client_meta; + ASSERT_EQ(librbd::journal::MIRROR_PEER_STATE_SYNCING, m_client_meta.state); librbd::MockImageCtx mock_remote_image_ctx(*m_remote_image_ctx); journal::MockJournaler mock_journaler; @@ -124,6 +125,7 @@ TEST_F(TestMockImageSyncSyncPointPruneRequest, SyncCompleteSuccess) { req->send(); ASSERT_EQ(0, ctx.wait()); ASSERT_TRUE(m_client_meta.sync_points.empty()); + ASSERT_EQ(librbd::journal::MIRROR_PEER_STATE_REPLAYING, m_client_meta.state); } TEST_F(TestMockImageSyncSyncPointPruneRequest, RestartedSyncCompleteSuccess) { diff --git a/src/tools/rbd_mirror/image_sync/SyncPointPruneRequest.cc b/src/tools/rbd_mirror/image_sync/SyncPointPruneRequest.cc index 4b72bc26ee8f..332cb00e0834 100644 --- a/src/tools/rbd_mirror/image_sync/SyncPointPruneRequest.cc +++ b/src/tools/rbd_mirror/image_sync/SyncPointPruneRequest.cc @@ -154,6 +154,9 @@ void SyncPointPruneRequest::send_update_client() { if (m_sync_complete) { m_client_meta_copy.sync_points.pop_front(); + if (m_client_meta_copy.sync_points.empty()) { + m_client_meta_copy.state = librbd::journal::MIRROR_PEER_STATE_REPLAYING; + } } else { while (m_client_meta_copy.sync_points.size() > 1) { m_client_meta_copy.sync_points.pop_back();