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_properties,
OPT_STR,
- "erasure-code-plugin=jerasure "
- "erasure-code-technique=reed_sol_van "
- "erasure-code-k=4 "
- "erasure-code-m=2 "
+ "plugin=jerasure "
+ "technique=reed_sol_van "
+ "k=2 "
+ "m=1 "
) // default properties of osd pool create
OPTION(osd_pool_default_flags, OPT_INT, 0) // default flags for new pools
OPTION(osd_pool_default_flag_hashpspool, OPT_BOOL, true) // use new pg hashing to prevent pool/pg overlap
const map<std::string,std::string> ¶meters,
ErasureCodePlugin **plugin)
{
- assert(parameters.count("erasure-code-directory") != 0);
- std::string fname = parameters.find("erasure-code-directory")->second
+ assert(parameters.count("directory") != 0);
+ std::string fname = parameters.find("directory")->second
+ "/" PLUGIN_PREFIX
+ plugin_name + PLUGIN_SUFFIX;
dout(10) << "load " << plugin_name << " from " << fname << dendl;
{
dout(10) << "technique=" << technique << dendl;
map<string,string>::const_iterator parameter;
- parameter = parameters.find("erasure-code-ruleset-root");
+ parameter = parameters.find("ruleset-root");
if (parameter != parameters.end())
ruleset_root = parameter->second;
- parameter = parameters.find("erasure-code-ruleset-failure-domain");
+ parameter = parameters.find("ruleset-failure-domain");
if (parameter != parameters.end())
ruleset_failure_domain = parameter->second;
parse(parameters);
void ErasureCodeJerasureReedSolomonVandermonde::parse(const map<std::string,std::string> ¶meters)
{
- k = to_int("erasure-code-k", parameters, DEFAULT_K);
- m = to_int("erasure-code-m", parameters, DEFAULT_M);
- w = to_int("erasure-code-w", parameters, DEFAULT_W);
+ k = to_int("k", parameters, DEFAULT_K);
+ m = to_int("m", parameters, DEFAULT_M);
+ w = to_int("w", parameters, DEFAULT_W);
if (w != 8 && w != 16 && w != 32) {
derr << "ReedSolomonVandermonde: w=" << w
<< " must be one of {8, 16, 32} : revert to 8 " << dendl;
void ErasureCodeJerasureReedSolomonRAID6::parse(const map<std::string,std::string> ¶meters)
{
- k = to_int("erasure-code-k", parameters, DEFAULT_K);
+ k = to_int("k", parameters, DEFAULT_K);
m = 2;
- w = to_int("erasure-code-w", parameters, DEFAULT_W);
+ w = to_int("w", parameters, DEFAULT_W);
if (w != 8 && w != 16 && w != 32) {
derr << "ReedSolomonRAID6: w=" << w
<< " must be one of {8, 16, 32} : revert to 8 " << dendl;
void ErasureCodeJerasureCauchy::parse(const map<std::string,std::string> ¶meters)
{
- k = to_int("erasure-code-k", parameters, DEFAULT_K);
- m = to_int("erasure-code-m", parameters, DEFAULT_M);
- w = to_int("erasure-code-w", parameters, DEFAULT_W);
- packetsize = to_int("erasure-code-packetsize", parameters, DEFAULT_PACKETSIZE);
+ k = to_int("k", parameters, DEFAULT_K);
+ m = to_int("m", parameters, DEFAULT_M);
+ w = to_int("w", parameters, DEFAULT_W);
+ packetsize = to_int("packetsize", parameters, DEFAULT_PACKETSIZE);
}
void ErasureCodeJerasureCauchy::prepare_schedule(int *matrix)
void ErasureCodeJerasureLiberation::parse(const map<std::string,std::string> ¶meters)
{
- k = to_int("erasure-code-k", parameters, DEFAULT_K);
- m = to_int("erasure-code-m", parameters, DEFAULT_M);
- w = to_int("erasure-code-w", parameters, DEFAULT_W);
- packetsize = to_int("erasure-code-packetsize", parameters, DEFAULT_PACKETSIZE);
+ k = to_int("k", parameters, DEFAULT_K);
+ m = to_int("m", parameters, DEFAULT_M);
+ w = to_int("w", parameters, DEFAULT_W);
+ packetsize = to_int("packetsize", parameters, DEFAULT_PACKETSIZE);
bool error = false;
if (k > w) {
//
void ErasureCodeJerasureLiber8tion::parse(const map<std::string,std::string> ¶meters)
{
- k = to_int("erasure-code-k", parameters, DEFAULT_K);
+ k = to_int("k", parameters, DEFAULT_K);
m = DEFAULT_M;
w = DEFAULT_W;
- packetsize = to_int("erasure-code-packetsize", parameters, DEFAULT_PACKETSIZE);
+ packetsize = to_int("packetsize", parameters, DEFAULT_PACKETSIZE);
bool error = false;
if (k > w) {
ErasureCodeInterfaceRef *erasure_code) {
ErasureCodeJerasure *interface;
std::string t;
- if (parameters.find("erasure-code-technique") != parameters.end())
- t = parameters.find("erasure-code-technique")->second;
+ if (parameters.find("technique") != parameters.end())
+ t = parameters.find("technique")->second;
if (t == "reed_sol_van") {
interface = new ErasureCodeJerasureReedSolomonVandermonde();
} else if (t == "reed_sol_r6_op") {
stringstream &ss)
{
map<string,string>::const_iterator plugin =
- properties.find("erasure-code-plugin");
- if (plugin == properties.end()) {
+ profile.find("plugin");
+ if (plugin == profile.end()) {
ss << "cannot determine the erasure code plugin"
<< " because erasure-code-plugin is not in the properties "
<< properties;
{
TypeParam jerasure;
map<std::string,std::string> parameters;
- parameters["erasure-code-k"] = "2";
- parameters["erasure-code-m"] = "2";
- parameters["erasure-code-w"] = "7";
- parameters["erasure-code-packetsize"] = "8";
+ parameters["k"] = "2";
+ parameters["m"] = "2";
+ parameters["w"] = "7";
+ parameters["packetsize"] = "8";
jerasure.init(parameters);
#define LARGE_ENOUGH 2048
{
TypeParam jerasure;
map<std::string,std::string> parameters;
- parameters["erasure-code-k"] = "2";
- parameters["erasure-code-m"] = "2";
- parameters["erasure-code-w"] = "7";
- parameters["erasure-code-packetsize"] = "8";
+ parameters["k"] = "2";
+ parameters["m"] = "2";
+ parameters["w"] = "7";
+ parameters["packetsize"] = "8";
jerasure.init(parameters);
//
{
ErasureCodeJerasureReedSolomonVandermonde jerasure;
map<std::string,std::string> parameters;
- parameters["erasure-code-k"] = "2";
- parameters["erasure-code-m"] = "2";
- parameters["erasure-code-w"] = "8";
+ parameters["k"] = "2";
+ parameters["m"] = "2";
+ parameters["w"] = "8";
jerasure.init(parameters);
unsigned alignment = jerasure.get_alignment();
stringstream ss;
ErasureCodeJerasureReedSolomonVandermonde jerasure;
map<std::string,std::string> parameters;
- parameters["erasure-code-k"] = "2";
- parameters["erasure-code-m"] = "2";
- parameters["erasure-code-w"] = "8";
+ parameters["k"] = "2";
+ parameters["m"] = "2";
+ parameters["w"] = "8";
jerasure.init(parameters);
int ruleset = jerasure.create_ruleset("myrule", *c, &ss);
EXPECT_EQ(0, ruleset);
stringstream ss;
ErasureCodeJerasureReedSolomonVandermonde jerasure;
map<std::string,std::string> parameters;
- parameters["erasure-code-k"] = "2";
- parameters["erasure-code-m"] = "2";
- parameters["erasure-code-w"] = "8";
- parameters["erasure-code-ruleset-root"] = "BAD";
+ parameters["k"] = "2";
+ parameters["m"] = "2";
+ parameters["w"] = "8";
+ parameters["ruleset-root"] = "BAD";
jerasure.init(parameters);
EXPECT_EQ(-ENOENT, jerasure.create_ruleset("otherrule", *c, &ss));
EXPECT_EQ("root item BAD does not exist", ss.str());
stringstream ss;
ErasureCodeJerasureReedSolomonVandermonde jerasure;
map<std::string,std::string> parameters;
- parameters["erasure-code-k"] = "2";
- parameters["erasure-code-m"] = "2";
- parameters["erasure-code-w"] = "8";
- parameters["erasure-code-ruleset-failure-domain"] = "WORSE";
+ parameters["k"] = "2";
+ parameters["m"] = "2";
+ parameters["w"] = "8";
+ parameters["ruleset-failure-domain"] = "WORSE";
jerasure.init(parameters);
EXPECT_EQ(-EINVAL, jerasure.create_ruleset("otherrule", *c, &ss));
EXPECT_EQ("unknown type WORSE", ss.str());
public:
virtual void *entry() {
map<std::string,std::string> parameters;
- parameters["erasure-code-directory"] = ".libs";
+ parameters["directory"] = ".libs";
ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
ErasureCodeInterfaceRef erasure_code;
instance.factory("hangs", parameters, &erasure_code);
TEST_F(ErasureCodePluginRegistryTest, all)
{
map<std::string,std::string> parameters;
- parameters["erasure-code-directory"] = ".libs";
+ parameters["directory"] = ".libs";
ErasureCodeInterfaceRef erasure_code;
ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
EXPECT_FALSE(erasure_code);
{
ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
map<std::string,std::string> parameters;
- parameters["erasure-code-directory"] = ".libs";
+ parameters["directory"] = ".libs";
{
ErasureCodeInterfaceRef erasure_code;
EXPECT_FALSE(erasure_code);
};
for(const char **technique = techniques; *technique; technique++) {
ErasureCodeInterfaceRef erasure_code;
- parameters["erasure-code-technique"] = *technique;
+ parameters["technique"] = *technique;
EXPECT_FALSE(erasure_code);
EXPECT_EQ(0, instance.factory("jerasure", parameters, &erasure_code));
EXPECT_TRUE(erasure_code);
}
}
- if (parameters.count("erasure-code-directory") == 0)
- parameters["erasure-code-directory"] = ".libs";
- if (parameters.count("erasure-code-plugin") == 0) {
- cerr << "--parameter erasure-code-plugin=<plugin> is mandatory" << endl;
+ if (parameters.count("directory") == 0)
+ parameters["directory"] = ".libs";
+ if (parameters.count("plugin") == 0) {
+ cerr << "--parameter plugin=<plugin> is mandatory" << endl;
return 1;
}
ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance();
instance.disable_dlclose = true;
ErasureCodeInterfaceRef erasure_code;
- int code = instance.factory(parameters["erasure-code-plugin"],
+ int code = instance.factory(parameters["plugin"],
parameters,
&erasure_code);
if (code)
* make -j4 ceph_erasure_code &&
* valgrind --tool=memcheck --leak-check=full \
* ./ceph_erasure_code \
- * --parameter erasure-code-plugin=jerasure \
- * --parameter erasure-code-directory=.libs \
- * --parameter erasure-code-technique=reed_sol_van \
- * --parameter erasure-code-k=2 \
- * --parameter erasure-code-m=2 \
+ * --parameter plugin=jerasure \
+ * --parameter directory=.libs \
+ * --parameter technique=reed_sol_van \
+ * --parameter k=2 \
+ * --parameter m=2 \
* --get_chunk_size 1024 \
* --get_data_chunk_count \
* --get_chunk_count \
}
}
- if (parameters.count("erasure-code-directory") == 0)
- parameters["erasure-code-directory"] = ".libs";
+ if (parameters.count("directory") == 0)
+ parameters["directory"] = ".libs";
in_size = vm["size"].as<int>();
max_iterations = vm["iterations"].as<int>();
int code = instance.factory(plugin, parameters, &erasure_code);
if (code)
return code;
- int k = atoi(parameters["erasure-code-k"].c_str());
- int m = atoi(parameters["erasure-code-m"].c_str());
+ int k = atoi(parameters["k"].c_str());
+ int m = atoi(parameters["m"].c_str());
bufferlist in;
in.append(string(in_size, 'X'));
int code = instance.factory(plugin, parameters, &erasure_code);
if (code)
return code;
- int k = atoi(parameters["erasure-code-k"].c_str());
- int m = atoi(parameters["erasure-code-m"].c_str());
+ int k = atoi(parameters["k"].c_str());
+ int m = atoi(parameters["m"].c_str());
bufferlist in;
in.append(string(in_size, 'X'));
* valgrind --tool=memcheck --leak-check=full \
* ./ceph_erasure_code_benchmark \
* --plugin jerasure \
- * --parameter erasure-code-directory=.libs \
- * --parameter erasure-code-technique=reed_sol_van \
- * --parameter erasure-code-k=2 \
- * --parameter erasure-code-m=2 \
+ * --parameter directory=.libs \
+ * --parameter technique=reed_sol_van \
+ * --parameter k=2 \
+ * --parameter m=2 \
* --iterations 1
* "
* End:
local dir=$1
# setting osd_pool_erasure_code_stripe_width modifies the stripe_width
# and it is padded as required by the default plugin
- properties+=" erasure-code-plugin=jerasure"
- properties+=" erasure-code-technique=reed_sol_van"
+ profile+=" plugin=jerasure"
+ profile+=" technique=reed_sol_van"
k=4
- properties+=" erasure-code-k=$k"
- properties+=" erasure-code-m=2"
+ profile+=" k=$k"
+ profile+=" m=2"
expected_chunk_size=2048
actual_stripe_width=$(($expected_chunk_size * $k))
desired_stripe_width=$(($actual_stripe_width - 1))