if (s.acting_primary >= 0)
creating_pgs_by_osd[s.acting_primary].insert(pgid);
}
+ for (vector<int>::const_iterator p = s.blocked_by.begin();
+ p != s.blocked_by.end();
+ ++p) {
+ ++blocked_by_sum[*p];
+ }
}
void PGMap::stat_pg_sub(const pg_t &pgid, const pg_stat_t &s)
creating_pgs_by_osd.erase(s.acting_primary);
}
}
+
+ for (vector<int>::const_iterator p = s.blocked_by.begin();
+ p != s.blocked_by.end();
+ ++p) {
+ ceph::unordered_map<int,int>::iterator q = blocked_by_sum.find(*p);
+ assert(q != blocked_by_sum.end());
+ --q->second;
+ if (q->second == 0)
+ blocked_by_sum.erase(q);
+ }
}
void PGMap::stat_osd_add(const osd_stat_t &s)
pool_stat_t pg_sum;
osd_stat_t osd_sum;
mutable epoch_t min_last_epoch_clean;
+ ceph::unordered_map<int,int> blocked_by_sum;
utime_t stamp;
void dump_osd_perf_stats(Formatter *f) const;
void print_osd_perf_stats(std::ostream *ss) const;
+ void dump_osd_blocked_by_stats(Formatter *f) const;
+ void print_osd_blocked_by_stats(std::ostream *ss) const;
+
void recovery_summary(Formatter *f, ostream *out,
const pool_stat_t& delta_sum) const;
void overall_recovery_summary(Formatter *f, ostream *out) const;