// already booted?
if (osdmap.is_up(from) &&
- osdmap.get_inst(from) == m->get_orig_source_inst()) {
+ osdmap.get_inst(from) == m->get_orig_source_inst() &&
+ osdmap.get_cluster_addr(from) == m->cluster_addr) {
// yup.
dout(7) << "preprocess_boot dup from " << m->get_orig_source_inst()
<< " == " << osdmap.get_inst(from) << dendl;
dout(7) << __func__ << " was up, first marking down "
<< osdmap.get_inst(from) << dendl;
// preprocess should have caught these; if not, assert.
- assert(osdmap.get_inst(from) != m->get_orig_source_inst());
+ assert(osdmap.get_inst(from) != m->get_orig_source_inst() ||
+ osdmap.get_cluster_addr(from) != m->cluster_addr);
assert(osdmap.get_uuid(from) == m->sb.osd_fsid);
if (pending_inc.new_state.count(from) == 0 ||