From 88d6b69d3de20d6338d061019eb26ed3147007cb Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Thu, 9 Jul 2020 14:36:39 +0100 Subject: [PATCH] librbd: properly unregister failed async_complete request Signed-off-by: Mykola Golub (cherry picked from commit 143179ffa92ce64d89fc98d6d6c9e7a3722a12f2) Conflicts: src/librbd/ImageWatcher.cc: RWLock vs std::unique_lock --- src/librbd/ImageWatcher.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/librbd/ImageWatcher.cc b/src/librbd/ImageWatcher.cc index c504df2f55a8..bda491bcacf5 100644 --- a/src/librbd/ImageWatcher.cc +++ b/src/librbd/ImageWatcher.cc @@ -158,12 +158,13 @@ void ImageWatcher::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(); } -- 2.47.3