summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mon/OSDMonitor.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc
index 2b089fa5335..13f752009df 100644
--- a/src/mon/OSDMonitor.cc
+++ b/src/mon/OSDMonitor.cc
@@ -2595,6 +2595,17 @@ int OSDMonitor::prepare_command_pool_set(const map<string,cmd_vartype> &cmdmap,
var == "crash_replay_interval" || var == "pg_num" ||
var == "pgp_num" || var == "crush_ruleset") {
cmd_getval(g_ceph_context, cmdmap, "val", n);
+ } else if (var == "hashpspool") {
+ string flag;
+ cmd_getval(g_ceph_context, cmdmap, "val", flag);
+ if (flag == "true") {
+ n = 1;
+ } else if (flag == "false") {
+ n = 0;
+ } else {
+ ss << "unrecognized value '" << flag << "'; use 'true' or 'false'";
+ return -EINVAL;
+ }
} else {
ss << "unrecognized variable '" << var << "'";
return -EINVAL;
@@ -2644,6 +2655,15 @@ int OSDMonitor::prepare_command_pool_set(const map<string,cmd_vartype> &cmdmap,
ss << "crush ruleset " << n << " does not exist";
err = -ENOENT;
}
+ } else if (var == "hashpspool") {
+ if (val) {
+ pendng_inc.new_pools[pool].flags |= pg_pool_t::FLAG_HASHPSPOOL;
+ ss << "set";
+ } else {
+ pending_inc_new_pools[pool].flags ^= pg_pool_t::FLAG_HASHPSPOOL;
+ ss << "unset";
+ }
+ ss << " pool " << pool << " flag hashpspool";
}
return 0;
}