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) {
- entities->emplace(w.name, w.addr);
+ entity_inst_t entity_inst{w.name, w.addr};
+ sanitize_entity_inst(&entity_inst);
+
+ entities->insert(entity_inst);
}
return 0;
}
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;