From: David Zafman Date: Thu, 9 Oct 2014 18:20:13 +0000 (-0700) Subject: osd: Get pgid ancestor from last_map when building past intervals X-Git-Tag: v0.80.10~69^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=91b2acaadee1b62c1fcac73147908ec4477840f3;p=ceph.git osd: Get pgid ancestor from last_map when building past intervals Fixed OSD::build_past_intervals_parallel() and PG::generate_past_intervals() Fixes: #10430 Signed-off-by: David Zafman (cherry picked from commit 0c5b66da7a9ba516340d06d9e806beb9d1040d0e) Conflicts: src/osd/OSD.cc --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 5fe37310c20..4fa080b4759 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2255,8 +2255,11 @@ void OSD::build_past_intervals_parallel() vector acting, up; int up_primary; int primary; + pg_t pgid = pg->info.pgid.pgid; + if (p.same_interval_since && last_map->get_pools().count(pgid.pool())) + pgid = pgid.get_ancestor(last_map->get_pg_num(pgid.pool())); cur_map->pg_to_up_acting_osds( - pg->info.pgid.pgid, &up, &up_primary, &acting, &primary); + pgid, &up, &up_primary, &acting, &primary); if (p.same_interval_since == 0) { dout(10) << __func__ << " epoch " << cur_epoch << " pg " << pg->info.pgid @@ -2283,7 +2286,7 @@ void OSD::build_past_intervals_parallel() pg->info.history.last_epoch_clean, cur_map, last_map, pg->info.pgid.pool(), - pg->info.pgid.pgid, + pgid, &pg->past_intervals, &debug); if (new_interval) { diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 4ea71295f76..5eec0e14108 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -660,8 +660,8 @@ void PG::generate_past_intervals() cur_map = osd->get_map(cur_epoch); pg_t pgid = get_pgid().pgid; - if (cur_map->get_pools().count(pgid.pool())) - pgid = pgid.get_ancestor(cur_map->get_pg_num(pgid.pool())); + if (last_map->get_pools().count(pgid.pool())) + pgid = pgid.get_ancestor(last_map->get_pg_num(pgid.pool())); cur_map->pg_to_up_acting_osds(pgid, &up, &up_primary, &acting, &primary); std::stringstream debug;