]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: allow disabling journaling for snapshot based mirroring image 39451/head
authorMykola Golub <mgolub@suse.com>
Fri, 12 Feb 2021 17:18:07 +0000 (17:18 +0000)
committerMykola Golub <mgolub@suse.com>
Sat, 13 Feb 2021 08:12:07 +0000 (08:12 +0000)
Fixes: https://tracker.ceph.com/issues/49282
Signed-off-by: Mykola Golub <mgolub@suse.com>
src/librbd/operation/DisableFeaturesRequest.cc

index a7f7eca0609242f26c1a8394067e597b5100e5dd..32db4b51840b1d793e4dc3b57395157a245530b7 100644 (file)
@@ -306,15 +306,20 @@ Context *DisableFeaturesRequest<I>::handle_get_mirror_image(int *result) {
     return handle_finish(*result);
   }
 
-  if ((mirror_image.state == cls::rbd::MIRROR_IMAGE_STATE_ENABLED) && !m_force) {
-    lderr(cct) << "cannot disable journaling: image mirroring "
+  if (mirror_image.state == cls::rbd::MIRROR_IMAGE_STATE_ENABLED &&
+      mirror_image.mode == cls::rbd::MIRROR_IMAGE_MODE_JOURNAL && !m_force) {
+    lderr(cct) << "cannot disable journaling: journal-based mirroring "
                << "enabled and mirror pool mode set to image"
                << dendl;
     *result = -EINVAL;
     return handle_finish(*result);
   }
 
-  send_disable_mirror_image();
+  if (mirror_image.mode != cls::rbd::MIRROR_IMAGE_MODE_JOURNAL) {
+    send_close_journal();
+  } else {
+    send_disable_mirror_image();
+  }
   return nullptr;
 }