]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: no default ruleset except for replicated pools
authorLoic Dachary <loic@dachary.org>
Sat, 1 Feb 2014 09:21:00 +0000 (10:21 +0100)
committerLoic Dachary <loic@dachary.org>
Tue, 4 Feb 2014 07:06:25 +0000 (08:06 +0100)
Remove the hardcoded default ruleset for erasure coded pools and only
keep it for replicated pools. Move the logic up in the  prepare_new_pool
method so that an error code can be returned before allocating the new
pending pool in case the ruleset is not initialized.

Reviewed-By: Christophe Courtaut <christophe.courtaut@gmail.com>
Signed-off-by: Loic Dachary <loic@dachary.org>
src/common/config_opts.h
src/mon/OSDMonitor.cc

index 6fbb47ddbbaca906a5eeac013a2df08c13131589..6993c5e8cad1c53f15f900e34532885954f1c076 100644 (file)
@@ -396,7 +396,6 @@ OPTION(osd_pgp_bits, OPT_INT, 6)  // bits per osd
 OPTION(osd_crush_chooseleaf_type, OPT_INT, 1) // 1 = host
 OPTION(osd_pool_default_crush_rule, OPT_INT, -1) // deprecated for osd_pool_default_crush_replicated_ruleset
 OPTION(osd_pool_default_crush_replicated_ruleset, OPT_INT, CEPH_DEFAULT_CRUSH_REPLICATED_RULESET)
-OPTION(osd_pool_default_crush_erasure_ruleset, OPT_INT, CEPH_DEFAULT_CRUSH_ERASURE_RULESET)
 OPTION(osd_pool_default_size, OPT_INT, 3)
 OPTION(osd_pool_default_min_size, OPT_INT, 0)  // 0 means no specific default; ceph will use size-size/2
 OPTION(osd_pool_default_pg_num, OPT_INT, 8) // number of PGs for new pools. Configure in global or mon section of ceph.conf
index 3614cadb3e101e4f66658a0e8bf5ca448f9d34a6..4992e6df6f2a6ad95e01aafabfc9d817419e87b0 100644 (file)
@@ -2796,6 +2796,16 @@ int OSDMonitor::prepare_new_pool(string& name, uint64_t auid, int crush_ruleset,
   int r = prepare_pool_properties(pool_type, properties, &properties_map, ss);
   if (r)
     return r;
+  if (crush_ruleset < 0) {
+    if (pool_type == pg_pool_t::TYPE_REPLICATED) {
+      crush_ruleset =
+       CrushWrapper::get_osd_pool_default_crush_replicated_ruleset(g_ceph_context);
+    } else {
+      ss << "prepare_new_pool(" << name << ") ruleset must be set";
+      return -EINVAL;
+    }
+  }
+
   for (map<int64_t,string>::iterator p = pending_inc.new_pool_names.begin();
        p != pending_inc.new_pool_names.end();
        ++p) {
@@ -2815,19 +2825,7 @@ int OSDMonitor::prepare_new_pool(string& name, uint64_t auid, int crush_ruleset,
 
   pi->size = g_conf->osd_pool_default_size;
   pi->min_size = g_conf->get_osd_pool_default_min_size();
-  if (crush_ruleset >= 0) {
-    pi->crush_ruleset = crush_ruleset;
-  } else {
-    switch(pool_type) {
-    case pg_pool_t::TYPE_REPLICATED:
-      pi->crush_ruleset =
-       CrushWrapper::get_osd_pool_default_crush_replicated_ruleset(g_ceph_context);
-      break;
-    case pg_pool_t::TYPE_ERASURE:
-      pi->crush_ruleset = g_conf->osd_pool_default_crush_erasure_ruleset;
-      break;
-    }
-  }
+  pi->crush_ruleset = crush_ruleset;
   pi->object_hash = CEPH_STR_HASH_RJENKINS;
   pi->set_pg_num(pg_num ? pg_num : g_conf->osd_pool_default_pg_num);
   pi->set_pgp_num(pgp_num ? pgp_num : g_conf->osd_pool_default_pgp_num);