]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: fix 'osd pg temp' unable to cleanup pg-temp 16892/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Tue, 8 Aug 2017 09:19:14 +0000 (17:19 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Tue, 8 Aug 2017 09:33:35 +0000 (17:33 +0800)
This is not very elegant way but should work..

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
qa/workunits/cephtool/test.sh
src/mon/OSDMonitor.cc

index 7c43ada2885c09e64f0b3a60291174343cacb8ab..840e733c24cae2e6c9196dade6093cc7a022e04d 100755 (executable)
@@ -1896,7 +1896,7 @@ function test_mon_pg()
   expect_false ceph osd pg-temp 1.0 0 1 2
   expect_false ceph osd pg-temp asdf qwer
   expect_false ceph osd pg-temp 1.0 asdf
-  expect_false ceph osd pg-temp 1.0
+  ceph osd pg-temp 1.0 # cleanup pg-temp
 
   # don't test ceph osd primary-temp for now
 }
index c8596a98ceaa886b5fd6c73e922185166191ee0a..7df629ac8139264aa86308443d0a6d8d0cd758ed 100644 (file)
@@ -9150,11 +9150,11 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op,
 
     vector<int64_t> id_vec;
     vector<int32_t> new_pg_temp;
-    if (!cmd_getval(g_ceph_context, cmdmap, "id", id_vec)) {
-      ss << "unable to parse 'id' value(s) '"
-         << cmd_vartype_stringify(cmdmap["id"]) << "'";
-      err = -EINVAL;
-      goto reply;
+    cmd_getval(g_ceph_context, cmdmap, "id", id_vec);
+    if (id_vec.empty())  {
+      pending_inc.new_pg_temp[pgid] = mempool::osdmap::vector<int>();
+      ss << "done cleaning up pg_temp of " << pgid;
+      goto update;
     }
     for (auto osd : id_vec) {
       if (!osdmap.exists(osd)) {