]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/librbd/operation/DisableFeaturesRequest.cc
update sources to v12.1.1
[ceph.git] / ceph / src / librbd / operation / DisableFeaturesRequest.cc
index 41eddbd7c8c0e3a7b08a7c90df986148dac1b39f..34cc9579fe84567a41fdf6c7cd4a400cc6dfddbc 100644 (file)
@@ -354,14 +354,14 @@ void DisableFeaturesRequest<I>::send_close_journal() {
   {
     RWLock::WLocker locker(image_ctx.owner_lock);
     if (image_ctx.journal != nullptr) {
-
       ldout(cct, 20) << this << " " << __func__ << dendl;
 
+      std::swap(m_journal, image_ctx.journal);
       Context *ctx = create_context_callback<
        DisableFeaturesRequest<I>,
        &DisableFeaturesRequest<I>::handle_close_journal>(this);
 
-      image_ctx.journal->close(ctx);
+      m_journal->close(ctx);
       return;
     }
   }
@@ -378,9 +378,12 @@ Context *DisableFeaturesRequest<I>::handle_close_journal(int *result) {
   if (*result < 0) {
     lderr(cct) << "failed to close image journal: " << cpp_strerror(*result)
                << dendl;
-    return handle_finish(*result);
   }
 
+  assert(m_journal != nullptr);
+  delete m_journal;
+  m_journal = nullptr;
+
   send_remove_journal();
   return nullptr;
 }