diff options
author | Loic Dachary <loic@dachary.org> | 2013-08-29 15:07:30 +0200 |
---|---|---|
committer | Loic Dachary <loic@dachary.org> | 2013-09-10 16:46:22 +0200 |
commit | 63867e941f2be7712391f51fddb9f5a4b76add6d (patch) | |
tree | d74820437f8876a9ee1e2c91f1eaefdabae251cc | |
parent | 9a820105849a0fa51b5753965941b1143035cd6e (diff) | |
download | ceph-63867e941f2be7712391f51fddb9f5a4b76add6d.tar.gz |
ErasureCodeJerasure: define technique BlaumRoth
technique == "blaum_roth"
ErasureCodeInterface (abstract)
|
-> ErasureCodeJerasure (abstract)
|
-> ErasureCodeJerasureLiberation
|
-> ErasureCodeJerasureBlaumRoth
| == blaum_roth
Derived from Liberation it only overloads the prepare method to use
blaum_roth_coding_bitmatrix.
https://github.com/dachary/ceph/tree/wip-5879 refs #5879
Signed-off-by: Loic Dachary <loic@dachary.org>
-rw-r--r-- | src/osd/ErasureCodePluginJerasure/ErasureCodeJerasure.cc | 8 | ||||
-rw-r--r-- | src/osd/ErasureCodePluginJerasure/ErasureCodeJerasure.h | 9 | ||||
-rw-r--r-- | src/test/osd/TestErasureCodeJerasure.cc | 1 |
3 files changed, 18 insertions, 0 deletions
diff --git a/src/osd/ErasureCodePluginJerasure/ErasureCodeJerasure.cc b/src/osd/ErasureCodePluginJerasure/ErasureCodeJerasure.cc index 386a025d621..7fb95177779 100644 --- a/src/osd/ErasureCodePluginJerasure/ErasureCodeJerasure.cc +++ b/src/osd/ErasureCodePluginJerasure/ErasureCodeJerasure.cc @@ -349,3 +349,11 @@ void ErasureCodeJerasureLiberation::prepare() { bitmatrix = liberation_coding_bitmatrix(k, w); schedule = jerasure_smart_bitmatrix_to_schedule(k, m, w, bitmatrix); } + +// +// ErasureCodeJerasureBlaumRoth +// +void ErasureCodeJerasureBlaumRoth::prepare() { + bitmatrix = blaum_roth_coding_bitmatrix(k, w); + schedule = jerasure_smart_bitmatrix_to_schedule(k, m, w, bitmatrix); +} diff --git a/src/osd/ErasureCodePluginJerasure/ErasureCodeJerasure.h b/src/osd/ErasureCodePluginJerasure/ErasureCodeJerasure.h index 00f7599f1fd..ddf6c7dcfd1 100644 --- a/src/osd/ErasureCodePluginJerasure/ErasureCodeJerasure.h +++ b/src/osd/ErasureCodePluginJerasure/ErasureCodeJerasure.h @@ -200,4 +200,13 @@ public: virtual void parse(const map<std::string,std::string> ¶meters); virtual void prepare(); }; + +class ErasureCodeJerasureBlaumRoth : public ErasureCodeJerasureLiberation { +public: + ErasureCodeJerasureBlaumRoth() : + ErasureCodeJerasureLiberation("blaum_roth") + {} + + virtual void prepare(); +}; #endif diff --git a/src/test/osd/TestErasureCodeJerasure.cc b/src/test/osd/TestErasureCodeJerasure.cc index b46e1bd0d62..dfbd740e363 100644 --- a/src/test/osd/TestErasureCodeJerasure.cc +++ b/src/test/osd/TestErasureCodeJerasure.cc @@ -31,6 +31,7 @@ typedef ::testing::Types< ErasureCodeJerasureCauchyOrig, ErasureCodeJerasureCauchyGood, ErasureCodeJerasureLiberation, + ErasureCodeJerasureBlaumRoth, > JerasureTypes; TYPED_TEST_CASE(ErasureCodeTest, JerasureTypes); |