From: Sage Weil Date: Wed, 6 Aug 2014 20:22:30 +0000 (-0700) Subject: osd/PG: populate pg_stats_t blocked_by X-Git-Tag: v0.85~27^2~12 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=940e42dfd00d97d7772871e77500fab1cef9c2d6;p=ceph.git 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 --- 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 {