]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: move object_map_lock acquisition into refresh()
authorJosh Durgin <jdurgin@redhat.com>
Thu, 26 Feb 2015 01:02:42 +0000 (17:02 -0800)
committerJosh Durgin <jdurgin@redhat.com>
Thu, 26 Feb 2015 01:40:25 +0000 (17:40 -0800)
Every caller was acquiring this just for these calls.

Signed-off-by: Josh Durgin <jdurgin@redhat.com>
src/librbd/ImageCtx.cc
src/librbd/ImageWatcher.cc
src/librbd/ObjectMap.cc
src/librbd/internal.cc

index 39d7ea86d828ca0cacf73e0f56d52e2a070ec8ef..16f0bdf3d1b1dcd9174e9168779e3dd0fc605b0c 100644 (file)
@@ -297,8 +297,6 @@ namespace librbd {
       snap_name = in_snap_name;
       snap_exists = true;
       data_ctx.snap_set_read(snap_id);
-
-      RWLock::WLocker l(object_map_lock);
       object_map.refresh(in_snap_id);
       return 0;
     }
@@ -312,8 +310,6 @@ namespace librbd {
     snap_name = "";
     snap_exists = true;
     data_ctx.snap_set_read(snap_id);
-
-    RWLock::WLocker l(object_map_lock);
     object_map.refresh(CEPH_NOSNAP);
   }
 
index 2fd81bd145d3ce834752a6f9afbbb88339df7627..f15c481d534e9ca14d845a0c3955826a9c180252 100644 (file)
@@ -318,7 +318,6 @@ int ImageWatcher::lock() {
       return r;
     }
     RWLock::RLocker l2(m_image_ctx.snap_lock);
-    RWLock::WLocker l3(m_image_ctx.object_map_lock);
     m_image_ctx.object_map.refresh(CEPH_NOSNAP);
   }
 
index 51421391b9db8e2aacd65467905cb6affa0e4dfd..4aa3c3b65921e08a26ea824534e305bee89a11ab 100644 (file)
@@ -148,7 +148,8 @@ bool ObjectMap::object_may_exist(uint64_t object_no) const
 void ObjectMap::refresh(uint64_t snap_id)
 {
   assert(m_image_ctx.snap_lock.is_locked());
-  assert(m_image_ctx.object_map_lock.is_wlocked());
+  RWLock::WLocker l(m_image_ctx.object_map_lock);
+
   uint64_t features;
   m_image_ctx.get_features(snap_id, &features);
   if ((features & RBD_FEATURE_OBJECT_MAP) == 0 ||
index 447d297ef32c83b9aa8b6487e59525a453832cf3..f5046ecb8c8d281f9c2333db0507a2dd0dcd20fc 100644 (file)
@@ -2043,7 +2043,6 @@ reprotect_and_return_err:
        ictx->snap_exists = false;
       }
 
-      RWLock::WLocker object_map_locker(ictx->object_map_lock);
       ictx->object_map.refresh(ictx->snap_id);
 
       ictx->data_ctx.selfmanaged_snap_set_write_ctx(ictx->snapc.seq, ictx->snaps);