From: Joao Eduardo Luis Date: Wed, 2 Jul 2014 18:46:48 +0000 (+0100) Subject: mon: OSDMonitor: limit tier-specific pool set/get on non-tier pools X-Git-Tag: v0.84~118^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f131dfbaedf6f451572e7aa3a83f653912122953;p=ceph.git mon: OSDMonitor: limit tier-specific pool set/get on non-tier pools Fixes: 8696 Signed-off-by: Joao Eduardo Luis --- diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 71018d4e7e5a..95b086b99dea 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -2470,6 +2470,19 @@ bool OSDMonitor::preprocess_command(MMonCommand *m) string var; cmd_getval(g_ceph_context, cmdmap, "var", var); + if (!p->is_tier() && + (var == "hit_set_type" || var == "hit_set_period" || + var == "hit_set_count" || var == "hit_set_fpp" || + var == "target_max_objects" || var == "target_max_bytes" || + var == "cache_target_full_ratio" || + var == "cache_target_dirty_ratio" || + var == "cache_min_flush_age" || var == "cache_min_evict_age")) { + ss << "pool '" << poolstr + << "' is not a tier pool: variable not applicable"; + r = -EACCES; + goto reply; + } + if (f) { f->open_object_section("pool"); f->dump_string("pool", poolstr); @@ -3468,6 +3481,16 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, f = strict_strtod(val.c_str(), &floaterr); } + if (!p.is_tier() && + (var == "hit_set_type" || var == "hit_set_period" || + var == "hit_set_count" || var == "hit_set_fpp" || + var == "target_max_objects" || var == "target_max_bytes" || + var == "cache_target_full_ratio" || var == "cache_target_dirty_ratio" || + var == "cache_min_flush_age" || var == "cache_min_evict_age")) { + ss << "pool '" << poolstr << "' is not a tier pool: variable not applicable"; + return -EACCES; + } + if (var == "size") { if (p.type == pg_pool_t::TYPE_ERASURE) { ss << "can not change the size of an erasure-coded pool"; @@ -3608,6 +3631,7 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, } p.hit_set_period = n; } else if (var == "hit_set_count") { + if (interr.length()) { ss << "error parsing integer value '" << val << "': " << interr; return -EINVAL;