]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: always load erasure plugins from the configured directory
authorSage Weil <sage@redhat.com>
Fri, 21 Aug 2015 19:54:23 +0000 (15:54 -0400)
committerSage Weil <sage@redhat.com>
Fri, 21 Aug 2015 20:03:30 +0000 (16:03 -0400)
Ignore the profile 'directory' field.

This ensures that we can always find plugins even when teh cluster
is installed across a mix of distros.

Rename the option to have no osd_ (or mon_) prefix since anybody
may use the ec factory/plugin code.

We still hard-code .libs in the unit tests... sigh.

Signed-off-by: Sage Weil <sage@redhat.com>
38 files changed:
qa/workunits/ceph-helpers.sh
src/ceph_mon.cc
src/ceph_osd.cc
src/common/config_opts.h
src/erasure-code/ErasureCodePlugin.cc
src/erasure-code/ErasureCodePlugin.h
src/erasure-code/isa/ErasureCodePluginIsa.cc
src/erasure-code/jerasure/ErasureCodePluginJerasure.cc
src/erasure-code/jerasure/ErasureCodePluginSelectJerasure.cc
src/erasure-code/lrc/ErasureCodeLrc.cc
src/erasure-code/lrc/ErasureCodeLrc.h
src/erasure-code/lrc/ErasureCodePluginLrc.cc
src/erasure-code/shec/ErasureCodePluginSelectShec.cc
src/erasure-code/shec/ErasureCodePluginShec.cc
src/mon/OSDMonitor.cc
src/osd/OSDMap.cc
src/osd/PGBackend.cc
src/test/ceph-disk.sh
src/test/erasure-code/ErasureCodePluginExample.cc
src/test/erasure-code/TestErasureCode.cc
src/test/erasure-code/TestErasureCodeExample.cc
src/test/erasure-code/TestErasureCodeIsa.cc
src/test/erasure-code/TestErasureCodeJerasure.cc
src/test/erasure-code/TestErasureCodeLrc.cc
src/test/erasure-code/TestErasureCodePlugin.cc
src/test/erasure-code/TestErasureCodePluginIsa.cc
src/test/erasure-code/TestErasureCodePluginJerasure.cc
src/test/erasure-code/TestErasureCodePluginLrc.cc
src/test/erasure-code/TestErasureCodePluginShec.cc
src/test/erasure-code/TestErasureCodeShec.cc
src/test/erasure-code/TestErasureCodeShec_all.cc
src/test/erasure-code/TestErasureCodeShec_arguments.cc
src/test/erasure-code/TestErasureCodeShec_thread.cc
src/test/erasure-code/ceph_erasure_code.cc
src/test/erasure-code/ceph_erasure_code_benchmark.cc
src/test/erasure-code/ceph_erasure_code_non_regression.cc
src/test/mon/mkfs.sh
src/vstart.sh

index de44b239f1fb19e14c78e952d9e83dccd392fe07..5ee290962c30a582b592217d7916306514116f44 100755 (executable)
@@ -298,7 +298,7 @@ function run_mon() {
         --mon-data-avail-crit=1 \
         --paxos-propose-interval=0.1 \
         --osd-crush-chooseleaf-type=0 \
-        --osd-pool-default-erasure-code-directory=.libs \
+        --erasure-code-dir=.libs \
         --debug-mon 20 \
         --debug-ms 20 \
         --debug-paxos 20 \
@@ -492,7 +492,7 @@ function activate_osd() {
     ceph_args+=" --osd-journal-size=100"
     ceph_args+=" --osd-data=$osd_data"
     ceph_args+=" --chdir="
-    ceph_args+=" --osd-pool-default-erasure-code-directory=.libs"
+    ceph_args+=" --erasure-code-dir=.libs"
     ceph_args+=" --osd-class-dir=.libs"
     ceph_args+=" --run-dir=$dir"
     ceph_args+=" --debug-osd=20"
index dcb07de615dd0382ace8ce5d0862c7be8b6e4e0c..3180b656e15d44cc5a6c2a96bf4751115afe60c4 100644 (file)
@@ -188,12 +188,12 @@ void usage()
 
 int preload_erasure_code()
 {
-  string directory = g_conf->osd_pool_default_erasure_code_directory;
   string plugins = g_conf->osd_erasure_code_plugins;
   stringstream ss;
-  int r = ErasureCodePluginRegistry::instance().preload(plugins,
-                                                       directory,
-                                                       &ss);
+  int r = ErasureCodePluginRegistry::instance().preload(
+    plugins,
+    g_conf->erasure_code_dir,
+    &ss);
   if (r)
     derr << ss.str() << dendl;
   else
index c5a369024b8f24f6a33fd4925cfa34a79776b8ea..16b7383569f2e20237074504b69dd5f56132713b 100644 (file)
@@ -83,12 +83,12 @@ void usage()
 
 int preload_erasure_code()
 {
-  string directory = g_conf->osd_pool_default_erasure_code_directory;
   string plugins = g_conf->osd_erasure_code_plugins;
   stringstream ss;
-  int r = ErasureCodePluginRegistry::instance().preload(plugins,
-                                                       directory,
-                                                       &ss);
+  int r = ErasureCodePluginRegistry::instance().preload(
+    plugins,
+    g_conf->erasure_code_dir,
+    &ss);
   if (r)
     derr << ss.str() << dendl;
   else
index d30e15e3428a944daae1d99ff0e7deaa29284c02..3898a790da66f2a7d216a92d4305fe9c626470c6 100644 (file)
@@ -35,6 +35,7 @@ OPTION(max_open_files, OPT_LONGLONG, 0)
 OPTION(restapi_log_level, OPT_STR, "")         // default set by Python code
 OPTION(restapi_base_url, OPT_STR, "")  // "
 OPTION(fatal_signal_handlers, OPT_BOOL, true)
+OPTION(erasure_code_dir, OPT_STR, CEPH_PKGLIBDIR"/erasure-code") // default location for erasure-code plugins
 
 OPTION(log_file, OPT_STR, "/var/log/ceph/$cluster-$name.log") // default changed by common_preinit()
 OPTION(log_max_new, OPT_INT, 1000) // default changed by common_preinit()
@@ -540,7 +541,6 @@ OPTION(osd_pool_default_size, OPT_INT, 3)
 OPTION(osd_pool_default_min_size, OPT_INT, 0)  // 0 means no specific default; ceph will use size-size/2
 OPTION(osd_pool_default_pg_num, OPT_INT, 8) // number of PGs for new pools. Configure in global or mon section of ceph.conf
 OPTION(osd_pool_default_pgp_num, OPT_INT, 8) // number of PGs for placement purposes. Should be equal to pg_num
-OPTION(osd_pool_default_erasure_code_directory, OPT_STR, CEPH_PKGLIBDIR"/erasure-code") // default for the erasure-code-directory=XXX property of osd pool create
 OPTION(osd_pool_default_erasure_code_profile,
        OPT_STR,
        "plugin=jerasure "
index efc4cddeb3c03ffcd6661b79f5d0d6dc1bfa0c01..74114eedff33a41c1786a671887f67ac2ae0888d 100644 (file)
@@ -84,6 +84,7 @@ ErasureCodePlugin *ErasureCodePluginRegistry::get(const std::string &name)
 }
 
 int ErasureCodePluginRegistry::factory(const std::string &plugin_name,
+                                      const std::string &directory,
                                       ErasureCodeProfile &profile,
                                       ErasureCodeInterfaceRef *erasure_code,
                                       ostream *ss)
@@ -94,15 +95,14 @@ int ErasureCodePluginRegistry::factory(const std::string &plugin_name,
     plugin = get(plugin_name);
     if (plugin == 0) {
       loading = true;
-      assert(profile.count("directory") != 0);
-      int r = load(plugin_name, profile.find("directory")->second, &plugin, ss);
+      int r = load(plugin_name, directory, &plugin, ss);
       loading = false;
       if (r != 0)
        return r;
     }
   }
 
-  int r = plugin->factory(profile, erasure_code, ss);
+  int r = plugin->factory(directory, profile, erasure_code, ss);
   if (r)
     return r;
   if (profile != (*erasure_code)->get_profile()) {
index 9da0a6efcfaa1d8977b767b9d00ca0efabfc3bb0..72c187bd01e8d2a36ea2efa27426f408b31736b0 100644 (file)
@@ -36,7 +36,8 @@ namespace ceph {
       library(0) {}
     virtual ~ErasureCodePlugin() {}
 
-    virtual int factory(ErasureCodeProfile &profile,
+    virtual int factory(const std::string &directory,
+                       ErasureCodeProfile &profile,
                         ErasureCodeInterfaceRef *erasure_code,
                        ostream *ss) = 0;
   };
@@ -58,6 +59,7 @@ namespace ceph {
     }
 
     int factory(const std::string &plugin,
+               const std::string &directory,
                ErasureCodeProfile &profile,
                ErasureCodeInterfaceRef *erasure_code,
                ostream *ss);
index 3c4b140823dbb203875eb37a93780c0c35a493b6..611d76b07706c7b3842aaa08b3625db167ac679e 100644 (file)
@@ -35,7 +35,8 @@ class ErasureCodePluginIsa : public ErasureCodePlugin {
 public:
   ErasureCodeIsaTableCache tcache;
 
-  virtual int factory(ErasureCodeProfile &profile,
+  virtual int factory(const std::string &directory,
+                     ErasureCodeProfile &profile,
                       ErasureCodeInterfaceRef *erasure_code,
                       ostream *ss)
   {
index 163b0c247cb98790264fbcb086f671bb00c10341..b3d03b56132aa4102332d951af7eba813248d89d 100644 (file)
@@ -31,7 +31,8 @@ static ostream& _prefix(std::ostream* _dout)
 
 class ErasureCodePluginJerasure : public ErasureCodePlugin {
 public:
-  virtual int factory(ErasureCodeProfile &profile,
+  virtual int factory(const std::string& directory,
+                     ErasureCodeProfile &profile,
                      ErasureCodeInterfaceRef *erasure_code,
                      ostream *ss) {
     ErasureCodeJerasure *interface;
index 0ac3132ae3327b0a5136581d1eead525aa9d4a2d..96c2280c539ff90e7ad622ad0901e541d6d7f577 100644 (file)
@@ -54,7 +54,8 @@ static string get_variant() {
 
 class ErasureCodePluginSelectJerasure : public ErasureCodePlugin {
 public:
-  virtual int factory(ErasureCodeProfile &profile,
+  virtual int factory(const std::string &directory,
+                     ErasureCodeProfile &profile,
                      ErasureCodeInterfaceRef *erasure_code,
                      ostream *ss) {
     ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
@@ -66,11 +67,13 @@ public:
       dout(10) << "jerasure-variant " 
               << profile.find("jerasure-variant")->second << dendl;
       ret = instance.factory(name + "_" + profile.find("jerasure-variant")->second,
+                            directory,
                             profile, erasure_code, ss);
     } else {
       string variant = get_variant();
       dout(10) << variant << " plugin" << dendl;
-      ret = instance.factory(name + "_" + variant, profile, erasure_code, ss);
+      ret = instance.factory(name + "_" + variant, directory,
+                            profile, erasure_code, ss);
     }
     return ret;
   }
index 003c696f4ff57b013b7d053bf0f30eb86bf0cf4f..ba8f26a7b71b3edc0e27cd80ee971e8471c21538 100644 (file)
@@ -228,6 +228,7 @@ int ErasureCodeLrc::layers_init(ostream *ss)
     if (layer.profile.find("directory") == layer.profile.end())
       layer.profile["directory"] = directory;
     int err = registry.factory(layer.profile["plugin"],
+                              directory,
                               layer.profile,
                               &layer.erasure_code,
                               ss);
index 0dbbde9b6c25ad24a7671a119736da3d91339f8a..ffc7748c0c91b11015610ca6db8519c1e884408e 100644 (file)
@@ -74,8 +74,9 @@ public:
   };
   vector<Step> ruleset_steps;
 
-  ErasureCodeLrc() :
-    chunk_count(0), data_chunk_count(0), ruleset_root("default")
+  ErasureCodeLrc(const std::string &dir)
+    : directory(dir),
+      chunk_count(0), data_chunk_count(0), ruleset_root("default")
   {
     ruleset_steps.push_back(Step("chooseleaf", "host", 0));
   }
index 0a52c9cedbfecacdc3a1fa28bae044ed3cf78109..4051e30793a0ef4d527cdb5b0e0627009761adae 100644 (file)
 
 class ErasureCodePluginLrc : public ErasureCodePlugin {
 public:
-  virtual int factory(ErasureCodeProfile &profile,
+  virtual int factory(const std::string &directory,
+                     ErasureCodeProfile &profile,
                      ErasureCodeInterfaceRef *erasure_code,
                      ostream *ss) {
     ErasureCodeLrc *interface;
-    interface = new ErasureCodeLrc();
+    interface = new ErasureCodeLrc(directory);
     assert(profile.count("directory") != 0);
     int r = interface->init(profile, ss);
     if (r) {
index 1bae15f647035fdccee0ba4af754a14141f7a19a..3a4f74eb6a79bee5ce9234de3200a0c651785539 100644 (file)
@@ -58,7 +58,8 @@ static string get_variant() {
 
 class ErasureCodePluginSelectShec : public ErasureCodePlugin {
 public:
-  virtual int factory(ErasureCodeProfile &profile,
+  virtual int factory(const std::string &directory,
+                     ErasureCodeProfile &profile,
                      ErasureCodeInterfaceRef *erasure_code,
                      ostream *ss) {
     ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
@@ -70,11 +71,13 @@ public:
       dout(10) << "shec-variant "
               << profile.find("shec-variant")->second << dendl;
       ret = instance.factory(name + "_" + profile.find("shec-variant")->second,
+                            directory,
                             profile, erasure_code, ss);
     } else {
       string variant = get_variant();
       dout(10) << variant << " plugin" << dendl;
-      ret = instance.factory(name + "_" + variant, profile, erasure_code, ss);
+      ret = instance.factory(name + "_" + variant, directory,
+                            profile, erasure_code, ss);
     }
     return ret;
   }
index a56f2fbdc87c656d0851eb9a8f5b500b17310330..d2b72f5d56fee48f53c174d1edeb60949ad30d35 100644 (file)
@@ -37,7 +37,8 @@ class ErasureCodePluginShec : public ErasureCodePlugin {
 public:
   ErasureCodeShecTableCache tcache;
 
-  virtual int factory(ErasureCodeProfile &profile,
+  virtual int factory(const std::string &directory,
+                     ErasureCodeProfile &profile,
                      ErasureCodeInterfaceRef *erasure_code,
                      ostream *ss) {
     ErasureCodeShec *interface;
index 6c2893d0f503eb225ed00cabc14ba57bb67c12ed..9244820bed5a5314ecd5dd8e94502c29c006863b 100644 (file)
@@ -3994,7 +3994,9 @@ int OSDMonitor::normalize_profile(ErasureCodeProfile &profile, ostream *ss)
   ErasureCodeInterfaceRef erasure_code;
   ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
   ErasureCodeProfile::const_iterator plugin = profile.find("plugin");
-  int err = instance.factory(plugin->second, profile, &erasure_code, ss);
+  int err = instance.factory(plugin->second,
+                            g_conf->erasure_code_dir,
+                            profile, &erasure_code, ss);
   if (err)
     return err;
   return erasure_code->init(profile, ss);
@@ -4054,7 +4056,9 @@ int OSDMonitor::get_erasure_code(const string &erasure_code_profile,
     return -EINVAL;
   }
   ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
-  return instance.factory(plugin->second, profile, erasure_code, ss);
+  return instance.factory(plugin->second,
+                         g_conf->erasure_code_dir,
+                         profile, erasure_code, ss);
 }
 
 int OSDMonitor::check_cluster_features(uint64_t features,
@@ -4175,7 +4179,7 @@ int OSDMonitor::parse_erasure_code_profile(const vector<string> &erasure_code_pr
 
   if ((*erasure_code_profile_map).count("directory") == 0)
     (*erasure_code_profile_map)["directory"] =
-      g_conf->osd_pool_default_erasure_code_directory;
+      g_conf->erasure_code_dir;
 
   return 0;
 }
index 516796a10e2f664b52aef242f494c9320ca8038f..26e71615ab43a47fb740b99df7020115f13fb15b 100644 (file)
@@ -2719,7 +2719,7 @@ int OSDMap::get_erasure_code_profile_default(CephContext *cct,
                      *ss,
                      &profile_map);
   profile_map["directory"] =
-    cct->_conf->osd_pool_default_erasure_code_directory;
+    cct->_conf->erasure_code_dir;
   return r;
 }
 
index 08912bdb2802df67647110b8598e302bda60825e..f42e6bee02ed26de69a47bc953bab4cbf51ef3ac 100644 (file)
@@ -288,6 +288,7 @@ PGBackend *PGBackend::build_pg_backend(
     stringstream ss;
     ceph::ErasureCodePluginRegistry::instance().factory(
       profile.find("plugin")->second,
+      g_conf->erasure_code_dir,
       profile,
       &ec_impl,
       &ss);
index d2ccf83dff60b120fd240d1c32cb1ddd4ec0655e..c34600160c4f14472f55ff1f77f60238bca10568 100755 (executable)
@@ -46,7 +46,7 @@ CEPH_ARGS+=" --osd-failsafe-full-ratio=.99"
 CEPH_ARGS+=" --mon-host=$MONA"
 CEPH_ARGS+=" --log-file=$DIR/\$name.log"
 CEPH_ARGS+=" --pid-file=$DIR/\$name.pidfile"
-CEPH_ARGS+=" --osd-pool-default-erasure-code-directory=.libs"
+CEPH_ARGS+=" --erasure-code-dir=.libs"
 CEPH_ARGS+=" --auth-supported=none"
 CEPH_ARGS+=" --osd-journal-size=100"
 CEPH_DISK_ARGS=
index 5806fbd201fea774b9a2fb4adb6673b128b69191..adbda834eb899a8f896bea5c684471f894015b30 100644 (file)
@@ -23,7 +23,8 @@
 
 class ErasureCodePluginExample : public ErasureCodePlugin {
 public:
-  virtual int factory(ErasureCodeProfile &profile,
+  virtual int factory(const std::string &directory,
+                     ErasureCodeProfile &profile,
                       ErasureCodeInterfaceRef *erasure_code,
                      ostream *ss)
   {
index d6f98a92a1ff67dbc4821851863e9d2db6bbdb31..41404035570718e2150a8d40a2eae625caaeca2d 100644 (file)
@@ -20,6 +20,7 @@
 #include "erasure-code/ErasureCode.h"
 #include "common/ceph_argparse.h"
 #include "global/global_context.h"
+#include "common/config.h"
 #include "gtest/gtest.h"
 
 class ErasureCodeTest : public ErasureCode {
@@ -159,6 +160,8 @@ int main(int argc, char **argv)
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
index a02d96eb5f91f69e2697a96a203f33c94d4695ff..64ef5986cae1124dfc356a6a6bf957c2f88ae470 100644 (file)
@@ -240,6 +240,8 @@ int main(int argc, char **argv) {
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
index 11ec14ebfd7b8ac56881668e2163828fa82aab1a..84ad68e8b859b99aff0303d88ab75f6082391b1a 100644 (file)
@@ -24,6 +24,7 @@
 #include "erasure-code/isa/xor_op.h"
 #include "common/ceph_argparse.h"
 #include "global/global_context.h"
+#include "common/config.h"
 #include "gtest/gtest.h"
 
 ErasureCodeIsaTableCache tcache;
@@ -961,6 +962,8 @@ int main(int argc, char **argv)
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
index 47b28a02e2386815e85a4e41be4377ed7a7beffc..c028e32b43c93925590ba3ab95028cc737daeb7f 100644 (file)
@@ -23,6 +23,7 @@
 #include "erasure-code/jerasure/ErasureCodeJerasure.h"
 #include "common/ceph_argparse.h"
 #include "global/global_context.h"
+#include "common/config.h"
 #include "gtest/gtest.h"
 
 template <typename T>
@@ -363,6 +364,8 @@ int main(int argc, char **argv)
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
index 2d44a1e952e77cc7ff9aa4762497bc755a55dcea..405e074dc29ee83f9a7e65868fae76f586790212 100644 (file)
 #include "erasure-code/lrc/ErasureCodeLrc.h"
 #include "common/ceph_argparse.h"
 #include "global/global_context.h"
+#include "common/config.h"
 #include "gtest/gtest.h"
 
 TEST(ErasureCodeLrc, parse_ruleset)
 {
-  ErasureCodeLrc lrc;
+  ErasureCodeLrc lrc(g_conf->erasure_code_dir);
   EXPECT_EQ("default", lrc.ruleset_root);
   EXPECT_EQ("host", lrc.ruleset_steps.front().type);
 
@@ -128,7 +129,7 @@ TEST(ErasureCodeTest, create_ruleset)
     }
   }
 
-  ErasureCodeLrc lrc;
+  ErasureCodeLrc lrc(g_conf->erasure_code_dir);
   EXPECT_EQ(0, lrc.create_ruleset("rule1", *c, &cerr));
 
   ErasureCodeProfile profile;
@@ -169,7 +170,7 @@ TEST(ErasureCodeTest, create_ruleset)
 
 TEST(ErasureCodeLrc, parse_kml)
 {
-  ErasureCodeLrc lrc;
+  ErasureCodeLrc lrc(g_conf->erasure_code_dir);
   ErasureCodeProfile profile;
   EXPECT_EQ(0, lrc.parse_kml(profile, &cerr));
   profile["k"] = "4";
@@ -244,7 +245,7 @@ TEST(ErasureCodeLrc, parse_kml)
 
 TEST(ErasureCodeLrc, layers_description)
 {
-  ErasureCodeLrc lrc;
+  ErasureCodeLrc lrc(g_conf->erasure_code_dir);
   ErasureCodeProfile profile;
 
   json_spirit::mArray description;
@@ -273,7 +274,7 @@ TEST(ErasureCodeLrc, layers_description)
 TEST(ErasureCodeLrc, layers_parse)
 {
   {
-    ErasureCodeLrc lrc;
+    ErasureCodeLrc lrc(g_conf->erasure_code_dir);
     ErasureCodeProfile profile;
 
     const char *description_string ="[ 0 ]";
@@ -285,7 +286,7 @@ TEST(ErasureCodeLrc, layers_parse)
   }
 
   {
-    ErasureCodeLrc lrc;
+    ErasureCodeLrc lrc(g_conf->erasure_code_dir);
     ErasureCodeProfile profile;
 
     const char *description_string ="[ [ 0 ] ]";
@@ -297,7 +298,7 @@ TEST(ErasureCodeLrc, layers_parse)
   }
 
   {
-    ErasureCodeLrc lrc;
+    ErasureCodeLrc lrc(g_conf->erasure_code_dir);
     ErasureCodeProfile profile;
 
     const char *description_string ="[ [ \"\", 0 ] ]";
@@ -313,7 +314,7 @@ TEST(ErasureCodeLrc, layers_parse)
   // profile.
   //
   {
-    ErasureCodeLrc lrc;
+    ErasureCodeLrc lrc(g_conf->erasure_code_dir);
     ErasureCodeProfile profile;
 
     const char *description_string ="[ [ \"\", { \"a\": \"b\" }, \"ignored\" ] ]";
@@ -329,7 +330,7 @@ TEST(ErasureCodeLrc, layers_parse)
   // profile.
   //
   {
-    ErasureCodeLrc lrc;
+    ErasureCodeLrc lrc(g_conf->erasure_code_dir);
     ErasureCodeProfile profile;
 
     const char *description_string ="[ [ \"\", \"a=b c=d\" ] ]";
@@ -346,7 +347,7 @@ TEST(ErasureCodeLrc, layers_parse)
 TEST(ErasureCodeLrc, layers_sanity_checks)
 {
   {
-    ErasureCodeLrc lrc;
+    ErasureCodeLrc lrc(g_conf->erasure_code_dir);
     ErasureCodeProfile profile;
     profile["mapping"] =
            "__DDD__DD";
@@ -361,7 +362,7 @@ TEST(ErasureCodeLrc, layers_sanity_checks)
     EXPECT_EQ(0, lrc.init(profile, &cerr));
   }
   {
-    ErasureCodeLrc lrc;
+    ErasureCodeLrc lrc(g_conf->erasure_code_dir);
     ErasureCodeProfile profile;
     const char *description_string =
       "[ "
@@ -370,7 +371,7 @@ TEST(ErasureCodeLrc, layers_sanity_checks)
     EXPECT_EQ(ERROR_LRC_MAPPING, lrc.init(profile, &cerr));
   }
   {
-    ErasureCodeLrc lrc;
+    ErasureCodeLrc lrc(g_conf->erasure_code_dir);
     ErasureCodeProfile profile;
     profile["mapping"] = "";
     const char *description_string =
@@ -380,7 +381,7 @@ TEST(ErasureCodeLrc, layers_sanity_checks)
     EXPECT_EQ(ERROR_LRC_LAYERS_COUNT, lrc.init(profile, &cerr));
   }
   {
-    ErasureCodeLrc lrc;
+    ErasureCodeLrc lrc(g_conf->erasure_code_dir);
     ErasureCodeProfile profile;
     profile["directory"] = ".libs";
     profile["mapping"] =
@@ -399,7 +400,7 @@ TEST(ErasureCodeLrc, layers_sanity_checks)
 TEST(ErasureCodeLrc, layers_init)
 {
   {
-    ErasureCodeLrc lrc;
+    ErasureCodeLrc lrc(g_conf->erasure_code_dir);
     ErasureCodeProfile profile;
 
     const char *description_string =
@@ -421,7 +422,7 @@ TEST(ErasureCodeLrc, layers_init)
 
 TEST(ErasureCodeLrc, init)
 {
-  ErasureCodeLrc lrc;
+  ErasureCodeLrc lrc(g_conf->erasure_code_dir);
   ErasureCodeProfile profile;
   profile["mapping"] =
     "__DDD__DD";
@@ -438,7 +439,7 @@ TEST(ErasureCodeLrc, init)
 
 TEST(ErasureCodeLrc, init_kml)
 {
-  ErasureCodeLrc lrc;
+  ErasureCodeLrc lrc(g_conf->erasure_code_dir);
   ErasureCodeProfile profile;
   profile["k"] = "4";
   profile["m"] = "2";
@@ -452,7 +453,7 @@ TEST(ErasureCodeLrc, minimum_to_decode)
 {
   // trivial : no erasures, the minimum is want_to_read
   {
-    ErasureCodeLrc lrc;
+    ErasureCodeLrc lrc(g_conf->erasure_code_dir);
     ErasureCodeProfile profile;
     profile["mapping"] =
       "__DDD__DD";
@@ -476,7 +477,7 @@ TEST(ErasureCodeLrc, minimum_to_decode)
   }
   // locally repairable erasure
   {
-    ErasureCodeLrc lrc;
+    ErasureCodeLrc lrc(g_conf->erasure_code_dir);
     ErasureCodeProfile profile;
     profile["mapping"] =
            "__DDD__DD_";
@@ -527,7 +528,7 @@ TEST(ErasureCodeLrc, minimum_to_decode)
   }
   // implicit parity required
   {
-    ErasureCodeLrc lrc;
+    ErasureCodeLrc lrc(g_conf->erasure_code_dir);
     ErasureCodeProfile profile;
     profile["mapping"] =
            "__DDD__DD";
@@ -606,7 +607,7 @@ TEST(ErasureCodeLrc, minimum_to_decode)
 
 TEST(ErasureCodeLrc, encode_decode)
 {
-  ErasureCodeLrc lrc;
+  ErasureCodeLrc lrc(g_conf->erasure_code_dir);
   ErasureCodeProfile profile;
   profile["mapping"] =
     "__DD__DD";
@@ -737,7 +738,7 @@ TEST(ErasureCodeLrc, encode_decode)
 
 TEST(ErasureCodeLrc, encode_decode_2)
 {
-  ErasureCodeLrc lrc;
+  ErasureCodeLrc lrc(g_conf->erasure_code_dir);
   ErasureCodeProfile profile;
   profile["mapping"] =
     "DD__DD__";
@@ -922,6 +923,8 @@ int main(int argc, char **argv)
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
index ee620a280b4346e795a23dd6416f812936341602..130682744742d636eccdff120caf56340271d828 100644 (file)
@@ -22,6 +22,7 @@
 #include "erasure-code/ErasureCodePlugin.h"
 #include "common/ceph_argparse.h"
 #include "global/global_context.h"
+#include "common/config.h"
 #include "gtest/gtest.h"
 
 class ErasureCodePluginRegistryTest : public ::testing::Test {
@@ -34,7 +35,9 @@ protected:
       profile["directory"] = ".libs";
       ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
       ErasureCodeInterfaceRef erasure_code;
-      instance.factory("hangs", profile, &erasure_code, &cerr);
+      instance.factory("hangs",
+                      g_conf->erasure_code_dir,
+                      profile, &erasure_code, &cerr);
       return NULL;
     }
   };
@@ -77,21 +80,33 @@ TEST_F(ErasureCodePluginRegistryTest, all)
   ErasureCodeInterfaceRef erasure_code;
   ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
   EXPECT_FALSE(erasure_code);
-  EXPECT_EQ(-EIO, instance.factory("invalid", profile, &erasure_code, &cerr));
+  EXPECT_EQ(-EIO, instance.factory("invalid",
+                                  g_conf->erasure_code_dir,
+                                  profile, &erasure_code, &cerr));
   EXPECT_FALSE(erasure_code);
-  EXPECT_EQ(-EXDEV, instance.factory("missing_version", profile,
+  EXPECT_EQ(-EXDEV, instance.factory("missing_version",
+                                    g_conf->erasure_code_dir,
+                                    profile,
                                     &erasure_code, &cerr));
   EXPECT_FALSE(erasure_code);
-  EXPECT_EQ(-ENOENT, instance.factory("missing_entry_point", profile,
+  EXPECT_EQ(-ENOENT, instance.factory("missing_entry_point",
+                                     g_conf->erasure_code_dir,
+                                     profile,
                                      &erasure_code, &cerr));
   EXPECT_FALSE(erasure_code);
-  EXPECT_EQ(-ESRCH, instance.factory("fail_to_initialize", profile,
+  EXPECT_EQ(-ESRCH, instance.factory("fail_to_initialize",
+                                    g_conf->erasure_code_dir,
+                                    profile,
                                     &erasure_code, &cerr));
   EXPECT_FALSE(erasure_code);
-  EXPECT_EQ(-EBADF, instance.factory("fail_to_register", profile,
+  EXPECT_EQ(-EBADF, instance.factory("fail_to_register",
+                                    g_conf->erasure_code_dir,
+                                    profile,
                                     &erasure_code, &cerr));
   EXPECT_FALSE(erasure_code);
-  EXPECT_EQ(0, instance.factory("example", profile, &erasure_code, &cerr));
+  EXPECT_EQ(0, instance.factory("example",
+                               g_conf->erasure_code_dir,
+                               profile, &erasure_code, &cerr));
   EXPECT_TRUE(erasure_code.get());
   ErasureCodePlugin *plugin = 0;
   {
@@ -110,6 +125,8 @@ int main(int argc, char **argv) {
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
index a07b387f1584d2f0b8f0e44bc9eaeee1912973bd..7207bf415cfb991c77f0e50c0cfa062a85c95933 100644 (file)
@@ -19,6 +19,7 @@
 #include "erasure-code/ErasureCodePlugin.h"
 #include "common/ceph_argparse.h"
 #include "global/global_context.h"
+#include "common/config.h"
 #include "gtest/gtest.h"
 
 TEST(ErasureCodePlugin, factory)
@@ -29,8 +30,10 @@ TEST(ErasureCodePlugin, factory)
   {
     ErasureCodeInterfaceRef erasure_code;
     EXPECT_FALSE(erasure_code);
-    EXPECT_EQ(-EIO, instance.factory("no-isa", profile,
-                                        &erasure_code, &cerr));
+    EXPECT_EQ(-EIO, instance.factory("no-isa",
+                                    g_conf->erasure_code_dir,
+                                    profile,
+                                    &erasure_code, &cerr));
     EXPECT_FALSE(erasure_code);
   }
   const char *techniques[] = {
@@ -41,7 +44,9 @@ TEST(ErasureCodePlugin, factory)
     ErasureCodeInterfaceRef erasure_code;
     profile["technique"] = *technique;
     EXPECT_FALSE(erasure_code);
-    EXPECT_EQ(0, instance.factory("isa", profile,
+    EXPECT_EQ(0, instance.factory("isa",
+                                 g_conf->erasure_code_dir,
+                                 profile,
                                   &erasure_code, &cerr));
     EXPECT_TRUE(erasure_code.get());
   }
@@ -55,6 +60,8 @@ int main(int argc, char **argv)
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
index 4c4ed1ed975baf198854caa02dc1efa04745f953..86df90d0076f196ba9b902c366449a5a42c1622c 100644 (file)
@@ -23,6 +23,7 @@
 #include "erasure-code/ErasureCodePlugin.h"
 #include "common/ceph_argparse.h"
 #include "global/global_context.h"
+#include "common/config.h"
 #include "gtest/gtest.h"
 
 TEST(ErasureCodePlugin, factory)
@@ -33,7 +34,9 @@ TEST(ErasureCodePlugin, factory)
   {
     ErasureCodeInterfaceRef erasure_code;
     EXPECT_FALSE(erasure_code);
-    EXPECT_EQ(-ENOENT, instance.factory("jerasure", profile,
+    EXPECT_EQ(-ENOENT, instance.factory("jerasure",
+                                       g_conf->erasure_code_dir,
+                                       profile,
                                         &erasure_code, &cerr));
     EXPECT_FALSE(erasure_code);
   }
@@ -53,7 +56,9 @@ TEST(ErasureCodePlugin, factory)
     profile["directory"] = ".libs";
     profile["technique"] = *technique;
     EXPECT_FALSE(erasure_code);
-    EXPECT_EQ(0, instance.factory("jerasure", profile,
+    EXPECT_EQ(0, instance.factory("jerasure",
+                                 g_conf->erasure_code_dir,
+                                 profile,
                                   &erasure_code, &cerr));
     EXPECT_TRUE(erasure_code.get());
   }
@@ -91,7 +96,9 @@ TEST(ErasureCodePlugin, select)
 
     ErasureCodeInterfaceRef erasure_code;
     int sse4_side_effect = -444;
-    EXPECT_EQ(sse4_side_effect, instance.factory("jerasure", profile,
+    EXPECT_EQ(sse4_side_effect, instance.factory("jerasure",
+                                                g_conf->erasure_code_dir,
+                                                profile,
                                                  &erasure_code, &cerr));
   }
   // pclmul is missing, load the SSE3 plugin
@@ -106,7 +113,9 @@ TEST(ErasureCodePlugin, select)
 
     ErasureCodeInterfaceRef erasure_code;
     int sse3_side_effect = -333;
-    EXPECT_EQ(sse3_side_effect, instance.factory("jerasure", profile,
+    EXPECT_EQ(sse3_side_effect, instance.factory("jerasure",
+                                                g_conf->erasure_code_dir,
+                                                profile,
                                                  &erasure_code, &cerr));
   }
   // pclmul and sse3 are missing, load the generic plugin
@@ -121,7 +130,9 @@ TEST(ErasureCodePlugin, select)
 
     ErasureCodeInterfaceRef erasure_code;
     int generic_side_effect = -111;
-    EXPECT_EQ(generic_side_effect, instance.factory("jerasure", profile,
+    EXPECT_EQ(generic_side_effect, instance.factory("jerasure",
+                                                   g_conf->erasure_code_dir,
+                                                   profile,
                                                    &erasure_code, &cerr));
   }
   // neon is set, load the neon plugin
@@ -136,7 +147,9 @@ TEST(ErasureCodePlugin, select)
 
     ErasureCodeInterfaceRef erasure_code;
     int generic_side_effect = -555;
-    EXPECT_EQ(generic_side_effect, instance.factory("jerasure", profile,
+    EXPECT_EQ(generic_side_effect, instance.factory("jerasure",
+                                                   g_conf->erasure_code_dir,
+                                                   profile,
                                                    &erasure_code, &cerr));
   }
 
@@ -199,7 +212,9 @@ TEST(ErasureCodePlugin, sse)
     //
     ErasureCodeInterfaceRef erasure_code;
     EXPECT_FALSE(erasure_code);
-    EXPECT_EQ(0, instance.factory("jerasure_" + *sse_variant, profile,
+    EXPECT_EQ(0, instance.factory("jerasure_" + *sse_variant,
+                                 g_conf->erasure_code_dir,
+                                 profile,
                                   &erasure_code, &cerr));
     EXPECT_TRUE(erasure_code.get());
 
@@ -245,6 +260,8 @@ int main(int argc, char **argv)
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
index c6909e6e1dd81bfbc51ef63c172ce4504b44cda3..df3c09f0aad2c3632b734539bbd83e52423bdb40 100644 (file)
@@ -22,6 +22,7 @@
 #include "erasure-code/ErasureCodePlugin.h"
 #include "common/ceph_argparse.h"
 #include "global/global_context.h"
+#include "common/config.h"
 #include "gtest/gtest.h"
 
 TEST(ErasureCodePlugin, factory)
@@ -33,7 +34,9 @@ TEST(ErasureCodePlugin, factory)
   profile["layers"] = "[ [ \"DDc\", \"\" ] ]";
   ErasureCodeInterfaceRef erasure_code;
   EXPECT_FALSE(erasure_code);
-  EXPECT_EQ(0, instance.factory("lrc", profile, &erasure_code, &cerr));
+  EXPECT_EQ(0, instance.factory("lrc",
+                               g_conf->erasure_code_dir,
+                               profile, &erasure_code, &cerr));
   EXPECT_TRUE(erasure_code.get());
 }
 
@@ -45,6 +48,8 @@ int main(int argc, char **argv)
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
index da3ed67d3bf5cd444ab419542841703da830456b..f0307c33fd542071984785700618f6bf479e4e4f 100644 (file)
@@ -24,6 +24,7 @@
 #include "erasure-code/ErasureCodePlugin.h"
 #include "common/ceph_argparse.h"
 #include "global/global_context.h"
+#include "common/config.h"
 #include "gtest/gtest.h"
 
 TEST(ErasureCodePlugin, factory)
@@ -34,8 +35,10 @@ TEST(ErasureCodePlugin, factory)
   {
     ErasureCodeInterfaceRef erasure_code;
     EXPECT_FALSE(erasure_code);
-    EXPECT_EQ(0, instance.factory("shec", profile,
-                                        &erasure_code, &cerr));
+    EXPECT_EQ(0, instance.factory("shec",
+                                 g_conf->erasure_code_dir,
+                                 profile,
+                                 &erasure_code, &cerr));
     EXPECT_TRUE(erasure_code.get());
   }
   const char *techniques[] = {
@@ -48,7 +51,9 @@ TEST(ErasureCodePlugin, factory)
     profile["directory"] = ".libs";
     profile["technique"] = *technique;
     EXPECT_FALSE(erasure_code);
-    EXPECT_EQ(0, instance.factory("shec", profile,
+    EXPECT_EQ(0, instance.factory("shec",
+                                 g_conf->erasure_code_dir,
+                                 profile,
                                   &erasure_code, &cerr));
     EXPECT_TRUE(erasure_code.get());
   }
@@ -86,7 +91,9 @@ TEST(ErasureCodePlugin, select)
 
     ErasureCodeInterfaceRef erasure_code;
     int sse4_side_effect = -444;
-    EXPECT_EQ(sse4_side_effect, instance.factory("shec", profile,
+    EXPECT_EQ(sse4_side_effect, instance.factory("shec",
+                                                g_conf->erasure_code_dir,
+                                                profile,
                                                  &erasure_code, &cerr));
   }
   // pclmul is missing, load the SSE3 plugin
@@ -101,7 +108,9 @@ TEST(ErasureCodePlugin, select)
 
     ErasureCodeInterfaceRef erasure_code;
     int sse3_side_effect = -333;
-    EXPECT_EQ(sse3_side_effect, instance.factory("shec", profile,
+    EXPECT_EQ(sse3_side_effect, instance.factory("shec",
+                                                g_conf->erasure_code_dir,
+                                                profile,
                                                  &erasure_code, &cerr));
   }
   // pclmul and sse3 are missing, load the generic plugin
@@ -116,7 +125,9 @@ TEST(ErasureCodePlugin, select)
 
     ErasureCodeInterfaceRef erasure_code;
     int generic_side_effect = -111;
-    EXPECT_EQ(generic_side_effect, instance.factory("shec", profile,
+    EXPECT_EQ(generic_side_effect, instance.factory("shec",
+                                                   g_conf->erasure_code_dir,
+                                                   profile,
                                                    &erasure_code, &cerr));
   }
   // neon is set, load the neon plugin
@@ -131,7 +142,9 @@ TEST(ErasureCodePlugin, select)
 
     ErasureCodeInterfaceRef erasure_code;
     int generic_side_effect = -555;
-    EXPECT_EQ(generic_side_effect, instance.factory("shec", profile,
+    EXPECT_EQ(generic_side_effect, instance.factory("shec",
+                                                   g_conf->erasure_code_dir,
+                                                   profile,
                                                    &erasure_code, &cerr));
   }
 
@@ -195,7 +208,9 @@ TEST(ErasureCodePlugin, sse)
     //
     ErasureCodeInterfaceRef erasure_code;
     EXPECT_FALSE(erasure_code);
-    EXPECT_EQ(0, instance.factory("shec_" + *sse_variant, profile,
+    EXPECT_EQ(0, instance.factory("shec_" + *sse_variant,
+                                 g_conf->erasure_code_dir,
+                                 profile,
                                   &erasure_code, &cerr));
     EXPECT_TRUE(erasure_code.get());
 
@@ -241,6 +256,8 @@ int main(int argc, char **argv)
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
index a810f9c91a6a98ef7706ea622ff88bec2ec49316..3029fde12fc7a112f7d0473c63362b67fbab6ef3 100644 (file)
@@ -2676,6 +2676,8 @@ int main(int argc, char **argv)
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
index 00e59e7d6a6340b5f68084775ca4b08c30e9c9bc..e968467a5a88aa026a1314fd250a85bb25158ab2 100644 (file)
@@ -297,6 +297,8 @@ int main(int argc, char **argv)
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
 
   r = RUN_ALL_TESTS();
index 572bfac498e734b22cd0d2f78f833dd16eeeb5fa..4f0e56e2dfb14bf73ce710703c5aedbb19e2f6c5 100644 (file)
@@ -396,6 +396,8 @@ int main(int argc, char **argv)
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
 
   create_table_shec432();
index 97846f5ccdbb86dc9115541f574c0ad6490a1395..529ec1b901c63bb6d2daed905402fd8081878e96 100644 (file)
@@ -93,6 +93,8 @@ int main(int argc, char **argv)
   global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0);
   common_init_finish(g_ceph_context);
 
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
+
   ::testing::InitGoogleTest(&argc, argv);
   return RUN_ALL_TESTS();
 }
index 2a88137904023a7b2991d68ef72f76fb9285f8fc..243818a5b546c4bd70d97ec07f5719d7041939a9 100644 (file)
@@ -128,7 +128,8 @@ int ErasureCodeCommand::plugin_exists() {
   ErasureCodePlugin *plugin = 0;
   Mutex::Locker l(instance.lock);
   stringstream ss;
-  int code = instance.load(vm["plugin_exists"].as<string>(), profile["directory"], &plugin, &ss);
+  int code = instance.load(vm["plugin_exists"].as<string>(),
+                          g_conf->erasure_code_dir, &plugin, &ss);
   if (code)
     cerr << ss.str() << endl;
   return code;
@@ -144,6 +145,7 @@ int ErasureCodeCommand::display_information() {
   }
 
   int code = instance.factory(profile["plugin"],
+                             g_conf->erasure_code_dir,
                              profile,
                              &erasure_code, &cerr);
   if (code)
index a1108630d0ec028a93faceaa11525165d8b45c38..0eb00e889bb50e474261061f4f215ba5c3cec99a 100644 (file)
@@ -155,7 +155,9 @@ int ErasureCodeBench::encode()
   ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
   ErasureCodeInterfaceRef erasure_code;
   stringstream messages;
-  int code = instance.factory(plugin, profile, &erasure_code, &messages);
+  int code = instance.factory(plugin,
+                             g_conf->erasure_code_dir,
+                             profile, &erasure_code, &messages);
   if (code) {
     cerr << messages.str() << endl;
     return code;
@@ -257,7 +259,9 @@ int ErasureCodeBench::decode()
   ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
   ErasureCodeInterfaceRef erasure_code;
   stringstream messages;
-  int code = instance.factory(plugin, profile, &erasure_code, &messages);
+  int code = instance.factory(plugin,
+                             g_conf->erasure_code_dir,
+                             profile, &erasure_code, &messages);
   if (code) {
     cerr << messages.str() << endl;
     return code;
index 5ef7c1932b9cc5011185a41448e99f8bc6da0a0d..054de7ec81c69342499250852ec8a0a931c82969 100644 (file)
@@ -99,6 +99,7 @@ int ErasureCodeNonRegression::setup(int argc, char** argv) {
     CINIT_FLAG_NO_DEFAULT_CONFIG_FILE);
   common_init_finish(g_ceph_context);
   g_ceph_context->_conf->apply_changes(NULL);
+  g_conf->set_val("erasure_code_dir", ".libs", false, false);
 
   if (vm.count("help")) {
     cout << desc << std::endl;
@@ -172,7 +173,9 @@ int ErasureCodeNonRegression::run_create()
   ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
   ErasureCodeInterfaceRef erasure_code;
   stringstream messages;
-  int code = instance.factory(plugin, profile, &erasure_code, &messages);
+  int code = instance.factory(plugin,
+                             g_conf->erasure_code_dir,
+                             profile, &erasure_code, &messages);
   if (code) {
     cerr << messages.str() << endl;
     return code;
@@ -242,7 +245,9 @@ int ErasureCodeNonRegression::run_check()
   ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
   ErasureCodeInterfaceRef erasure_code;
   stringstream messages;
-  int code = instance.factory(plugin, profile, &erasure_code, &messages);
+  int code = instance.factory(plugin,
+                             g_conf->erasure_code_dir,
+                             profile, &erasure_code, &messages);
   if (code) {
     cerr << messages.str() << endl;
     return code;
index e4be9210e1f48d2c475f93e76a2295c6ae99e383..68208b202919b46d3469307f085a1283ca6d4e95 100755 (executable)
@@ -42,7 +42,7 @@ function mon_mkfs() {
     ./ceph-mon \
         --id $MON_ID \
         --fsid $fsid \
-        --osd-pool-default-erasure-code-directory=.libs \
+        --erasure-code-dir=.libs \
         --mkfs \
         --mon-data=$MON_DIR \
         --mon-initial-members=$MON_ID \
@@ -56,7 +56,7 @@ function mon_run() {
         --chdir= \
         --mon-osd-full-ratio=.99 \
         --mon-data-avail-crit=1 \
-        --osd-pool-default-erasure-code-directory=.libs \
+        --erasure-code-dir=.libs \
         --mon-data=$MON_DIR \
         --log-file=$MON_DIR/log \
         --mon-cluster-log-file=$MON_DIR/log \
@@ -83,7 +83,7 @@ function auth_none() {
         --id $MON_ID \
         --mon-osd-full-ratio=.99 \
         --mon-data-avail-crit=1 \
-        --osd-pool-default-erasure-code-directory=.libs \
+        --erasure-code-dir=.libs \
         --mon-data=$MON_DIR \
         --extract-monmap $MON_DIR/monmap
 
@@ -150,7 +150,7 @@ function makedir() {
         --id $MON_ID \
         --mon-osd-full-ratio=.99 \
         --mon-data-avail-crit=1 \
-        --osd-pool-default-erasure-code-directory=.libs \
+        --erasure-code-dir=.libs \
         --mkfs \
         --mon-data=$toodeep 2>&1 | tee $DIR/makedir.log
     grep 'toodeep.*No such file' $DIR/makedir.log > /dev/null
index c0ca90c165cf9954c22e44d6f37ccad7ef602127..b55dd04823796ef8c7177609bb0dd213fc4f1c95 100755 (executable)
@@ -384,7 +384,7 @@ if [ "$start_mon" -eq 1 ]; then
         mon osd full ratio = .99
         mon data avail warn = 10
         mon data avail crit = 1
-        osd pool default erasure code directory = $EC_PATH
+        erasure code dir = $EC_PATH
         osd pool default erasure code profile = plugin=jerasure technique=reed_sol_van k=2 m=1 ruleset-failure-domain=osd
         rgw frontends = fastcgi, civetweb port=$CEPH_RGW_PORT
         rgw dns name = localhost