]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PG: populate pg_stats_t blocked_by
authorSage Weil <sage@redhat.com>
Wed, 6 Aug 2014 20:22:30 +0000 (13:22 -0700)
committerSage Weil <sage@redhat.com>
Wed, 6 Aug 2014 20:22:30 +0000 (13:22 -0700)
Keep a PG member for OSDs that current block us, and fill it into the
stats struct when we publish.  Use a vector<int> in pg_stats_t to limit the
overhead (memory, decoding) on this list once it is static.

Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/PG.cc
src/osd/PG.h

index ff126064c48b03d16efd92f6bf079d11207474aa..0cf78b942c9b2564f2d97e18aa3b9b3ff0f9c6c8 100644 (file)
@@ -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<int>::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);
index 10d7179d1346961d68c4d205f901a405289d3299..714b1fc679784228bb9ebdbb1a3eca99943ecc12 100644 (file)
@@ -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<int> blocked_by; ///< osds we are blocked by (for pg stats)
+
   // [primary only] content recovery state
  protected:
   struct PriorSet {