From 2d340da5f850622e65ff73779d4e402ade082e68 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Mon, 31 Aug 2015 20:03:38 -0400 Subject: [PATCH] librbd: possible recursive reader lock during resize With multiple resizes concurrently queued, it's possible for the owner lock to be locked multiple times. Signed-off-by: Jason Dillaman --- src/librbd/operation/ResizeRequest.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/librbd/operation/ResizeRequest.cc b/src/librbd/operation/ResizeRequest.cc index 825b544284930..cb5699f5a35c7 100644 --- a/src/librbd/operation/ResizeRequest.cc +++ b/src/librbd/operation/ResizeRequest.cc @@ -124,12 +124,12 @@ void ResizeRequest::send_op() { CephContext *cct = m_image_ctx.cct; if (is_canceled()) { - complete(-ERESTART); + async_complete(-ERESTART); } else if (m_original_size == m_new_size) { ldout(cct, 2) << this << " no change in size (" << m_original_size << " -> " << m_new_size << ")" << dendl; m_state = STATE_FINISHED; - complete(0); + async_complete(0); } else if (m_new_size > m_original_size) { ldout(cct, 2) << this << " expanding image (" << m_original_size << " -> " << m_new_size << ")" << dendl; -- 2.39.5