From: Jason Dillaman Date: Thu, 18 Feb 2016 22:56:20 +0000 (-0500) Subject: librbd: need owner write lock when disabling exclusive lock X-Git-Tag: v10.1.0~357^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4ecdf066fdd75d19a5d84d1701672bc2515f6547;p=ceph.git librbd: need owner write lock when disabling exclusive lock Signed-off-by: Jason Dillaman --- diff --git a/src/librbd/image/RefreshRequest.cc b/src/librbd/image/RefreshRequest.cc index 94dfbddbf7b3..378a3079e753 100644 --- a/src/librbd/image/RefreshRequest.cc +++ b/src/librbd/image/RefreshRequest.cc @@ -701,7 +701,7 @@ void RefreshRequest::apply() { CephContext *cct = m_image_ctx.cct; ldout(cct, 20) << this << " " << __func__ << dendl; - RWLock::RLocker owner_locker(m_image_ctx.owner_lock); + RWLock::WLocker owner_locker(m_image_ctx.owner_lock); RWLock::WLocker md_locker(m_image_ctx.md_lock); { diff --git a/src/librbd/image/SetSnapRequest.cc b/src/librbd/image/SetSnapRequest.cc index 9e175b21ef06..82ec4eab3750 100644 --- a/src/librbd/image/SetSnapRequest.cc +++ b/src/librbd/image/SetSnapRequest.cc @@ -309,9 +309,9 @@ int SetSnapRequest::apply() { CephContext *cct = m_image_ctx.cct; ldout(cct, 10) << __func__ << dendl; + RWLock::WLocker owner_locker(m_image_ctx.owner_lock); RWLock::WLocker snap_locker(m_image_ctx.snap_lock); RWLock::WLocker parent_locker(m_image_ctx.parent_lock); - if (m_snap_id != CEPH_NOSNAP) { int r = m_image_ctx.snap_set(m_snap_name); if (r < 0) {