From: Cory Snyder Date: Wed, 17 Nov 2021 18:07:45 +0000 (-0500) Subject: osd/OSDMap.cc: clean up pg_temp for nonexistent pgs X-Git-Tag: v17.1.0~379^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=86367ea008281cf4398073466f3ece5ea18e82af;p=ceph-ci.git osd/OSDMap.cc: clean up pg_temp for nonexistent pgs Fixes an issue where the OSDMap does not clear pg-temp entries for PGs that no longer exist. Fixes: https://tracker.ceph.com/issues/53308 Signed-off-by: Cory Snyder --- diff --git a/src/osd/OSDMap.cc b/src/osd/OSDMap.cc index 9a380eae871..f0096d32bee 100644 --- a/src/osd/OSDMap.cc +++ b/src/osd/OSDMap.cc @@ -1807,6 +1807,12 @@ void OSDMap::clean_temps(CephContext *cct, pending_inc->new_pg_temp[pg.first].clear(); continue; } + if (!nextmap.pg_exists(pg.first)) { + ldout(cct, 10) << __func__ << " removing pg_temp " << pg.first + << " for nonexistent pg " << dendl; + pending_inc->new_pg_temp[pg.first].clear(); + continue; + } // all osds down? unsigned num_up = 0; for (auto o : pg.second) {