]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: add non-primary global image id to mirror enable
authorJason Dillaman <dillaman@redhat.com>
Mon, 20 Apr 2020 22:33:32 +0000 (18:33 -0400)
committerJason Dillaman <dillaman@redhat.com>
Thu, 23 Apr 2020 17:19:49 +0000 (13:19 -0400)
The constructor that took an ImageCtx did not support passing the
non-primary global image id and instead defaulted to an empty string.

Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/librbd/api/Migration.cc
src/librbd/api/Mirror.cc
src/librbd/image/CloneRequest.cc
src/librbd/mirror/EnableRequest.h
src/librbd/operation/EnableFeaturesRequest.cc
src/test/librbd/image/test_mock_CloneRequest.cc
src/test/librbd/operation/test_mock_EnableFeaturesRequest.cc

index fb6a1078e1b8a0dbaf5c5d9d2577fc5488021222..81f1ed0cd58deeba01b2b23fc45c0ebfbe373b94 100644 (file)
@@ -1496,7 +1496,7 @@ int Migration<I>::enable_mirroring(
 
   C_SaferCond ctx;
   auto req = mirror::EnableRequest<I>::create(
-    image_ctx, mirror_image_mode, &ctx);
+    image_ctx, mirror_image_mode, "", &ctx);
   req->send();
   r = ctx.wait();
   if (r < 0) {
index 5e006690861e69bb8f43241e76b26c505032f382..cc6c4da4e4415296ac2de97ecd1775fc430917f1 100644 (file)
@@ -415,7 +415,7 @@ int Mirror<I>::image_enable(I *ictx, mirror_image_mode_t mode,
 
   C_SaferCond ctx;
   auto req = mirror::EnableRequest<ImageCtx>::create(
-    ictx, static_cast<cls::rbd::MirrorImageMode>(mode), &ctx);
+    ictx, static_cast<cls::rbd::MirrorImageMode>(mode), "", &ctx);
   req->send();
 
   r = ctx.wait();
index 3ab75556e563c5b1dd93d4ec5c35e7513410e2e3..cabd061aabeac4176e594bb4ecd09080acc5a242 100644 (file)
@@ -486,8 +486,7 @@ void CloneRequest<I>::enable_mirror() {
   Context *ctx = create_context_callback<
     klass, &klass::handle_enable_mirror>(this);
   auto req = mirror::EnableRequest<I>::create(
-    m_imctx->md_ctx, m_id, m_mirror_image_mode, m_non_primary_global_image_id,
-    m_imctx->op_work_queue, ctx);
+    m_imctx, m_mirror_image_mode, m_non_primary_global_image_id, ctx);
   req->send();
 }
 
index 12ab0f035af7b50c7339e53f936d00359a2db1df..73bd54d7bd343e5fe5a77d5f8f2e703925fbc32c 100644 (file)
@@ -24,9 +24,11 @@ class EnableRequest {
 public:
   static EnableRequest *create(ImageCtxT *image_ctx,
                                cls::rbd::MirrorImageMode mode,
+                               const std::string &non_primary_global_image_id,
                                Context *on_finish) {
     return new EnableRequest(image_ctx->md_ctx, image_ctx->id, image_ctx, mode,
-                             "", image_ctx->op_work_queue, on_finish);
+                             non_primary_global_image_id,
+                             image_ctx->op_work_queue, on_finish);
   }
   static EnableRequest *create(librados::IoCtx &io_ctx,
                                const std::string &image_id,
index 398724a09f36b1e5e3e8189c706b5321e6179b09..d33ff830539aa4570e20a70ef12fa79e9636a982 100644 (file)
@@ -420,8 +420,8 @@ void EnableFeaturesRequest<I>::send_enable_mirror_image() {
     EnableFeaturesRequest<I>,
     &EnableFeaturesRequest<I>::handle_enable_mirror_image>(this);
 
-  mirror::EnableRequest<I> *req = mirror::EnableRequest<I>::create(
-    &image_ctx, cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, ctx);
+  auto req = mirror::EnableRequest<I>::create(
+    &image_ctx, cls::rbd::MIRROR_IMAGE_MODE_JOURNAL, "", ctx);
   req->send();
 }
 
index 41b362ab3821a7a41205c7eaf8f366abe1f7556e..1d22702d0e9fc956e45845b6f99434fe4cbd24fa 100644 (file)
@@ -186,11 +186,9 @@ template <>
 struct EnableRequest<MockTestImageCtx> {
   Context* on_finish = nullptr;
   static EnableRequest* s_instance;
-  static EnableRequest* create(librados::IoCtx &io_ctx,
-                               const std::string &image_id,
+  static EnableRequest* create(MockTestImageCtx* image_ctx,
                                cls::rbd::MirrorImageMode mode,
                                const std::string &non_primary_global_image_id,
-                               MockContextWQ *op_work_queue,
                                Context *on_finish) {
     ceph_assert(s_instance != nullptr);
     s_instance->on_finish = on_finish;
index d33ce1db9abb8589eda85901ffe1fbf1100a47ec..e63ea168eb71ae41bfd770352d777abb484a1d1f 100644 (file)
@@ -96,6 +96,7 @@ public:
 
   static EnableRequest *create(MockOperationImageCtx *image_ctx,
                                cls::rbd::MirrorImageMode mirror_image_mode,
+                               const std::string& non_primary_global_image_id,
                                Context *on_finish) {
     ceph_assert(s_instance != nullptr);
     s_instance->on_finish = on_finish;