If the object map needs to be invalidated, a write lock on
snap_lock is required.
Fixes: #11067
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
unlock();
return r;
}
- RWLock::RLocker l2(m_image_ctx.snap_lock);
+ RWLock::WLocker l2(m_image_ctx.snap_lock);
m_image_ctx.object_map.refresh(CEPH_NOSNAP);
}
void ObjectMap::refresh(uint64_t snap_id)
{
- assert(m_image_ctx.snap_lock.is_locked());
+ assert(m_image_ctx.snap_lock.is_wlocked());
RWLock::WLocker l(m_image_ctx.object_map_lock);
uint64_t features;
m_object_map.clear();
return;
}
-
+
ldout(cct, 20) << "refreshed object map: " << m_object_map.size()
<< dendl;
-
+
uint64_t num_objs = Striper::get_num_objects(
m_image_ctx.layout, m_image_ctx.get_image_size(snap_id));
if (m_object_map.size() != num_objs) {