}
bool all_unfound_are_queried_or_lost(const OSDMapRef osdmap) const;
- virtual void dump_recovery_info(Formatter *f) const = 0;
void calc_min_last_complete_ondisk() {
eversion_t min = last_complete_ondisk;
}
{
q.f->open_object_section("recovery_progress");
- pg->dump_recovery_info(q.f);
+ q.f->open_array_section("backfill_targets");
+ for (set<pg_shard_t>::const_iterator p = ps->backfill_targets.begin();
+ p != ps->backfill_targets.end(); ++p)
+ q.f->dump_stream("replica") << *p;
+ q.f->close_section();
+ pl->dump_recovery_info(q.f);
q.f->close_section();
}
virtual PGLog::LogEntryHandlerRef get_log_handler(
ObjectStore::Transaction *t) = 0;
+ virtual void dump_recovery_info(Formatter *f) const = 0;
+
virtual epoch_t oldest_stored_osdmap() = 0;
virtual LogChannel &get_clog() = 0;
map<hobject_t, pg_stat_t> pending_backfill_updates;
void dump_recovery_info(Formatter *f) const override {
- f->open_array_section("backfill_targets");
- for (set<pg_shard_t>::const_iterator p = backfill_targets.begin();
- p != backfill_targets.end(); ++p)
- f->dump_stream("replica") << *p;
- f->close_section();
f->open_array_section("waiting_on_backfill");
for (set<pg_shard_t>::const_iterator p = waiting_on_backfill.begin();
p != waiting_on_backfill.end(); ++p)