From: Jason Dillaman Date: Thu, 1 Mar 2018 22:57:17 +0000 (-0500) Subject: librbd: reduce lock scope on copy-on-read IO path X-Git-Tag: v13.0.2~31^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e980bd74d4b7e5710bb2e52628850cb2b520a06a;p=ceph.git librbd: reduce lock scope on copy-on-read IO path Signed-off-by: Jason Dillaman --- diff --git a/src/librbd/io/ObjectRequest.cc b/src/librbd/io/ObjectRequest.cc index bc1d9e93fc3..320daedb25c 100644 --- a/src/librbd/io/ObjectRequest.cc +++ b/src/librbd/io/ObjectRequest.cc @@ -337,7 +337,7 @@ void ObjectReadRequest::copyup() { ldout(image_ctx->cct, 20) << dendl; - Mutex::Locker copyup_locker(image_ctx->copyup_list_lock); + image_ctx->copyup_list_lock.Lock(); auto it = image_ctx->copyup_list.find(this->m_object_no); if (it == image_ctx->copyup_list.end()) { // create and kick off a CopyupRequest @@ -346,7 +346,10 @@ void ObjectReadRequest::copyup() { this->m_trace); image_ctx->copyup_list[this->m_object_no] = new_req; + image_ctx->copyup_list_lock.Unlock(); new_req->send(); + } else { + image_ctx->copyup_list_lock.Unlock(); } image_ctx->parent_lock.put_read();