return 0;
}
-void sanitize_entity_inst(entity_inst_t* entity_inst) {
- // make all addrs of type ANY because the type isn't what uniquely
- // identifies them and clients and on-disk formats can be encoded
- // with different backwards compatibility settings.
- entity_inst->addr.set_type(entity_addr_t::TYPE_ANY);
-}
-
int list_watchers(cls_method_context_t hctx,
std::set<entity_inst_t> *entities) {
obj_list_watch_response_t watchers;
entities->clear();
for (auto &w : watchers.entries) {
entity_inst_t entity_inst{w.name, w.addr};
- sanitize_entity_inst(&entity_inst);
+ cls::rbd::sanitize_entity_inst(&entity_inst);
entities->insert(entity_inst);
}
ondisk_status.last_update = ceph_clock_now();
int r = cls_get_request_origin(hctx, &ondisk_status.origin);
- sanitize_entity_inst(&ondisk_status.origin);
ceph_assert(r == 0);
bufferlist bl;
void MirrorImageSiteStatusOnDisk::encode_meta(bufferlist &bl,
uint64_t features) const {
ENCODE_START(1, 1, bl);
- encode(origin, bl, features);
+ auto sanitized_origin = origin;
+ sanitize_entity_inst(&sanitized_origin);
+ encode(sanitized_origin, bl, features);
ENCODE_FINISH(bl);
}
void MirrorImageSiteStatusOnDisk::decode_meta(bufferlist::const_iterator &it) {
DECODE_START(1, it);
decode(origin, it);
+ sanitize_entity_inst(&origin);
DECODE_FINISH(it);
}
return os;
}
+void sanitize_entity_inst(entity_inst_t* entity_inst) {
+ // make all addrs of type ANY because the type isn't what uniquely
+ // identifies them and clients and on-disk formats can be encoded
+ // with different backwards compatibility settings.
+ entity_inst->addr.set_type(entity_addr_t::TYPE_ANY);
+}
+
} // namespace rbd
} // namespace cls