From c554fc4687a9c6ab06976727836e88a331cc9b79 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Tue, 12 Mar 2019 20:22:57 +0800 Subject: [PATCH] crimson/osd: handle MOSDPGQuery in OSD will handle it in PG in follow-up changes. Signed-off-by: Kefu Chai --- src/crimson/osd/osd.cc | 20 +++++++++++++++++++- src/crimson/osd/osd.h | 2 ++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/crimson/osd/osd.cc b/src/crimson/osd/osd.cc index 98e7e5225d3..f2145dbc47a 100644 --- a/src/crimson/osd/osd.cc +++ b/src/crimson/osd/osd.cc @@ -12,10 +12,10 @@ #include "messages/MOSDPGInfo.h" #include "messages/MOSDPGLog.h" #include "messages/MOSDPGNotify.h" +#include "messages/MOSDPGQuery.h" #include "messages/MPGStats.h" #include "crimson/mon/MonClient.h" - #include "crimson/net/Connection.h" #include "crimson/net/Messenger.h" #include "crimson/os/cyan_collection.h" @@ -367,6 +367,8 @@ seastar::future<> OSD::ms_dispatch(ceph::net::ConnectionRef conn, MessageRef m) return handle_pg_notify(conn, boost::static_pointer_cast(m)); case MSG_OSD_PG_INFO: return handle_pg_info(conn, boost::static_pointer_cast(m)); + case MSG_OSD_PG_QUERY: + return handle_pg_query(conn, boost::static_pointer_cast(m)); default: return seastar::now(); } @@ -750,6 +752,22 @@ seastar::future<> OSD::handle_pg_info(ceph::net::ConnectionRef conn, }); } +seastar::future<> OSD::handle_pg_query(ceph::net::ConnectionRef conn, + Ref m) +{ + const int from = m->get_source().num(); + return seastar::parallel_for_each(m->pg_list, + [from, this](pair p) { + auto& [pgid, pg_query] = p; + MQuery query{pgid, pg_shard_t{from, pg_query.from}, + pg_query, pg_query.epoch_sent}; + auto evt = std::make_unique(pg_query.epoch_sent, + pg_query.epoch_sent, + std::move(query)); + return do_peering_event(pgid, std::move(evt)); + }); +} + seastar::future<> OSD::do_peering_event(spg_t pgid, std::unique_ptr evt) diff --git a/src/crimson/osd/osd.h b/src/crimson/osd/osd.h index 0445d3c9d9a..7ec2ef6eebf 100644 --- a/src/crimson/osd/osd.h +++ b/src/crimson/osd/osd.h @@ -130,6 +130,8 @@ private: Ref m); seastar::future<> handle_pg_info(ceph::net::ConnectionRef conn, Ref m); + seastar::future<> handle_pg_query(ceph::net::ConnectionRef conn, + Ref m); seastar::future<> committed_osd_maps(version_t first, version_t last, -- 2.39.5