From 95fbe303a9692ac8dd2694298e32af951adfbe06 Mon Sep 17 00:00:00 2001 From: dparmar18 Date: Thu, 16 Feb 2023 15:18:42 +0530 Subject: [PATCH] osd: add method to check for laggy osds Fixes: https://tracker.ceph.com/issues/58023 Signed-off-by: Dhairya Parmar --- src/osd/OSDMap.cc | 12 ++++++++++++ src/osd/OSDMap.h | 1 + 2 files changed, 13 insertions(+) diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 710e39b215a..d4143456903 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -1871,6 +1871,18 @@ uint64_t OSDMap::get_up_osd_features() const return cached_up_osd_features; } +bool OSDMap::any_osd_laggy() const +{ + for (int osd = 0; osd < max_osd; ++osd) { + if (!is_up(osd)) { continue; } + const auto &xi = get_xinfo(osd); + if (xi.laggy_probability || xi.laggy_interval) { + return true; + } + } + return false; +} + void OSDMap::dedup(const OSDMap *o, OSDMap *n) { using ceph::encode; diff --git a/src/osd/OSDMap.h b/src/osd/OSDMap.h index 3ca12901ac6..920bb8fdf50 100644 --- a/src/osd/OSDMap.h +++ b/src/osd/OSDMap.h @@ -654,6 +654,7 @@ private: public: bool have_crc() const { return crc_defined; } uint32_t get_crc() const { return crc; } + bool any_osd_laggy() const; std::shared_ptr crush; // hierarchical map bool stretch_mode_enabled; // we are in stretch mode, requiring multiple sites -- 2.47.3