From: Loic Dachary Date: Sat, 1 Feb 2014 09:21:00 +0000 (+0100) Subject: mon: no default ruleset except for replicated pools X-Git-Tag: v0.78~226^2~19 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9d766cabdca0ba347b5d7b649124e365d6fa2948;p=ceph.git mon: no default ruleset except for replicated pools 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 Signed-off-by: Loic Dachary --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index 6fbb47ddbbac..6993c5e8cad1 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -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 diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 3614cadb3e10..4992e6df6f2a 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -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::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);