]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: factorize build_simple_crush_map* rulesets creation
authorLoic Dachary <loic@dachary.org>
Sun, 12 Jan 2014 12:50:07 +0000 (13:50 +0100)
committerLoic Dachary <loic@dachary.org>
Sun, 12 Jan 2014 16:48:32 +0000 (17:48 +0100)
Group the rulesets created by build_simple_crush_map* into a helper:
build_simple_crush_rulesets()

Signed-off-by: Loic Dachary <loic@dachary.org>
src/osd/OSDMap.cc
src/osd/OSDMap.h

index 244639112cb7983b85cf92c69dc392c575ded9bd..aa20993f56a5f4c2803289d705cc8329ea8ec52e 100644 (file)
@@ -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;
 }
-
-
index 0725d1e95bdc67d219091f9eb760aea900269025..549a3143aa11129651ed01e04bb934c2eae1f01c 100644 (file)
@@ -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;