From: Loic Dachary Date: Sun, 16 Mar 2014 20:11:56 +0000 (+0100) Subject: mon: set the profile and ruleset defaults early X-Git-Tag: v0.79~136^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f8aa1edae8d90fce4f5c6943f0f96d7b7b254ad1;p=ceph.git mon: set the profile and ruleset defaults early The poolstr is removed from the prepare_pool_crush_ruleset prototype because it no longer decides for the default ruleset, if it is not omitted by the caller of osd pool create. If no profile profile = default If no ruleset and profile is default ruleset = erasure-code If no ruleset and profile is not default ruleset = the name of the pool Signed-off-by: Loic Dachary --- diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index b6ab87bbbd63..a8a7b6ec9d5a 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -3062,8 +3062,7 @@ int OSDMonitor::prepare_pool_stripe_width(const unsigned pool_type, return err; } -int OSDMonitor::prepare_pool_crush_ruleset(const string &poolstr, - const unsigned pool_type, +int OSDMonitor::prepare_pool_crush_ruleset(const unsigned pool_type, const string &erasure_code_profile, const string &ruleset_name, int *crush_ruleset, @@ -4567,6 +4566,19 @@ done: string ruleset_name; cmd_getval(g_ceph_context, cmdmap, "ruleset", ruleset_name); + string erasure_code_profile; + cmd_getval(g_ceph_context, cmdmap, "erasure_code_profile", erasure_code_profile); + if (erasure_code_profile == "") + erasure_code_profile = "default"; + if (ruleset_name == "") { + if (erasure_code_profile == "default") { + ruleset_name = "erasure-code"; + } else { + dout(1) << "implicitly use ruleset named after the pool: " + << poolstr << dendl; + ruleset_name = poolstr; + } + } err = prepare_new_pool(poolstr, 0, // auid=0 for admin created pool -1, // default crush rule diff --git a/src/mon/OSDMonitor.h b/src/mon/OSDMonitor.h index 1d781b81b0d9..afc08f0c7983 100644 --- a/src/mon/OSDMonitor.h +++ b/src/mon/OSDMonitor.h @@ -250,8 +250,7 @@ private: int get_erasure_code(const string &erasure_code_profile, ErasureCodeInterfaceRef *erasure_code, stringstream &ss); - int prepare_pool_crush_ruleset(const string &poolstr, - const unsigned pool_type, + int prepare_pool_crush_ruleset(const unsigned pool_type, const string &erasure_code_profile, const string &ruleset_name, int *crush_ruleset,