From: Jason Dillaman Date: Thu, 6 Feb 2020 20:12:46 +0000 (-0500) Subject: rbd-mirror: pass pool meta cache to replayer state machine X-Git-Tag: v15.1.1~350^2~4 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=0c4e9a21da012cac3d73d5e021de03a74e28f3f9;p=ceph-ci.git rbd-mirror: pass pool meta cache to replayer state machine Signed-off-by: Jason Dillaman --- diff --git a/src/test/rbd_mirror/test_mock_ImageReplayer.cc b/src/test/rbd_mirror/test_mock_ImageReplayer.cc index f09375f217d..0f4579bbe8e 100644 --- a/src/test/rbd_mirror/test_mock_ImageReplayer.cc +++ b/src/test/rbd_mirror/test_mock_ImageReplayer.cc @@ -175,8 +175,8 @@ struct StateBuilder { } MOCK_METHOD1(close, void(Context*)); - MOCK_METHOD3(create_replayer, Replayer*(Threads*, - const std::string&, + MOCK_METHOD4(create_replayer, Replayer*(Threads*, + const std::string&, PoolMetaCache*, ReplayerListener*)); StateBuilder() { @@ -301,8 +301,8 @@ public: void expect_create_replayer(MockStateBuilder& mock_state_builder, MockReplayer& mock_replayer) { - EXPECT_CALL(mock_state_builder, create_replayer(_, _, _)) - .WillOnce(WithArg<2>( + EXPECT_CALL(mock_state_builder, create_replayer(_, _, _, _)) + .WillOnce(WithArg<3>( Invoke([this, &mock_replayer] (image_replayer::ReplayerListener* replayer_listener) { mock_replayer.replayer_listener = replayer_listener; diff --git a/src/tools/rbd_mirror/ImageReplayer.cc b/src/tools/rbd_mirror/ImageReplayer.cc index a6c4cb6575e..6f6056e75ab 100644 --- a/src/tools/rbd_mirror/ImageReplayer.cc +++ b/src/tools/rbd_mirror/ImageReplayer.cc @@ -409,6 +409,7 @@ void ImageReplayer::start_replay() { std::unique_lock locker{m_lock}; ceph_assert(m_replayer == nullptr); m_replayer = m_state_builder->create_replayer(m_threads, m_local_mirror_uuid, + m_pool_meta_cache, m_replayer_listener); auto ctx = create_context_callback< diff --git a/src/tools/rbd_mirror/image_replayer/StateBuilder.h b/src/tools/rbd_mirror/image_replayer/StateBuilder.h index b51a0dea8f2..cb70fdf7972 100644 --- a/src/tools/rbd_mirror/image_replayer/StateBuilder.h +++ b/src/tools/rbd_mirror/image_replayer/StateBuilder.h @@ -74,6 +74,7 @@ public: virtual Replayer* create_replayer( Threads* threads, const std::string& local_mirror_uuid, + PoolMetaCache* pool_meta_cache, ReplayerListener* replayer_listener) = 0; std::string global_image_id; diff --git a/src/tools/rbd_mirror/image_replayer/journal/StateBuilder.cc b/src/tools/rbd_mirror/image_replayer/journal/StateBuilder.cc index 0bc641f7743..8cb032b25c0 100644 --- a/src/tools/rbd_mirror/image_replayer/journal/StateBuilder.cc +++ b/src/tools/rbd_mirror/image_replayer/journal/StateBuilder.cc @@ -99,6 +99,7 @@ template image_replayer::Replayer* StateBuilder::create_replayer( Threads* threads, const std::string& local_mirror_uuid, + PoolMetaCache* pool_meta_cache, ReplayerListener* replayer_listener) { return Replayer::create( threads, local_mirror_uuid, this, replayer_listener); diff --git a/src/tools/rbd_mirror/image_replayer/journal/StateBuilder.h b/src/tools/rbd_mirror/image_replayer/journal/StateBuilder.h index 8fed18bd0ab..f35ff9fe624 100644 --- a/src/tools/rbd_mirror/image_replayer/journal/StateBuilder.h +++ b/src/tools/rbd_mirror/image_replayer/journal/StateBuilder.h @@ -60,6 +60,7 @@ public: image_replayer::Replayer* create_replayer( Threads* threads, const std::string& local_mirror_uuid, + PoolMetaCache* pool_meta_cache, ReplayerListener* replayer_listener) override; Journaler* remote_journaler = nullptr; diff --git a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc index d58e78f4d20..e4a2ab38ae3 100644 --- a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc +++ b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc @@ -8,6 +8,7 @@ #include "common/WorkQueue.h" #include "librbd/Journal.h" #include "librbd/Utils.h" +#include "tools/rbd_mirror/PoolMetaCache.h" #include "tools/rbd_mirror/Threads.h" #include "tools/rbd_mirror/Types.h" #include "tools/rbd_mirror/image_replayer/CloseImageRequest.h" @@ -35,10 +36,12 @@ template Replayer::Replayer( Threads* threads, const std::string& local_mirror_uuid, + PoolMetaCache* pool_meta_cache, StateBuilder* state_builder, ReplayerListener* replayer_listener) : m_threads(threads), m_local_mirror_uuid(local_mirror_uuid), + m_pool_meta_cache(pool_meta_cache), m_state_builder(state_builder), m_replayer_listener(replayer_listener), m_lock(ceph::make_mutex(librbd::util::unique_lock_name( diff --git a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h index 718f78c6113..e9be6aa121c 100644 --- a/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h +++ b/src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h @@ -19,6 +19,7 @@ namespace snapshot { template class Replay; } namespace rbd { namespace mirror { +class PoolMetaCache; template struct Threads; namespace image_replayer { @@ -37,15 +38,17 @@ public: static Replayer* create( Threads* threads, const std::string& local_mirror_uuid, + PoolMetaCache* pool_meta_cache, StateBuilder* state_builder, ReplayerListener* replayer_listener) { - return new Replayer(threads, local_mirror_uuid, state_builder, - replayer_listener); + return new Replayer(threads, local_mirror_uuid, pool_meta_cache, + state_builder, replayer_listener); } Replayer( Threads* threads, const std::string& local_mirror_uuid, + PoolMetaCache* pool_meta_cache, StateBuilder* state_builder, ReplayerListener* replayer_listener); ~Replayer(); @@ -105,6 +108,7 @@ private: Threads* m_threads; std::string m_local_mirror_uuid; + PoolMetaCache* m_pool_meta_cache; StateBuilder* m_state_builder; ReplayerListener* m_replayer_listener; diff --git a/src/tools/rbd_mirror/image_replayer/snapshot/StateBuilder.cc b/src/tools/rbd_mirror/image_replayer/snapshot/StateBuilder.cc index 5475cf408e4..0b573439118 100644 --- a/src/tools/rbd_mirror/image_replayer/snapshot/StateBuilder.cc +++ b/src/tools/rbd_mirror/image_replayer/snapshot/StateBuilder.cc @@ -100,9 +100,10 @@ template image_replayer::Replayer* StateBuilder::create_replayer( Threads* threads, const std::string& local_mirror_uuid, + PoolMetaCache* pool_meta_cache, ReplayerListener* replayer_listener) { return Replayer::create( - threads, local_mirror_uuid, this, replayer_listener); + threads, local_mirror_uuid, pool_meta_cache, this, replayer_listener); } } // namespace snapshot diff --git a/src/tools/rbd_mirror/image_replayer/snapshot/StateBuilder.h b/src/tools/rbd_mirror/image_replayer/snapshot/StateBuilder.h index f815ebad1e9..7222f864ab4 100644 --- a/src/tools/rbd_mirror/image_replayer/snapshot/StateBuilder.h +++ b/src/tools/rbd_mirror/image_replayer/snapshot/StateBuilder.h @@ -59,6 +59,7 @@ public: image_replayer::Replayer* create_replayer( Threads* threads, const std::string& local_mirror_uuid, + PoolMetaCache* pool_meta_cache, ReplayerListener* replayer_listener) override; SyncPointHandler* sync_point_handler = nullptr;