summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoic Dachary <loic@dachary.org>2013-08-29 15:07:30 +0200
committerLoic Dachary <loic@dachary.org>2013-09-10 16:46:22 +0200
commit63867e941f2be7712391f51fddb9f5a4b76add6d (patch)
treed74820437f8876a9ee1e2c91f1eaefdabae251cc
parent9a820105849a0fa51b5753965941b1143035cd6e (diff)
downloadceph-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.cc8
-rw-r--r--src/osd/ErasureCodePluginJerasure/ErasureCodeJerasure.h9
-rw-r--r--src/test/osd/TestErasureCodeJerasure.cc1
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> &parameters);
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);