ceph::unordered_map<int,pool_stat_t> pg_pool_sum;
pool_stat_t pg_sum;
osd_stat_t osd_sum;
+ mutable epoch_t min_last_epoch_clean;
utime_t stamp;
const utime_t ts,
const uint64_t pool,
const pool_stat_t& old_pool_sum);
+
+ epoch_t calc_min_last_epoch_clean() const;
+
public:
set<pg_t> creating_pgs; // lru: front = new additions, back = recently pinged
last_osdmap_epoch(0), last_pg_scan(0),
full_ratio(0), nearfull_ratio(0),
num_pg(0),
- num_osd(0)
+ num_osd(0),
+ min_last_epoch_clean(0)
{}
void set_full_ratios(float full, float nearfull) {
void print_summary(Formatter *f, ostream *out) const;
void print_oneline_summary(ostream *out) const;
- epoch_t calc_min_last_epoch_clean() const;
+ epoch_t get_min_last_epoch_clean() const {
+ if (!min_last_epoch_clean)
+ min_last_epoch_clean = calc_min_last_epoch_clean();
+ return min_last_epoch_clean;
+ }
static void generate_test_instances(list<PGMap*>& o);
};
inc.version = 1;
inc.update_stat(0, 123, os);
pg_map.apply_incremental(g_ceph_context, inc);
- ASSERT_EQ(123u, pg_map.calc_min_last_epoch_clean());
+ ASSERT_EQ(123u, pg_map.get_min_last_epoch_clean());
inc = PGMap::Incremental();
inc.version = 2;
inc.update_stat(1, 222, os);
pg_map.apply_incremental(g_ceph_context, inc);
- ASSERT_EQ(123u, pg_map.calc_min_last_epoch_clean());
+ ASSERT_EQ(123u, pg_map.get_min_last_epoch_clean());
inc = PGMap::Incremental();
inc.version = 3;
inc.update_stat(0, 222, os);
pg_map.apply_incremental(g_ceph_context, inc);
- ASSERT_EQ(222u, pg_map.calc_min_last_epoch_clean());
+ ASSERT_EQ(222u, pg_map.get_min_last_epoch_clean());
inc = PGMap::Incremental();
inc.version = 4;
inc.update_stat(0, 333, os);
inc.update_stat(1, 333, os);
pg_map.apply_incremental(g_ceph_context, inc);
- ASSERT_EQ(333u, pg_map.calc_min_last_epoch_clean());
+ ASSERT_EQ(333u, pg_map.get_min_last_epoch_clean());
ps.last_epoch_clean = 222;
inc = PGMap::Incremental();
inc.version = 5;
inc.pg_stat_updates[pg_t(1,1)] = ps;
pg_map.apply_incremental(g_ceph_context, inc);
- ASSERT_EQ(222u, pg_map.calc_min_last_epoch_clean());
+ ASSERT_EQ(222u, pg_map.get_min_last_epoch_clean());
ps.last_epoch_clean = 223;
inc = PGMap::Incremental();
inc.version = 6;
inc.pg_stat_updates[pg_t(1,1)] = ps;
pg_map.apply_incremental(g_ceph_context, inc);
- ASSERT_EQ(223u, pg_map.calc_min_last_epoch_clean());
+ ASSERT_EQ(223u, pg_map.get_min_last_epoch_clean());
ps.last_epoch_clean = 224;
inc = PGMap::Incremental();
inc.version = 7;
inc.pg_stat_updates[pg_t(2,2)] = ps;
pg_map.apply_incremental(g_ceph_context, inc);
- ASSERT_EQ(223u, pg_map.calc_min_last_epoch_clean());
+ ASSERT_EQ(223u, pg_map.get_min_last_epoch_clean());
ps.last_epoch_clean = 225;
inc = PGMap::Incremental();
inc.version = 8;
inc.pg_stat_updates[pg_t(1,1)] = ps;
pg_map.apply_incremental(g_ceph_context, inc);
- ASSERT_EQ(224u, pg_map.calc_min_last_epoch_clean());
+ ASSERT_EQ(224u, pg_map.get_min_last_epoch_clean());
}