]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: allow disabling journaling for snapshot based mirroring image 39864/head
authorMykola Golub <mgolub@suse.com>
Fri, 12 Feb 2021 17:18:07 +0000 (17:18 +0000)
committerMykola Golub <mgolub@suse.com>
Fri, 5 Mar 2021 16:27:33 +0000 (18:27 +0200)
Fixes: https://tracker.ceph.com/issues/49282
Signed-off-by: Mykola Golub <mgolub@suse.com>
(cherry picked from commit 2a5885fedaaf2ddd3c7005162064c9981a499240)

src/librbd/operation/DisableFeaturesRequest.cc

index 97c0d2219b64c7a55f7c34ba2bf75f212dec5bf9..451f0444394281eccbdde6e8d929b5e43ea4b807 100644 (file)
@@ -305,15 +305,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;
 }