]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: set the profile and ruleset defaults early
authorLoic Dachary <loic@dachary.org>
Sun, 16 Mar 2014 20:11:56 +0000 (21:11 +0100)
committerLoic Dachary <loic@dachary.org>
Mon, 17 Mar 2014 23:23:42 +0000 (00:23 +0100)
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 <loic@dachary.org>
src/mon/OSDMonitor.cc
src/mon/OSDMonitor.h

index b6ab87bbbd63242833c22fc7ebbe7bcca84f9e43..a8a7b6ec9d5ad95f71f385b4da3a905c6e1def0f 100644 (file)
@@ -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
index 1d781b81b0d98f7ab0689832aab3e52d4ca7df2c..afc08f0c7983e986fdd1755846fb94397d4b437a 100644 (file)
@@ -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,