}
// load up pgs (as they previously existed)
- load_pgs();
-
+ // defer querying until after the messenger is initialized
+ map<int, map<pg_t, PG::Query> > query_map;
+ load_pgs(query_map);
+
dout(2) << "superblock: i am osd" << superblock.whoami << dendl;
assert_warn(whoami == superblock.whoami);
if (whoami != superblock.whoami) {
dout(0) << "started rotating keys" << dendl;
#endif
+ do_queries(query_map);
+
return 0;
}
}
-void OSD::load_pgs()
+void OSD::load_pgs(map<int, map<pg_t, PG::Query> > &query_map)
{
assert(osd_lock.is_locked());
dout(10) << "load_pgs" << dendl;
int role = osdmap->calc_pg_role(whoami, pg->acting, nrep);
pg->set_role(role);
+ PG::RecoveryCtx rctx(&query_map, 0, 0, 0, 0);
+ pg->handle_create(&rctx);
+
dout(10) << "load_pgs loaded " << *pg << " " << pg->log << dendl;
pg->unlock();
}
ObjectStore::Transaction **pt,
C_Contexts **pfin);
- void load_pgs();
+ void load_pgs(map<int, map<pg_t, PG::Query> > &query_map);
void calc_priors_during(pg_t pgid, epoch_t start, epoch_t end, set<int>& pset);
void project_pg_history(pg_t pgid, PG::Info::History& h, epoch_t from,
vector<int>& lastup, vector<int>& lastacting);