]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: OSDMonitor: allow (un)setting 'hashpspool' flag via 'osd pool set' 1315/head
authorJoao Eduardo Luis <joao.luis@inktank.com>
Fri, 11 Oct 2013 00:43:48 +0000 (17:43 -0700)
committerGreg Farnum <greg@inktank.com>
Tue, 25 Feb 2014 21:34:39 +0000 (13:34 -0800)
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
(cherry picked from commit 1c2886964a0c005545abab0cf8feae7e06ac02a8)

Conflicts:

src/mon/MonCommands.h
src/mon/OSDMonitor.cc

mon: ceph hashpspool false clears the flag
instead of toggling it.
Signed-off-by: Loic Dachary <loic@dachary.org>
Reviewed-by: Christophe Courtaut <christophe.courtaut@gmail.com>
Reviewed-by: Sage Weil <sage@inktank.com>
(cherry picked from commit 589e2fa485b94244c79079f249428d4d545fca18

Replace some of the infrastructure required by this command that
was not present in Dumpling with single-use code.
Signed-off-by: Greg Farnum <greg@inktank.com>
qa/workunits/cephtool/test.sh
src/mon/MonCommands.h
src/mon/OSDMonitor.cc

index 659589e530dcbbc95e3803c22bd4510a76fda2b0..b832f53126d920b68106ca1fd87db4e811b35509 100755 (executable)
@@ -294,6 +294,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 1
+ceph osd pool set data hashpspool 0
+
 ceph osd pool get rbd crush_ruleset | grep 'crush_ruleset: 2'
 
 ceph osd thrash 10
index 39f365040008a8124c4ab175901950f17798e041..f42a67c637e53bd4f175698707a7d5e156c3bef5 100644 (file)
@@ -497,7 +497,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=CephInt", \
        "set pool parameter <var> to <val>", "osd", "rw", "cli,rest")
 // 'val' is a CephString because it can include a unit.  Perhaps
index 740d82682c85cc17b9a242ec6e43373793538706..51c38520c4d5d422d84f735018bb5336f2566f27 100644 (file)
@@ -3635,7 +3635,24 @@ done:
          ss << "crush ruleset " << n << " does not exist";
          err = -ENOENT;
        }
-      } 
+      } else if (var == "hashpspool") {
+       pg_pool_t new_pool = *p;
+       if (pending_inc.new_pools.count(pool))
+         new_pool = pending_inc.new_pools[pool];
+       if (n == 1) {
+         new_pool.flags |= pg_pool_t::FLAG_HASHPSPOOL;
+         ss << "set";
+       } else if (n == 0) {
+         new_pool.flags &= ~pg_pool_t::FLAG_HASHPSPOOL;
+         ss << "unset";
+       } else {
+         ss << "expecting value 1 or 0";
+         err = -EINVAL;
+       }
+       pending_inc.new_pools[pool] = new_pool;
+       ss << " pool " << pool << " flag hashpspool";
+      }
+
       pending_inc.new_pools[pool].last_change = pending_inc.epoch;
       getline(ss, rs);
       wait_for_finished_proposal(new Monitor::C_Command(mon, m, 0, rs, get_last_committed()));