{
map<PG*,pistate> pis;
- // calculate untion of map range
+ // calculate junction of map range
epoch_t end_epoch = superblock.oldest_map;
epoch_t cur_epoch = superblock.newest_map;
for (ceph::unordered_map<spg_t, PG*>::iterator i = pg_map.begin();
PG *pg = i->second;
epoch_t start, end;
- if (!pg->_calc_past_interval_range(&start, &end))
+ if (!pg->_calc_past_interval_range(&start, &end, superblock.oldest_map))
continue;
dout(10) << pg->info.pgid << " needs " << start << "-" << end << dendl;
return ret;
}
-bool PG::_calc_past_interval_range(epoch_t *start, epoch_t *end)
+bool PG::_calc_past_interval_range(epoch_t *start, epoch_t *end, epoch_t oldest_map)
{
*end = info.history.same_interval_since;
*start = MAX(MAX(info.history.epoch_created,
info.history.last_epoch_clean),
- osd->get_superblock().oldest_map);
+ oldest_map);
if (*start >= *end) {
dout(10) << __func__ << " start epoch " << *start << " >= end epoch " << *end
<< ", nothing to do" << dendl;
void PG::generate_past_intervals()
{
epoch_t cur_epoch, end_epoch;
- if (!_calc_past_interval_range(&cur_epoch, &end_epoch)) {
+ if (!_calc_past_interval_range(&cur_epoch, &end_epoch,
+ osd->get_superblock().oldest_map)) {
return;
}
void mark_clean(); ///< mark an active pg clean
- bool _calc_past_interval_range(epoch_t *start, epoch_t *end);
+ bool _calc_past_interval_range(epoch_t *start, epoch_t *end, epoch_t oldest_map);
void generate_past_intervals();
void trim_past_intervals();
void build_prior(std::auto_ptr<PriorSet> &prior_set);