From: xie xingguo Date: Tue, 8 Aug 2017 09:19:14 +0000 (+0800) Subject: mon/OSDMonitor: fix 'osd pg temp' unable to cleanup pg-temp X-Git-Tag: v13.0.0~171^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=71cef3cb74115d4e2bca466d7e9bdb71b584d5e5;p=ceph.git 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 --- 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)) {