]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: properly unregister failed async_complete request 37040/head
authorMykola Golub <mgolub@suse.com>
Thu, 9 Jul 2020 13:36:39 +0000 (14:36 +0100)
committerMykola Golub <mgolub@suse.com>
Tue, 8 Sep 2020 08:02:14 +0000 (11:02 +0300)
Signed-off-by: Mykola Golub <mgolub@suse.com>
(cherry picked from commit 143179ffa92ce64d89fc98d6d6c9e7a3722a12f2)

Conflicts:
src/librbd/ImageWatcher.cc: RWLock vs std::unique_lock

src/librbd/ImageWatcher.cc

index c504df2f55a8af25f29eddc02ec79b8ce85b20f0..bda491bcacf593f42f39414b9d889f95075ddf67 100644 (file)
@@ -158,12 +158,13 @@ void ImageWatcher<I>::handle_async_complete(const AsyncRequestId &request,
                           << cpp_strerror(ret_val) << dendl;
     if (ret_val == -ETIMEDOUT && !is_unregistered()) {
       schedule_async_complete(request, r);
+      m_async_op_tracker.finish_op();
+      return;
     }
-  } else {
-    RWLock::WLocker async_request_locker(m_async_request_lock);
-    m_async_pending.erase(request);
   }
 
+  RWLock::WLocker async_request_locker(m_async_request_lock);
+  m_async_pending.erase(request);
   m_async_op_tracker.finish_op();
 }