]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: remove crush ruleset->rule rewrite
authorSage Weil <sage@newdream.net>
Fri, 25 Jun 2021 15:00:05 +0000 (11:00 -0400)
committerSage Weil <sage@newdream.net>
Mon, 28 Jun 2021 22:34:30 +0000 (18:34 -0400)
This was added in v14 nautilus, so any pacific+ cluster cannot have
rule != ruleset.

Signed-off-by: Sage Weil <sage@newdream.net>
src/mon/OSDMonitor.cc
src/test/cli/crushtool/check-overlapped-rules.crushmap [deleted file]
src/test/cli/crushtool/check-overlapped-rules.t [deleted file]

index db8e9990e91a372be089126bf322aba3c477160c..b3aed36e325914d7c7884eb551a301f75252cb9c 100644 (file)
@@ -1176,39 +1176,6 @@ void OSDMonitor::create_pending()
              << pending_inc.new_nearfull_ratio << dendl;
     }
   }
-
-  // Rewrite CRUSH rule IDs if they are using legacy "ruleset"
-  // structure.
-  if (osdmap.crush->has_legacy_rule_ids()) {
-    CrushWrapper newcrush = _get_pending_crush();
-
-    // First, for all pools, work out which rule they really used
-    // by resolving ruleset to rule.
-    for (const auto &i : osdmap.get_pools()) {
-      const auto pool_id = i.first;
-      const auto &pool = i.second;
-      int new_rule_id = newcrush.find_rule(pool.crush_rule,
-                                          pool.type, pool.size);
-
-      dout(1) << __func__ << " rewriting pool "
-             << osdmap.get_pool_name(pool_id) << " crush ruleset "
-             << pool.crush_rule << " -> rule id " << new_rule_id << dendl;
-      if (pending_inc.new_pools.count(pool_id) == 0) {
-       pending_inc.new_pools[pool_id] = pool;
-      }
-      pending_inc.new_pools[pool_id].crush_rule = new_rule_id;
-    }
-
-    // Now, go ahead and renumber all the rules so that their
-    // rule_id field corresponds to their position in the array
-    auto old_to_new = newcrush.renumber_rules();
-    dout(1) << __func__ << " Rewrote " << old_to_new << " crush IDs:" << dendl;
-    for (const auto &i : old_to_new) {
-      dout(1) << __func__ << " " << i.first << " -> " << i.second << dendl;
-    }
-    pending_inc.crush.clear();
-    newcrush.encode(pending_inc.crush, mon.get_quorum_con_features());
-  }
 }
 
 creating_pgs_t
@@ -9829,11 +9796,6 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
       }
     }
 
-    if (crush.has_legacy_rule_ids()) {
-      err = -EINVAL;
-      ss << "crush maps with ruleset != ruleid are no longer allowed";
-      goto reply;
-    }
     if (!validate_crush_against_features(&crush, ss)) {
       err = -EINVAL;
       goto reply;
diff --git a/src/test/cli/crushtool/check-overlapped-rules.crushmap b/src/test/cli/crushtool/check-overlapped-rules.crushmap
deleted file mode 100644 (file)
index a3cbfd1..0000000
Binary files a/src/test/cli/crushtool/check-overlapped-rules.crushmap and /dev/null differ
diff --git a/src/test/cli/crushtool/check-overlapped-rules.t b/src/test/cli/crushtool/check-overlapped-rules.t
deleted file mode 100644 (file)
index 41d9c9d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-  $ crushtool -i "$TESTDIR/check-overlapped-rules.crushmap" --check
-  overlapped rules in ruleset 0: rule-r0, rule-r1, rule-r2
-  overlapped rules in ruleset 0: rule-r0, rule-r2, rule-r3
-  overlapped rules in ruleset 0: rule-r0, rule-r3
-  $ crushtool -c "$TESTDIR/check-overlapped-rules.crushmap.txt" -o "$TESTDIR/check-overlapped-rules.crushmap.new"
-  rule 0 already exists
-  [1]