It must be different from the replicated default.
Signed-off-by: Loic Dachary <loic@dachary.org>
enum {
CEPH_DEFAULT_CRUSH_REPLICATED_RULESET,
+ CEPH_DEFAULT_CRUSH_ERASURE_RULESET,
};
#define OSD_REP_PRIMARY 0
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
pi->size = g_conf->osd_pool_default_size;
pi->min_size = g_conf->get_osd_pool_default_min_size();
- if (crush_ruleset >= 0)
+ if (crush_ruleset >= 0) {
pi->crush_ruleset = crush_ruleset;
- else
- pi->crush_ruleset =
- CrushWrapper::get_osd_pool_default_crush_replicated_ruleset(g_ceph_context);
+ } 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->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);
./ceph osd pool create poolA 12 12 erasure 2>&1 | grep 'must be a JSON object'
kill_mon
+# explicitly set the default erasure crush rule
+expected=88
+run_mon --osd_pool_default_crush_erasure_ruleset $expected
+./ceph --format json osd dump | grep '"crush_ruleset":'$expected && exit 1
+./ceph osd pool create pool_erasure 12 12 erasure
+./ceph --format json osd dump | grep '"crush_ruleset":'$expected
+kill_mon
+
expected='"foo":"bar"'
# osd_pool_default_erasure_code_properties is JSON
run_mon --osd_pool_default_erasure_code_properties "{$expected}"