continue;
}
- pg->pg_stats_publish_lock.Lock();
- if (pg->pg_stats_publish_valid) {
- m->pg_stat[pg->pg_id.pgid] = pg->pg_stats_publish;
- const auto lec = pg->pg_stats_publish.get_effective_last_epoch_clean();
- min_last_epoch_clean = min(min_last_epoch_clean, lec);
- min_last_epoch_clean_pgs.push_back(pg->pg_id.pgid);
- }
- pg->pg_stats_publish_lock.Unlock();
+ pg->get_pg_stats([&](const pg_stat_t& s, epoch_t lec) {
+ m->pg_stat[pg->pg_id.pgid] = s;
+ min_last_epoch_clean = min(min_last_epoch_clean, lec);
+ min_last_epoch_clean_pgs.push_back(pg->pg_id.pgid);
+ });
}
return m;
pgstate_history.dump(f);
unlock();
}
+
+void PG::get_pg_stats(std::function<void(const pg_stat_t&, epoch_t lec)> f)
+{
+ pg_stats_publish_lock.Lock();
+ if (pg_stats_publish_valid) {
+ f(pg_stats_publish, pg_stats_publish.get_effective_last_epoch_clean());
+ }
+ pg_stats_publish_lock.Unlock();
+}
void dump_pgstate_history(Formatter *f);
+ void get_pg_stats(std::function<void(const pg_stat_t&, epoch_t lec)> f);
+
virtual void do_request(
OpRequestRef& op,
ThreadPool::TPHandle &handle