From: Sage Weil Date: Wed, 26 Jun 2019 19:29:55 +0000 (-0500) Subject: osd: report last_purged_snaps_scrub as part of beacon X-Git-Tag: v15.1.0~2308^2~7 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=4f4dedb8d62bcafb3c698f35ab374b7a4d72ed88;p=ceph-ci.git osd: report last_purged_snaps_scrub as part of beacon Signed-off-by: Sage Weil --- diff --git a/src/crimson/osd/osd.cc b/src/crimson/osd/osd.cc index 5515ee35be7..9fa996be19f 100644 --- a/src/crimson/osd/osd.cc +++ b/src/crimson/osd/osd.cc @@ -875,7 +875,8 @@ seastar::future<> OSD::send_beacon() // and should set m->pgs epoch_t min_last_epoch_clean = osdmap->get_epoch(); auto m = make_message(osdmap->get_epoch(), - min_last_epoch_clean); + min_last_epoch_clean, + superblock.last_purged_snaps_scrub); return monc->send_message(m); } diff --git a/src/messages/MOSDBeacon.h b/src/messages/MOSDBeacon.h index 068858cbf96..20341858de4 100644 --- a/src/messages/MOSDBeacon.h +++ b/src/messages/MOSDBeacon.h @@ -6,34 +6,46 @@ #include "PaxosServiceMessage.h" class MOSDBeacon : public PaxosServiceMessage { +private: + static constexpr int HEAD_VERSION = 2; + static constexpr int COMPAT_VERSION = 1; public: std::vector pgs; epoch_t min_last_epoch_clean = 0; + utime_t last_purged_snaps_scrub; MOSDBeacon() - : PaxosServiceMessage{MSG_OSD_BEACON, 0} + : PaxosServiceMessage{MSG_OSD_BEACON, 0, + HEAD_VERSION, COMPAT_VERSION} {} - MOSDBeacon(epoch_t e, epoch_t min_lec) - : PaxosServiceMessage{MSG_OSD_BEACON, e}, - min_last_epoch_clean(min_lec) + MOSDBeacon(epoch_t e, epoch_t min_lec, utime_t ls) + : PaxosServiceMessage{MSG_OSD_BEACON, e, + HEAD_VERSION, COMPAT_VERSION}, + min_last_epoch_clean(min_lec), + last_purged_snaps_scrub(ls) {} void encode_payload(uint64_t features) override { using ceph::encode; paxos_encode(); encode(pgs, payload); encode(min_last_epoch_clean, payload); + encode(last_purged_snaps_scrub, payload); } void decode_payload() override { auto p = payload.cbegin(); paxos_decode(p); decode(pgs, p); decode(min_last_epoch_clean, p); + if (header.version >= 2) { + decode(last_purged_snaps_scrub, p); + } } std::string_view get_type_name() const override { return "osd_beacon"; } void print(ostream &out) const { out << get_type_name() << "(pgs " << pgs << " lec " << min_last_epoch_clean + << " last_purged_snaps_scrub " << last_purged_snaps_scrub << " v" << version << ")"; } private: diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 5bfb172882d..6d4757b057e 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -5894,7 +5894,9 @@ void OSD::send_beacon(const ceph::coarse_mono_clock::time_point& now) MOSDBeacon* beacon = nullptr; { std::lock_guard l{min_last_epoch_clean_lock}; - beacon = new MOSDBeacon(osdmap->get_epoch(), min_last_epoch_clean); + beacon = new MOSDBeacon(osdmap->get_epoch(), + min_last_epoch_clean, + superblock.last_purged_snaps_scrub); beacon->pgs = min_last_epoch_clean_pgs; last_sent_beacon = now; }