If OSDMap has the EC feature set, then update our superblock to
reflect as such, making our on-disk format incompatible with previous
OSDs without EC support.
Fixes: 6028
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
cluster_messenger->set_policy(entity_name_t::TYPE_OSD, p);
}
}
+
+ if ((features & CEPH_FEATURE_OSD_ERASURE_CODES) &&
+ (!superblock.compat_features.incompat.contains(CEPH_OSD_FEATURE_INCOMPAT_ERASURECODES))) {
+ dout(0) << __func__ << " enabling on-disk ERASURE CODES compat feature" << dendl;
+ superblock.compat_features.incompat.insert(CEPH_OSD_FEATURE_INCOMPAT_ERASURECODES);
+ ObjectStore::Transaction t;
+ write_superblock(t);
+ int err = store->apply_transaction(t);
+ assert(err == 0);
+ }
}
void OSD::advance_pg(