]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rbd-mirror: pass pool meta cache to replayer state machine
authorJason Dillaman <dillaman@redhat.com>
Thu, 6 Feb 2020 20:12:46 +0000 (15:12 -0500)
committerJason Dillaman <dillaman@redhat.com>
Wed, 19 Feb 2020 15:36:40 +0000 (10:36 -0500)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/test/rbd_mirror/test_mock_ImageReplayer.cc
src/tools/rbd_mirror/ImageReplayer.cc
src/tools/rbd_mirror/image_replayer/StateBuilder.h
src/tools/rbd_mirror/image_replayer/journal/StateBuilder.cc
src/tools/rbd_mirror/image_replayer/journal/StateBuilder.h
src/tools/rbd_mirror/image_replayer/snapshot/Replayer.cc
src/tools/rbd_mirror/image_replayer/snapshot/Replayer.h
src/tools/rbd_mirror/image_replayer/snapshot/StateBuilder.cc
src/tools/rbd_mirror/image_replayer/snapshot/StateBuilder.h

index f09375f217d10cac5a709612b9c134737b80c8b1..0f4579bbe8e64de6612e8565a8a050bab779ce2d 100644 (file)
@@ -175,8 +175,8 @@ struct StateBuilder<librbd::MockTestImageCtx> {
   }
 
   MOCK_METHOD1(close, void(Context*));
-  MOCK_METHOD3(create_replayer, Replayer*(Threads<librbd::MockTestImageCtx>*,
-                                          const std::string&,
+  MOCK_METHOD4(create_replayer, Replayer*(Threads<librbd::MockTestImageCtx>*,
+                                          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;
index a6c4cb6575ed24b6006a65b0fbf2a92f05f74689..6f6056e75ab88fb7898d27a3988a574d60390c9b 100644 (file)
@@ -409,6 +409,7 @@ void ImageReplayer<I>::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<
index b51a0dea8f2064dda08745f172a06e2e876e4274..cb70fdf79727df94c64e4a48908709c795bb36f7 100644 (file)
@@ -74,6 +74,7 @@ public:
   virtual Replayer* create_replayer(
       Threads<ImageCtxT>* threads,
       const std::string& local_mirror_uuid,
+      PoolMetaCache* pool_meta_cache,
       ReplayerListener* replayer_listener) = 0;
 
   std::string global_image_id;
index 0bc641f7743ed0d3a7a8af33e5cae9198e022cf3..8cb032b25c0bf3e832fd551aa0a167e5eddb84f2 100644 (file)
@@ -99,6 +99,7 @@ template <typename I>
 image_replayer::Replayer* StateBuilder<I>::create_replayer(
    Threads<I>* threads,
     const std::string& local_mirror_uuid,
+    PoolMetaCache* pool_meta_cache,
     ReplayerListener* replayer_listener) {
   return Replayer<I>::create(
     threads, local_mirror_uuid, this, replayer_listener);
index 8fed18bd0abab645b485903509ca1f3a9073916c..f35ff9fe6249b67f828cf88d60ca2b506ee47198 100644 (file)
@@ -60,6 +60,7 @@ public:
   image_replayer::Replayer* create_replayer(
       Threads<ImageCtxT>* threads,
       const std::string& local_mirror_uuid,
+      PoolMetaCache* pool_meta_cache,
       ReplayerListener* replayer_listener) override;
 
   Journaler* remote_journaler = nullptr;
index d58e78f4d205b492f66497afa9c98c74fc9fe1e7..e4a2ab38ae3b378a42212fa241c36c23f8e39f08 100644 (file)
@@ -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 <typename I>
 Replayer<I>::Replayer(
     Threads<I>* threads,
     const std::string& local_mirror_uuid,
+    PoolMetaCache* pool_meta_cache,
     StateBuilder<I>* 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(
index 718f78c6113e8c74efa86177639e55a160290d1b..e9be6aa121c5ee5f323aa36f1fc2d64ff42c3efd 100644 (file)
@@ -19,6 +19,7 @@ namespace snapshot { template <typename I> class Replay; }
 namespace rbd {
 namespace mirror {
 
+class PoolMetaCache;
 template <typename> struct Threads;
 
 namespace image_replayer {
@@ -37,15 +38,17 @@ public:
   static Replayer* create(
       Threads<ImageCtxT>* threads,
       const std::string& local_mirror_uuid,
+      PoolMetaCache* pool_meta_cache,
       StateBuilder<ImageCtxT>* 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<ImageCtxT>* threads,
       const std::string& local_mirror_uuid,
+      PoolMetaCache* pool_meta_cache,
       StateBuilder<ImageCtxT>* state_builder,
       ReplayerListener* replayer_listener);
   ~Replayer();
@@ -105,6 +108,7 @@ private:
 
   Threads<ImageCtxT>* m_threads;
   std::string m_local_mirror_uuid;
+  PoolMetaCache* m_pool_meta_cache;
   StateBuilder<ImageCtxT>* m_state_builder;
   ReplayerListener* m_replayer_listener;
 
index 5475cf408e4ff8245adaa4bc8e682cf6f163f495..0b573439118f5f7e98552d4614199098be5cba5a 100644 (file)
@@ -100,9 +100,10 @@ template <typename I>
 image_replayer::Replayer* StateBuilder<I>::create_replayer(
    Threads<I>* threads,
     const std::string& local_mirror_uuid,
+    PoolMetaCache* pool_meta_cache,
     ReplayerListener* replayer_listener) {
   return Replayer<I>::create(
-    threads, local_mirror_uuid, this, replayer_listener);
+    threads, local_mirror_uuid, pool_meta_cache, this, replayer_listener);
 }
 
 } // namespace snapshot
index f815ebad1e9970aab814c8c5529885711c6dce16..7222f864ab41af69612471216e3b1af7f894e3f7 100644 (file)
@@ -59,6 +59,7 @@ public:
   image_replayer::Replayer* create_replayer(
       Threads<ImageCtxT>* threads,
       const std::string& local_mirror_uuid,
+      PoolMetaCache* pool_meta_cache,
       ReplayerListener* replayer_listener) override;
 
   SyncPointHandler<ImageCtxT>* sync_point_handler = nullptr;