From: Jason Dillaman Date: Tue, 1 Sep 2015 00:03:38 +0000 (-0400) Subject: librbd: possible recursive reader lock during resize X-Git-Tag: v10.0.2~193^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2d340da5f850622e65ff73779d4e402ade082e68;p=ceph.git 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 --- diff --git a/src/librbd/operation/ResizeRequest.cc b/src/librbd/operation/ResizeRequest.cc index 825b54428493..cb5699f5a35c 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;