{
o.push_back(new Incremental);
o.push_back(new Incremental);
- o.back()->version = 12;
+ o.back()->version = 1;
+ o.push_back(new Incremental);
+ o.back()->version = 2;
+ o.back()->pg_stat_updates[pg_t(1,2,3)] = pg_stat_t();
+ o.back()->osd_stat_updates[5] = osd_stat_t();
+ o.push_back(new Incremental);
+ o.back()->version = 3;
o.back()->osdmap_epoch = 1;
o.back()->pg_scan = 2;
o.back()->full_ratio = .2;
o.back()->nearfull_ratio = .3;
- o.back()->pg_stat_updates[pg_t(1,2,3)] = pg_stat_t();
- o.back()->osd_stat_updates[5] = osd_stat_t();
+ o.back()->pg_stat_updates[pg_t(4,5,6)] = pg_stat_t();
+ o.back()->osd_stat_updates[6] = osd_stat_t();
+ o.back()->pg_remove.insert(pg_t(1,2,3));
+ o.back()->osd_stat_rm.insert(5);
}
num_pg--;
if (--num_pg_by_state[s.state] == 0)
num_pg_by_state.erase(s.state);
- pg_pool_sum[pgid.pool()].sub(s);
+
+ pool_stat_t& ps = pg_pool_sum[pgid.pool()];
+ ps.sub(s);
+ if (ps.is_zero())
+ pg_pool_sum.erase(pgid.pool());
+
pg_sum.sub(s);
if (s.state & PG_STATE_CREATING)
creating_pgs.erase(pgid);
{
o.push_back(new PGMap);
o.push_back(new PGMap);
- o.back()->version = 888;
- o.back()->last_osdmap_epoch = 12;
- o.back()->last_pg_scan = 34;
- o.back()->full_osds.insert(3);
- o.back()->nearfull_osds.insert(4);
- o.back()->pg_stat[pg_t(1,2,3)] = pg_stat_t();
- o.back()->osd_stat[5] = osd_stat_t();
+ list<Incremental*> inc;
+ Incremental::generate_test_instances(inc);
+ inc.pop_front();
+ while (!inc.empty()) {
+ o.back()->apply_incremental(*inc.front());
+ delete inc.front();
+ inc.pop_front();
+ }
}
hash_map<int,osd_stat_t> osd_stat;
set<int> full_osds;
set<int> nearfull_osds;
+ float full_ratio;
+ float nearfull_ratio;
class Incremental {
public:
};
- // aggregate stats (soft state)
+ // aggregate stats (soft state), generated by calc_stats()
hash_map<int,int> num_pg_by_state;
int64_t num_pg, num_osd;
hash_map<int,pool_stat_t> pg_pool_sum;
pool_stat_t pg_sum;
osd_stat_t osd_sum;
- float full_ratio;
- float nearfull_ratio;
-
set<pg_t> creating_pgs; // lru: front = new additions, back = recently pinged
- PGMap() : version(0),
- last_osdmap_epoch(0), last_pg_scan(0),
- num_pg(0),
- num_osd(0),
- full_ratio(.8), nearfull_ratio(.9) {}
+ PGMap()
+ : version(0),
+ last_osdmap_epoch(0), last_pg_scan(0),
+ full_ratio(.8), nearfull_ratio(.9),
+ num_pg(0),
+ num_osd(0)
+ {}
void apply_incremental(const Incremental& inc);
void redo_full_sets();