From c329d00b0bbc993b67633dc819ca0e785c0288e6 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 20 Sep 2011 16:17:51 -0700 Subject: [PATCH] mon: 'osd set pool crush_ruleset ' You can set the crush rule on pool creation. Let people change existing pool rulesets too. Signed-off-by: Sage Weil --- src/mon/OSDMonitor.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index abb878dea9d51..e5a40e986ea35 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -1903,6 +1903,19 @@ bool OSDMonitor::prepare_command(MMonCommand *m) paxos->wait_for_commit(new Monitor::C_Command(mon, m, 0, rs, paxos->get_version())); return true; } + } else if (m->cmd[4] == "crush_ruleset") { + if (osdmap.crush.rule_exists(n)) { + pending_inc.new_pools[pool] = osdmap.pools[pool]; + pending_inc.new_pools[pool].v.crush_ruleset = n; + pending_inc.new_pools[pool].v.last_change = pending_inc.epoch; + ss << "set pool " << pool << " crush_ruleset to " << n; + getline(ss, rs); + paxos->wait_for_commit(new Monitor::C_Command(mon, m, 0, rs, paxos->get_version())); + return true; + } else { + ss << "crush ruleset " << n << " dne"; + err = -ENOENT; + } } else { ss << "unrecognized pool field " << m->cmd[4]; } -- 2.39.5