goto out;
}
osdmap = get_map(superblock.current_epoch);
- check_osdmap_features();
+ check_osdmap_features(store);
create_recoverystate_perf();
map_lock.put_write();
- check_osdmap_features();
+ check_osdmap_features(store);
// yay!
consume_map();
m->put();
}
-void OSD::check_osdmap_features()
+void OSD::check_osdmap_features(ObjectStore *fs)
{
// adjust required feature bits?
}
if ((features & CEPH_FEATURE_OSD_ERASURE_CODES) &&
- (!superblock.compat_features.incompat.contains(CEPH_OSD_FEATURE_INCOMPAT_SHARDS))) {
+ !fs->get_allow_sharded_objects()) {
dout(0) << __func__ << " enabling on-disk ERASURE CODES compat feature" << dendl;
superblock.compat_features.incompat.insert(CEPH_OSD_FEATURE_INCOMPAT_SHARDS);
ObjectStore::Transaction t;
write_superblock(t);
int err = store->apply_transaction(t);
assert(err == 0);
+ fs->set_allow_sharded_objects();
}
}
void _dispatch(Message *m);
void dispatch_op(OpRequestRef op);
- void check_osdmap_features();
+ void check_osdmap_features(ObjectStore *store);
// asok
friend class OSDSocketHook;