}
assert(m->get_orig_source_inst().name.is_osd());
+
+ // check if osd has required features to boot
+ if ((osdmap.get_features(NULL) & CEPH_FEATURE_OSD_ERASURE_CODES) &&
+ !(m->get_connection()->get_features() & CEPH_FEATURE_OSD_ERASURE_CODES)) {
+ dout(0) << __func__ << " osdmap requires Erasure Codes but osd at "
+ << m->get_orig_source_inst()
+ << " doesn't announce support -- ignore" << dendl;
+ goto ignore;
+ }
// already booted?
if (osdmap.is_up(from) &&
assert(m->get_orig_source().is_osd());
int from = m->get_orig_source().num();
-
+
// does this osd exist?
if (from >= osdmap.get_max_osd()) {
dout(1) << "boot from osd." << from << " >= max_osd " << osdmap.get_max_osd() << dendl;
xi.laggy_probability * (1.0 - g_conf->mon_osd_laggy_weight);
dout(10) << " laggy, now xi " << xi << dendl;
}
+ // set features shared by the osd
+ xi.features = m->get_connection()->get_features();
pending_inc.new_xinfo[from] = xi;
// wait