# clean up
ceph osd erasure-code-profile rm fooprofile
ceph osd erasure-code-profile rm barprofile
+
+ # try weird k and m values
+ expect_false ceph osd erasure-code-profile set badk k=1 m=1
+ expect_false ceph osd erasure-code-profile set badk k=1 m=2
+ expect_false ceph osd erasure-code-profile set badk k=0 m=2
+ expect_false ceph osd erasure-code-profile set badk k=-1 m=2
+ expect_false ceph osd erasure-code-profile set badm k=2 m=0
+ expect_false ceph osd erasure-code-profile set badm k=2 m=-1
+ ceph osd erasure-code-profile set good k=2 m=1
+ ceph osd erasure-code-profile rm good
}
function test_mon_osd_misc()
return ruleid;
}
-int ErasureCode::sanity_check_k(int k, ostream *ss)
+int ErasureCode::sanity_check_k_m(int k, int m, ostream *ss)
{
if (k < 2) {
*ss << "k=" << k << " must be >= 2" << std::endl;
return -EINVAL;
- } else {
- return 0;
}
+ if (m < 1) {
+ *ss << "m=" << m << " must be >= 1" << std::endl;
+ return -EINVAL;
+ }
+ return 0;
}
int ErasureCode::chunk_index(unsigned int i) const
CrushWrapper &crush,
std::ostream *ss) const override;
- int sanity_check_k(int k, std::ostream *ss);
+ int sanity_check_k_m(int k, int m, std::ostream *ss);
unsigned int get_coding_chunk_count() const override {
return get_chunk_count() - get_data_chunk_count();
err |= to_int("k", profile, &k, DEFAULT_K, ss);
err |= to_int("m", profile, &m, DEFAULT_M, ss);
- err |= sanity_check_k(k, ss);
+ err |= sanity_check_k_m(k, m, ss);
err |= to_int("d", profile, &d, std::to_string(k+m-1), ss);
int err = ErasureCode::parse(profile, ss);
err |= to_int("k", profile, &k, DEFAULT_K, ss);
err |= to_int("m", profile, &m, DEFAULT_M, ss);
- err |= sanity_check_k(k, ss);
+ err |= sanity_check_k_m(k, m, ss);
if (matrixtype == kVandermonde) {
// these are verified safe values evaluated using the
chunk_mapping.clear();
err = -EINVAL;
}
- err |= sanity_check_k(k, ss);
+ err |= sanity_check_k_m(k, m, ss);
return err;
}
" [ \"DD\", \"\" ], "
"]";
profile["layers"] = description_string;
- EXPECT_EQ(ERROR_LRC_MAPPING_SIZE, lrc.init(profile, &cerr));
+ EXPECT_EQ(-EINVAL, lrc.init(profile, &cerr));
}
}