summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoao Eduardo Luis <joao.luis@inktank.com>2013-10-10 17:43:48 -0700
committerSage Weil <sage@inktank.com>2013-10-11 08:05:02 -0700
commit1c2886964a0c005545abab0cf8feae7e06ac02a8 (patch)
tree136c2879d59111ef4ab18121d8f39fa9d684cd74
parent2fe0d0d97af95c22db80800f5b9da51f672d9407 (diff)
downloadceph-1c2886964a0c005545abab0cf8feae7e06ac02a8.tar.gz
mon: OSDMonitor: allow (un)setting 'hashpspool' flag via 'osd pool set'
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
-rwxr-xr-xqa/workunits/cephtool/test.sh3
-rw-r--r--src/mon/MonCommands.h2
-rw-r--r--src/mon/OSDMonitor.cc12
3 files changed, 16 insertions, 1 deletions
diff --git a/qa/workunits/cephtool/test.sh b/qa/workunits/cephtool/test.sh
index 09e55b9a842..b098b13ad71 100755
--- a/qa/workunits/cephtool/test.sh
+++ b/qa/workunits/cephtool/test.sh
@@ -325,6 +325,9 @@ ceph osd pool set data size 3
ceph osd pool get data size | grep 'size: 3'
ceph osd pool set data size 2
+ceph osd pool set data hashpspool true
+ceph osd pool set data hashpspool false
+
ceph osd pool get rbd crush_ruleset | grep 'crush_ruleset: 2'
ceph osd thrash 10
diff --git a/src/mon/MonCommands.h b/src/mon/MonCommands.h
index 98903befa16..d9fc56e032d 100644
--- a/src/mon/MonCommands.h
+++ b/src/mon/MonCommands.h
@@ -507,7 +507,7 @@ COMMAND("osd pool get " \
"get pool parameter <var>", "osd", "r", "cli,rest")
COMMAND("osd pool set " \
"name=pool,type=CephPoolname " \
- "name=var,type=CephChoices,strings=size|min_size|crash_replay_interval|pg_num|pgp_num|crush_ruleset " \
+ "name=var,type=CephChoices,strings=size|min_size|crash_replay_interval|pg_num|pgp_num|crush_ruleset|hashpspool " \
"name=val,type=CephString", \
"set pool parameter <var> to <val>", "osd", "rw", "cli,rest")
// 'val' is a CephString because it can include a unit. Perhaps
diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc
index ed458f64294..425375b29e2 100644
--- a/src/mon/OSDMonitor.cc
+++ b/src/mon/OSDMonitor.cc
@@ -2715,6 +2715,18 @@ int OSDMonitor::prepare_command_pool_set(map<string,cmd_vartype> &cmdmap,
ss << "crush ruleset " << n << " does not exist";
return -ENOENT;
}
+ } else if (var == "hashpspool") {
+ if (val == "true") {
+ p.flags |= pg_pool_t::FLAG_HASHPSPOOL;
+ ss << "set";
+ } else if (val == "false") {
+ p.flags ^= pg_pool_t::FLAG_HASHPSPOOL;
+ ss << "unset";
+ } else {
+ ss << "expecting value true or false";
+ return -EINVAL;
+ }
+ ss << " pool " << pool << " flag hashpspool";
} else {
ss << "unrecognized variable '" << var << "'";
return -EINVAL;