crush.insert_item(cct, o, 1.0, name, loc);
}
- string failure_domain =
- crush.get_type_name(cct->_conf->osd_crush_chooseleaf_type);
-
- r = crush.add_simple_ruleset("replicated_ruleset", "default", failure_domain,
- "firstn", pg_pool_t::TYPE_REPLICATED, ss);
- if (r < 0)
- return r;
-
- r = crush.add_simple_ruleset("erasure_ruleset", "default", failure_domain,
- "indep", pg_pool_t::TYPE_ERASURE, ss);
- if (r < 0)
- return r;
+ build_simple_crush_rulesets(cct, crush, "default", ss);
crush.finalize();
crush.insert_item(cct, o, 1.0, *i, loc);
}
+ build_simple_crush_rulesets(cct, crush, "default", ss);
+
+ crush.finalize();
+
+ return 0;
+}
+
+
+int OSDMap::build_simple_crush_rulesets(CephContext *cct,
+ CrushWrapper& crush,
+ const string& root,
+ ostream *ss)
+{
string failure_domain =
crush.get_type_name(cct->_conf->osd_crush_chooseleaf_type);
- r = crush.add_simple_ruleset("replicated_ruleset", "default", failure_domain,
+ int r;
+ r = crush.add_simple_ruleset("replicated_ruleset", root, failure_domain,
"firstn", pg_pool_t::TYPE_REPLICATED, ss);
if (r < 0)
return r;
- r = crush.add_simple_ruleset("erasure_ruleset", "default", failure_domain,
- "indep", pg_pool_t::TYPE_ERASURE, ss);
+ r = crush.add_simple_ruleset("erasure_ruleset", root, failure_domain,
+ "indep", pg_pool_t::TYPE_ERASURE, ss);
if (r < 0)
return r;
-
- crush.finalize();
-
- return 0;
+ else
+ return 0;
}
-
-