}
void ObjectMap::invalidate() {
+ if ((m_image_ctx.flags & RBD_FLAG_OBJECT_MAP_INVALID) != 0) {
+ return;
+ }
+
CephContext *cct = m_image_ctx.cct;
lderr(cct) << &m_image_ctx << " invalidating object map" << dendl;
m_image_ctx.flags |= RBD_FLAG_OBJECT_MAP_INVALID;
} else if (r < 0) {
lderr(cct) << "failed to update object map: " << cpp_strerror(r)
<< dendl;
- invalidate();
- return false;
+ return invalidate();
}
{
return false;
}
-void ObjectMap::Request::invalidate() {
+bool ObjectMap::Request::invalidate() {
+ if ((m_image_ctx.flags & RBD_FLAG_OBJECT_MAP_INVALID) != 0) {
+ return true;
+ }
+
CephContext *cct = m_image_ctx.cct;
RWLock::WLocker l(m_image_ctx.md_lock);
rados_completion, &op);
assert(r == 0);
rados_completion->release();
+ return false;
}
void ObjectMap::ResizeRequest::send() {