erasure_code.reset();
if (err < 0)
return err;
+
+ if (!validate_crush_against_features(&newcrush, *ss)) {
+ return -EINVAL;
+ }
+
*rule = err;
pending_inc.crush.clear();
newcrush.encode(pending_inc.crush, mon.get_quorum_con_features());
}
bool OSDMonitor::validate_crush_against_features(const CrushWrapper *newcrush,
- stringstream& ss)
+ ostream &ss)
{
OSDMap::Incremental new_pending = pending_inc;
encode(*newcrush, new_pending.crush, mon.get_quorum_con_features());
* @returns true if the map is passable, false otherwise
*/
bool validate_crush_against_features(const CrushWrapper *newcrush,
- std::stringstream &ss);
+ std::ostream &ss);
void check_osdmap_subs();
void share_map_with_random_osd();