From: Jason Dillaman Date: Fri, 17 Jul 2015 19:04:10 +0000 (-0400) Subject: librbd: add object state accessor to ObjectMap X-Git-Tag: v0.94.4~77^2~14 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=cb57fe581df7c14d174e6eaff382d6a28ab658d6;p=ceph.git librbd: add object state accessor to ObjectMap Signed-off-by: Jason Dillaman --- diff --git a/src/librbd/ObjectMap.cc b/src/librbd/ObjectMap.cc index 9da30cc2e0852..3505041d67753 100644 --- a/src/librbd/ObjectMap.cc +++ b/src/librbd/ObjectMap.cc @@ -33,6 +33,13 @@ std::string ObjectMap::object_map_name(const std::string &image_id, return oid; } +uint8_t ObjectMap::operator[](uint64_t object_no) const +{ + assert(m_image_ctx.object_map_lock.is_locked()); + assert(object_no < m_object_map.size()); + return m_object_map[object_no]; +} + bool ObjectMap::enabled() const { RWLock::RLocker l(m_image_ctx.object_map_lock); @@ -137,8 +144,8 @@ bool ObjectMap::object_may_exist(uint64_t object_no) const } assert(object_no < m_object_map.size()); - bool exists = (m_object_map[object_no] == OBJECT_EXISTS || - m_object_map[object_no] == OBJECT_PENDING); + uint8_t state = (*this)[object_no]; + bool exists = (state == OBJECT_EXISTS || state == OBJECT_PENDING); ldout(m_image_ctx.cct, 20) << &m_image_ctx << " object_may_exist: " << "object_no=" << object_no << " r=" << exists << dendl; diff --git a/src/librbd/ObjectMap.h b/src/librbd/ObjectMap.h index 20eb304a73b86..2192f8421c980 100644 --- a/src/librbd/ObjectMap.h +++ b/src/librbd/ObjectMap.h @@ -24,6 +24,8 @@ public: static std::string object_map_name(const std::string &image_id, uint64_t snap_id); + uint8_t operator[](uint64_t object_no) const; + int lock(); int unlock();