From: Sage Weil Date: Fri, 30 Jun 2017 19:56:57 +0000 (-0400) Subject: erasure-code: implement 'crush-device-class' ec profile property X-Git-Tag: v12.1.1~105^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8fb2517057971abdb75b829a4090b4eae597b15e;p=ceph.git erasure-code: implement 'crush-device-class' ec profile property Signed-off-by: Sage Weil --- diff --git a/qa/workunits/mon/crush_ops.sh b/qa/workunits/mon/crush_ops.sh index 8ef49acf6385..dcd190953337 100755 --- a/qa/workunits/mon/crush_ops.sh +++ b/qa/workunits/mon/crush_ops.sh @@ -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 diff --git a/src/erasure-code/ErasureCode.cc b/src/erasure-code/ErasureCode.cc index 4c5021ee91f1..c37adedb6c79 100644 --- a/src/erasure-code/ErasureCode.cc +++ b/src/erasure-code/ErasureCode.cc @@ -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); diff --git a/src/erasure-code/ErasureCode.h b/src/erasure-code/ErasureCode.h index bce77e68b666..fc79cf03a44a 100644 --- a/src/erasure-code/ErasureCode.h +++ b/src/erasure-code/ErasureCode.h @@ -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 {}