From: Josh Durgin Date: Thu, 26 Feb 2015 01:02:42 +0000 (-0800) Subject: librbd: move object_map_lock acquisition into refresh() X-Git-Tag: v0.93~6^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1f9782ea3c280318587284548573f3fa601eb1a9;p=ceph.git librbd: move object_map_lock acquisition into refresh() Every caller was acquiring this just for these calls. Signed-off-by: Josh Durgin --- diff --git a/src/librbd/ImageCtx.cc b/src/librbd/ImageCtx.cc index 39d7ea86d82..16f0bdf3d1b 100644 --- a/src/librbd/ImageCtx.cc +++ b/src/librbd/ImageCtx.cc @@ -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); } diff --git a/src/librbd/ImageWatcher.cc b/src/librbd/ImageWatcher.cc index 2fd81bd145d..f15c481d534 100644 --- a/src/librbd/ImageWatcher.cc +++ b/src/librbd/ImageWatcher.cc @@ -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); } diff --git a/src/librbd/ObjectMap.cc b/src/librbd/ObjectMap.cc index 51421391b9d..4aa3c3b6592 100644 --- a/src/librbd/ObjectMap.cc +++ b/src/librbd/ObjectMap.cc @@ -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 || diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index 447d297ef32..f5046ecb8c8 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -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);