osd: update info only if new_interval

refactor OSD::build_initial_pg_history() so we update the info only if a
new interval is identified. also, this is consistent with
OSD::build_past_intervals_parallel().

Signed-off-by: Kefu Chai <kchai@redhat.com>
This commit is contained in:
Kefu Chai 2017-09-04 13:51:34 +08:00
parent c93c20fea5
commit 4ae053439e

View File

@ -4423,23 +4423,23 @@ void OSD::build_initial_pg_history(
&debug);
if (new_interval) {
h->same_interval_since = e;
}
if (up != new_up) {
h->same_up_since = e;
}
if (acting_primary != new_acting_primary) {
h->same_primary_since = e;
}
if (pgid.pgid.is_split(lastmap->get_pg_num(pgid.pgid.pool()),
osdmap->get_pg_num(pgid.pgid.pool()),
nullptr)) {
h->last_epoch_split = e;
if (up != new_up) {
h->same_up_since = e;
}
if (acting_primary != new_acting_primary) {
h->same_primary_since = e;
}
if (pgid.pgid.is_split(lastmap->get_pg_num(pgid.pgid.pool()),
osdmap->get_pg_num(pgid.pgid.pool()),
nullptr)) {
h->last_epoch_split = e;
}
up = new_up;
acting = new_acting;
up_primary = new_up_primary;
acting_primary = new_acting_primary;
}
lastmap = osdmap;
up_primary = new_up_primary;
acting_primary = new_acting_primary;
up = new_up;
acting = new_acting;
}
dout(20) << __func__ << " " << debug.str() << dendl;
dout(10) << __func__ << " " << *h << " " << *pi