]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: need owner write lock when disabling exclusive lock
authorJason Dillaman <dillaman@redhat.com>
Thu, 18 Feb 2016 22:56:20 +0000 (17:56 -0500)
committerJason Dillaman <dillaman@redhat.com>
Thu, 18 Feb 2016 22:56:20 +0000 (17:56 -0500)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/librbd/image/RefreshRequest.cc
src/librbd/image/SetSnapRequest.cc

index 94dfbddbf7b3bf4260723b873c4a8bc08a1a196d..378a3079e753c51c020769a07b385489bd688b44 100644 (file)
@@ -701,7 +701,7 @@ void RefreshRequest<I>::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);
 
   {
index 9e175b21ef060906c291c421bb11a5f7c8d6fb2c..82ec4eab3750b9e690a08a8c56f8bb31e3c7890d 100644 (file)
@@ -309,9 +309,9 @@ int SetSnapRequest<I>::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) {