From: Mykola Golub Date: Thu, 9 Jul 2020 13:36:39 +0000 (+0100) Subject: librbd: properly unregister failed async_complete request X-Git-Tag: v14.2.12~70^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F37040%2Fhead;p=ceph.git 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 --- 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(); }