From e980bd74d4b7e5710bb2e52628850cb2b520a06a Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Thu, 1 Mar 2018 17:57:17 -0500 Subject: [PATCH] librbd: reduce lock scope on copy-on-read IO path Signed-off-by: Jason Dillaman --- src/librbd/io/ObjectRequest.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/librbd/io/ObjectRequest.cc b/src/librbd/io/ObjectRequest.cc index bc1d9e93fc3a..320daedb25c6 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(); -- 2.47.3