PG: update info.history even if lastmap is absent

Previously, we did not update same_interval_since etc if
we do not have the previous map.

Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
This commit is contained in:
Samuel Just 2011-11-09 17:16:57 -08:00
parent 023ff5903a
commit a3dd5bd67b

View File

@ -3525,13 +3525,6 @@ void PG::start_peering_interval(const OSDMapRef lastmap,
i.acting = oldacting;
i.up = oldup;
if (oldacting != acting || oldup != up) {
info.history.same_interval_since = osdmap->get_epoch();
}
if (oldup != up) {
info.history.same_up_since = osdmap->get_epoch();
}
if (i.acting.size()) {
i.maybe_went_rw =
lastmap->get_up_thru(i.acting[0]) >= i.first &&
@ -3540,14 +3533,20 @@ void PG::start_peering_interval(const OSDMapRef lastmap,
i.maybe_went_rw = 0;
}
if (oldprimary != get_primary()) {
info.history.same_primary_since = osdmap->get_epoch();
}
dout(10) << " noting past " << i << dendl;
dirty_info = true;
}
if (oldacting != acting || oldup != up) {
info.history.same_interval_since = osdmap->get_epoch();
}
if (oldup != up) {
info.history.same_up_since = osdmap->get_epoch();
}
if (oldprimary != get_primary()) {
info.history.same_primary_since = osdmap->get_epoch();
}
dout(10) << " up " << oldup << " -> " << up
<< ", acting " << oldacting << " -> " << acting
<< ", role " << oldrole << " -> " << role << dendl;