diff options
-rw-r--r-- | src/mon/OSDMonitor.cc | 20 |
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; } |