]> git-server-git.apps.pok.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)
committerNathan Cutler <ncutler@suse.com>
Wed, 29 Apr 2020 12:06:58 +0000 (14:06 +0200)
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>
(cherry picked from commit a90042b2546bdaa056610bd10d7dae0f5e5da18e)

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 e11863f0e4479aca9662b80d4bbedce708f5f011..29736034cb5e2fc7711b8c87f97326b64b2ab7ac 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 b69dc0cb2075fce0e95979e9e15a34a2f22e8ca5..05664d24df793262eeb2fa934fad097709b0ecc9 100644 (file)
@@ -476,8 +476,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;