From: Mykola Golub Date: Fri, 12 Feb 2021 17:18:07 +0000 (+0000) Subject: librbd: allow disabling journaling for snapshot based mirroring image X-Git-Tag: v15.2.10~13^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=4b9f262f71d116ffe79c3eebe2e7126b1f418006;p=ceph.git librbd: allow disabling journaling for snapshot based mirroring image Fixes: https://tracker.ceph.com/issues/49282 Signed-off-by: Mykola Golub (cherry picked from commit 2a5885fedaaf2ddd3c7005162064c9981a499240) --- diff --git a/src/librbd/operation/DisableFeaturesRequest.cc b/src/librbd/operation/DisableFeaturesRequest.cc index 97c0d2219b64c..451f044439428 100644 --- a/src/librbd/operation/DisableFeaturesRequest.cc +++ b/src/librbd/operation/DisableFeaturesRequest.cc @@ -305,15 +305,20 @@ Context *DisableFeaturesRequest::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; }