From: Piotr Dałek Date: Thu, 15 Oct 2015 08:53:55 +0000 (+0200) Subject: osd: drop the interim set from load_pgs() X-Git-Tag: v10.0.0~68^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F6277%2Fhead;p=ceph.git osd: drop the interim set from load_pgs() During execution of load_pgs(), all PGs are added to interim set and then processed again from the beginning. Discard this extra loop and entire interim set, saving a bit of memory and CPU time (by better utilization of L1/L2 caches). Signed-off-by: Piotr Dałek --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index a4af99819994..29ccc15726fc 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2827,31 +2827,24 @@ void OSD::load_pgs() derr << "failed to list pgs: " << cpp_strerror(-r) << dendl; } - set pgs; + bool has_upgraded = false; + for (vector::iterator it = ls.begin(); it != ls.end(); ++it) { spg_t pgid; - if (it->is_temp(&pgid) || - it->is_removal(&pgid) || - (it->is_pg(&pgid) && PG::_has_removal_flag(store, pgid))) { + if (it->is_temp(&pgid) || it->is_removal(&pgid) || + (it->is_pg(&pgid) && PG::_has_removal_flag(store, pgid))) { dout(10) << "load_pgs " << *it << " clearing temp" << dendl; recursive_remove_collection(store, pgid, *it); continue; } - if (it->is_pg(&pgid)) { - pgs.insert(pgid); + if (!it->is_pg(&pgid)) { + dout(10) << "load_pgs ignoring unrecognized " << *it << dendl; continue; } - dout(10) << "load_pgs ignoring unrecognized " << *it << dendl; - } - - bool has_upgraded = false; - for (set::iterator i = pgs.begin(); i != pgs.end(); ++i) { - spg_t pgid(*i); - if (pgid.preferred() >= 0) { dout(10) << __func__ << ": skipping localized PG " << pgid << dendl; // FIXME: delete it too, eventually