]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/librbd/image/RemoveRequest.cc
update sources to 12.2.8
[ceph.git] / ceph / src / librbd / image / RemoveRequest.cc
index 5782702d78f926640edc68b57e7088764e181e16..10efaa677df7c235c9a1fc49e98fc6aa2c949f69 100644 (file)
@@ -9,6 +9,7 @@
 #include "librbd/ObjectMap.h"
 #include "librbd/ExclusiveLock.h"
 #include "librbd/MirroringWatcher.h"
+#include "librbd/journal/DisabledPolicy.h"
 #include "librbd/journal/RemoveRequest.h"
 #include "librbd/image/RemoveRequest.h"
 #include "librbd/operation/TrimRequest.h"
@@ -103,6 +104,13 @@ template<typename I>
 void RemoveRequest<I>::acquire_exclusive_lock() {
   ldout(m_cct, 20) << dendl;
 
+  // do not attempt to open the journal when removing the image in case
+  // it's corrupt
+  if (m_image_ctx->test_features(RBD_FEATURE_JOURNALING)) {
+    RWLock::WLocker snap_locker(m_image_ctx->snap_lock);
+    m_image_ctx->set_journal_policy(new journal::DisabledPolicy());
+  }
+
   using klass = RemoveRequest<I>;
   if (m_force) {
     Context *ctx = create_context_callback<