From: Sage Weil Date: Wed, 31 May 2017 17:02:35 +0000 (-0400) Subject: mgr/DaemonServer: use registered osd session to send scrub messages X-Git-Tag: ses5-milestone6~8^2~19^2~54 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b01c0d36b6efb83be46f5e7699d1ae7938418a36;p=ceph.git mgr/DaemonServer: use registered osd session to send scrub messages Signed-off-by: Sage Weil --- diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc index 8fda55247d4d..19e7bcb64191 100644 --- a/src/mgr/DaemonServer.cc +++ b/src/mgr/DaemonServer.cc @@ -588,26 +588,29 @@ bool DaemonServer::handle_command(MCommand *m) return true; } int acting_primary = -1; - entity_inst_t inst; cluster_state.with_osdmap([&](const OSDMap& osdmap) { acting_primary = osdmap.get_pg_acting_primary(pgid); - if (acting_primary >= 0) { - inst = osdmap.get_inst(acting_primary); - } }); if (acting_primary == -1) { ss << "pg " << pgid << " has no primary osd"; cmdctx->reply(-EAGAIN, ss); return true; } + auto p = osd_cons.find(acting_primary); + if (p == osd_cons.end()) { + ss << "pg " << pgid << " primary osd." << acting_primary + << " is not currently connected"; + cmdctx->reply(-EAGAIN, ss); + } vector pgs = { pgid }; - msgr->send_message(new MOSDScrub(monc->get_fsid(), - pgs, - scrubop == "repair", - scrubop == "deep-scrub"), - inst); + for (auto& con : p->second) { + con->send_message(new MOSDScrub(monc->get_fsid(), + pgs, + scrubop == "repair", + scrubop == "deep-scrub")); + } ss << "instructing pg " << pgid << " on osd." << acting_primary - << " (" << inst << ") to " << scrubop; + << " to " << scrubop; cmdctx->reply(0, ss); return true; } else if (prefix == "osd reweight-by-pg" ||