m->put();
monc->sub_got("osdmap", osdmap->get_epoch());
+
+ if (!waiting_for_map.empty())
+ maybe_request_map();
}
void Objecter::C_Op_Map_Latest::finish(int r)
}
-void Objecter::maybe_request_map(epoch_t epoch)
+void Objecter::maybe_request_map()
{
int flag = 0;
if (osdmap->test_flag(CEPH_OSDMAP_FULL)) {
ldout(cct, 10) << "maybe_request_map subscribing (onetime) to next osd map" << dendl;
flag = CEPH_SUBSCRIBE_ONETIME;
}
- if (!epoch) {
- epoch = osdmap->get_epoch() ? osdmap->get_epoch()+1 : 0;
- }
+ epoch_t epoch = osdmap->get_epoch() ? osdmap->get_epoch()+1 : 0;
if (monc->sub_want("osdmap", epoch, flag))
monc->renew_subs();
}
+void Objecter::wait_for_new_map(Context *c, epoch_t epoch, int err)
+{
+ waiting_for_map[epoch].push_back(pair<Context *, int>(c, err));
+ maybe_request_map();
+}
void Objecter::kick_requests(OSDSession *session)
{
bool keep_balanced_budget;
bool honor_osdmap_full;
- void maybe_request_map(epoch_t epoch=0);
+ void maybe_request_map();
version_t last_seen_osdmap_version;
version_t last_seen_pgmap_version;
int get_client_incarnation() const { return client_inc; }
void set_client_incarnation(int inc) { client_inc = inc; }
- void wait_for_new_map(Context *c, epoch_t epoch, int replyCode=0) {
- maybe_request_map(epoch);
- waiting_for_map[epoch].push_back(pair<Context *, int>(c, replyCode));
- }
+ void wait_for_new_map(Context *c, epoch_t epoch, int err=0);
/** Get the current set of global op flags */
int get_global_op_flags() { return global_op_flags; }