if (!is_any_replay())
balancer->try_rebalance();
+ {
+ map<epoch_t,list<Context*> >::iterator p = waiting_for_mdsmap.begin();
+ while (p != waiting_for_mdsmap.end() && p->first <= mdsmap->get_epoch()) {
+ list<Context*> ls;
+ ls.swap(p->second);
+ waiting_for_mdsmap.erase(p++);
+ finish_contexts(g_ceph_context, ls);
+ }
+ }
+
out:
m->put();
delete oldmap;
list<Context*> replay_queue;
map<int, list<Context*> > waiting_for_active_peer;
list<Message*> waiting_for_nolaggy;
+ map<epoch_t, list<Context*> > waiting_for_mdsmap;
map<int,version_t> peer_mdsmap_epoch;
void wait_for_reconnect(Context *c) {
waiting_for_reconnect.push_back(c);
}
+ void wait_for_mdsmap(epoch_t e, Context *c) {
+ waiting_for_mdsmap[e].push_back(c);
+ }
void enqueue_replay(Context *c) {
replay_queue.push_back(c);
}