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
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) {
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);