return -EINVAL;
}
} else if (var == "dedup_tier") {
+ // Current base tier in dedup does not support ec pool
+ if (p.is_erasure()) {
+ ss << "pool '" << poolstr
+ << "' is an ec pool, which cannot be a base tier";
+ return -ENOTSUP;
+ }
int64_t lowtierpool_id = osdmap.lookup_pg_pool_name(val);
if (lowtierpool_id < 0) {
ss << "unrecognized pool '" << val << "'";
}
const pg_pool_t *tp = osdmap.get_pg_pool(lowtierpool_id);
ceph_assert(tp);
- if (p.is_erasure()) {
- ss << "pool '" << poolstr
- << "' is an ec pool, which cannot be a tier";
- return -ENOTSUP;
- }
n = lowtierpool_id;
- interr.clear();
+ interr.clear();
} else if (var == "dedup_chunk_algorithm") {
if (!unset) {
auto alg = pg_pool_t::get_dedup_chunk_algorithm_from_str(val);
cluster.wait_for_latest_osdmap();
}
+TEST_F(LibRadosTwoPoolsECPP, TrySetDedupTier) {
+ // note: require >= mimic
+
+ bufferlist inbl;
+ ASSERT_EQ(-EOPNOTSUPP, cluster.mon_command(
+ set_pool_str(pool_name, "dedup_tier", cache_pool_name),
+ inbl, NULL, NULL));
+}
+
TEST_F(LibRadosTwoPoolsPP, PropagateBaseTierError) {
// write object to base tier
bufferlist omap_bl;