From 940e42dfd00d97d7772871e77500fab1cef9c2d6 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 6 Aug 2014 13:22:30 -0700 Subject: [PATCH] osd/PG: populate pg_stats_t blocked_by Keep a PG member for OSDs that current block us, and fill it into the stats struct when we publish. Use a vector in pg_stats_t to limit the overhead (memory, decoding) on this list once it is static. Signed-off-by: Sage Weil --- src/osd/PG.cc | 6 ++++++ src/osd/PG.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index ff126064c48..0cf78b942c9 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -2275,6 +2275,12 @@ void PG::publish_stats_to_osd() _update_calc_stats(); + info.stats.blocked_by.clear(); + info.stats.blocked_by.resize(blocked_by.size()); + unsigned pos = 0; + for (set::iterator p = blocked_by.begin(); p != blocked_by.end(); ++p) + info.stats.blocked_by[pos++] = *p; + pg_stats_publish_valid = true; pg_stats_publish = info.stats; pg_stats_publish.stats.add(unstable_stats); diff --git a/src/osd/PG.h b/src/osd/PG.h index 10d7179d134..714b1fc6797 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -477,6 +477,8 @@ public: eversion_t min_last_complete_ondisk; // up: min over last_complete_ondisk, peer_last_complete_ondisk eversion_t pg_trim_to; + set blocked_by; ///< osds we are blocked by (for pg stats) + // [primary only] content recovery state protected: struct PriorSet { -- 2.47.3