From: Loic Dachary Date: Sun, 12 Jan 2014 12:50:07 +0000 (+0100) Subject: osd: factorize build_simple_crush_map* rulesets creation X-Git-Tag: v0.77~26^2~12 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cf9a764957364c92e3d7944f5b45fb41ed68ef98;p=ceph.git osd: factorize build_simple_crush_map* rulesets creation Group the rulesets created by build_simple_crush_map* into a helper: build_simple_crush_rulesets() Signed-off-by: Loic Dachary --- diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 244639112cb..aa20993f56a 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -1987,18 +1987,7 @@ int OSDMap::build_simple_crush_map(CephContext *cct, CrushWrapper& crush, 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(); @@ -2070,21 +2059,31 @@ int OSDMap::build_simple_crush_map_from_conf(CephContext *cct, 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; } - - diff --git a/src/osd/OSDMap.h b/src/osd/OSDMap.h index 0725d1e95bd..549a3143aa1 100644 --- a/src/osd/OSDMap.h +++ b/src/osd/OSDMap.h @@ -626,6 +626,9 @@ public: static int build_simple_crush_map_from_conf(CephContext *cct, CrushWrapper& crush, ostream *ss); + static int build_simple_crush_rulesets(CephContext *cct, CrushWrapper& crush, + const string& root, + ostream *ss); bool crush_ruleset_in_use(int ruleset) const;