objecter: add new wait_for_osd_map function.

This commit is contained in:
Greg Farnum 2010-11-04 11:28:52 -07:00
parent 68f7fedea1
commit 86d6e51e8b
2 changed files with 15 additions and 0 deletions

View File

@ -211,6 +211,20 @@ void Objecter::handle_osd_map(MOSDMap *m)
monc->sub_got("osdmap", osdmap->get_epoch());
}
void Objecter::wait_for_osd_map()
{
if (osdmap->get_epoch()) return;
Mutex lock("");
Cond cond;
bool done;
lock.Lock();
C_SafeCond *context = new C_SafeCond(&lock, &cond, &done, NULL);
waiting_for_map[0].push_back(pair<Context*, int>(context, 0));
while (!done)
cond.Wait(lock);
lock.Unlock();
}
void Objecter::maybe_request_map()
{

View File

@ -468,6 +468,7 @@ public:
void dispatch(Message *m);
void handle_osd_op_reply(class MOSDOpReply *m);
void handle_osd_map(class MOSDMap *m);
void wait_for_osd_map();
private:
// low-level