From: Samuel Just Date: Thu, 7 Feb 2013 21:34:47 +0000 (-0800) Subject: OSD::load_pgs: first scan colls before initing PGs X-Git-Tag: v0.56.4~21 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2dc25dfd47de8d3602bdb3699c82b8b118b0fb28;p=ceph.git OSD::load_pgs: first scan colls before initing PGs Backport: bobtail Signed-off-by: Samuel Just Reviewed-by: Sage Weil (cherry picked from commit 073f58ede2e473af91f76d01679631c169274af7) --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index c0e7d2335e2f..4e44207ddc53 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1483,6 +1483,7 @@ void OSD::load_pgs() derr << "failed to list pgs: " << cpp_strerror(-r) << dendl; } + map > pgs; for (vector::iterator it = ls.begin(); it != ls.end(); it++) { @@ -1516,8 +1517,16 @@ void OSD::load_pgs() if (snap != CEPH_NOSNAP) { dout(10) << "load_pgs skipping snapped dir " << *it << " (pg " << pgid << " snap " << snap << ")" << dendl; + pgs[pgid].insert(snap); continue; } + pgs[pgid]; + } + + for (map >::iterator i = pgs.begin(); + i != pgs.end(); + ++i) { + pg_t pgid(i->first); if (!osdmap->have_pg_pool(pgid.pool())) { dout(10) << __func__ << ": skipping PG " << pgid << " because we don't have pool " @@ -1532,7 +1541,7 @@ void OSD::load_pgs() } bufferlist bl; - epoch_t map_epoch = PG::peek_map_epoch(store, *it, &bl); + epoch_t map_epoch = PG::peek_map_epoch(store, coll_t(pgid), &bl); PG *pg = _open_lock_pg(map_epoch == 0 ? osdmap : service.get_map(map_epoch), pgid);