]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
erasure-code: control jerasure plugin variant selection
authorLoic Dachary <loic@dachary.org>
Fri, 30 May 2014 12:33:15 +0000 (14:33 +0200)
committerLoic Dachary <loic@dachary.org>
Mon, 4 Aug 2014 09:41:58 +0000 (11:41 +0200)
The jerasure-variant parameter is interpreted as the name of the plugin
variant to be loaded regardless of the available CPU features. The
values can be sse3, sse4, generic. It is undocumented and meant for
benchmarking purposes, primarily to force the generic plugin to be
loaded when the sse4 would be chosen.

Signed-off-by: Loic Dachary <loic@dachary.org>
src/erasure-code/jerasure/ErasureCodePluginSelectJerasure.cc

index 3d3ed3a9839bff5dbb2495195d71d5238bcee17a..b734bbbb0d8d442a8cec7cf5fcb48c3d4c9da0c1 100644 (file)
@@ -39,6 +39,12 @@ public:
     string name = "jerasure";
     if (parameters.count("jerasure-name"))
       name = parameters.find("jerasure-name")->second;
+    if (parameters.count("jerasure-variant")) {
+      dout(10) << "jerasure-variant " 
+              << parameters.find("jerasure-variant")->second << dendl;
+       ret = instance.factory(name + "_" + parameters.find("jerasure-variant")->second,
+                              parameters, erasure_code, ss);
+    } else {
     if (ceph_arch_intel_pclmul &&
        ceph_arch_intel_sse42 &&
        ceph_arch_intel_sse41 &&
@@ -56,6 +62,7 @@ public:
       dout(10) << "generic plugin" << dendl;
       ret = instance.factory(name + "_generic", parameters, erasure_code, ss);
     }
+    }
     if (ret)
       derr << ss.str() << dendl;
     return ret;