]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: fix OSDMonitor::_check_become_tier cannot prevent client 6764/head
authorMingxin Liu <mingxin.liu@kylin-cloud.com>
Wed, 2 Dec 2015 01:50:28 +0000 (09:50 +0800)
committerMingxin Liu <mingxin.liu@kylin-cloud.com>
Fri, 4 Dec 2015 15:35:17 +0000 (23:35 +0800)
from setting multiple tiers in a particular way

Fixes:#13950
Signed-off-by: Mingxin Liu <mingxin.liu@kylin-cloud.com>
src/mon/OSDMonitor.cc

index 3578b7933bdf40b2a4be511da1d222fe20d77785..551d6001fb9bc2505f40d0870803b3100ea34f42 100644 (file)
@@ -7738,6 +7738,16 @@ bool OSDMonitor::_check_become_tier(
     return false;
   }
 
+  if (tier_pool->has_tiers()) {
+    *ss << "pool '" << tier_pool_name << "' has following tier(s) already:";
+    for (set<uint64_t>::iterator it = tier_pool->tiers.begin();
+         it != tier_pool->tiers.end(); it++)
+      *ss << "'" << osdmap.get_pool_name(*it) << "',";
+    *ss << " multiple tiers are not yet supported.";
+    *err = -EINVAL;
+    return false;
+  }
+
   if (tier_pool->is_tier()) {
     *ss << "tier pool '" << tier_pool_name << "' is already a tier of '"
        << osdmap.get_pool_name(tier_pool->tier_of) << "'";