]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
erasure-code: implement 'crush-device-class' ec profile property
authorSage Weil <sage@redhat.com>
Fri, 30 Jun 2017 19:56:57 +0000 (15:56 -0400)
committerSage Weil <sage@redhat.com>
Thu, 6 Jul 2017 19:01:03 +0000 (15:01 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
qa/workunits/mon/crush_ops.sh
src/erasure-code/ErasureCode.cc
src/erasure-code/ErasureCode.h

index 8ef49acf638589c1b459c553e1302608610b1ceb..dcd1909533371151086f40b9afca74642a4e3b5a 100755 (executable)
@@ -26,6 +26,10 @@ ceph osd crush set-device-class osd.1 hdd
 ceph osd crush rule create-replicated foo-ssd default host ssd
 ceph osd crush rule create-replicated foo-hdd default host hdd
 
+ceph osd erasure-code-profile set ec-foo-ssd crush-device-class=ssd m=2 k=2
+ceph osd pool create ec-foo 2 erasure ec-foo-ssd
+ceph osd pool rm ec-foo ec-foo --yes-i-really-really-mean-it
+
 ceph osd crush rule ls | grep foo
 
 ceph osd crush rule rm foo
index 4c5021ee91f1a7fcc7e828051685bd3a4cae76a2..c37adedb6c79a3c788910569cc754122688c560e 100644 (file)
@@ -43,6 +43,9 @@ int ErasureCode::init(
   err |= to_string("crush-failure-domain", profile,
                   &rule_failure_domain,
                   DEFAULT_RULE_FAILURE_DOMAIN, ss);
+  err |= to_string("crush-device-class", profile,
+                  &rule_device_class,
+                  "", ss);
   if (err)
     return err;
   _profile = profile;
@@ -58,7 +61,7 @@ int ErasureCode::create_rule(
     name,
     rule_root,
     rule_failure_domain,
-    "",
+    rule_device_class,
     "indep",
     pg_pool_t::TYPE_ERASURE,
     ss);
index bce77e68b6668540ec5fdbcd00428d5ceb864423..fc79cf03a44aef3cd76734559e26032f312c9a9e 100644 (file)
@@ -36,6 +36,7 @@ namespace ceph {
     // for CRUSH rule
     std::string rule_root;
     std::string rule_failure_domain;
+    std::string rule_device_class;
 
     ~ErasureCode() override {}