From 71cef3cb74115d4e2bca466d7e9bdb71b584d5e5 Mon Sep 17 00:00:00 2001 From: xie xingguo Date: Tue, 8 Aug 2017 17:19:14 +0800 Subject: [PATCH] mon/OSDMonitor: fix 'osd pg temp' unable to cleanup pg-temp This is not very elegant way but should work.. Signed-off-by: xie xingguo --- qa/workunits/cephtool/test.sh | 2 +- src/mon/OSDMonitor.cc | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/qa/workunits/cephtool/test.sh b/qa/workunits/cephtool/test.sh index 7c43ada2885c0..840e733c24cae 100755 --- a/qa/workunits/cephtool/test.sh +++ b/qa/workunits/cephtool/test.sh @@ -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 } diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index c8596a98ceaa8..7df629ac81392 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -9150,11 +9150,11 @@ bool OSDMonitor::prepare_command_impl(MonOpRequestRef op, vector id_vec; vector 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(); + ss << "done cleaning up pg_temp of " << pgid; + goto update; } for (auto osd : id_vec) { if (!osdmap.exists(osd)) { -- 2.39.5