#define CEPH_FEATURE_UID (1<<0)
#define CEPH_FEATURE_NOSRCADDR (1<<1)
#define CEPH_FEATURE_MONCLOCKCHECK (1<<2)
- #define CEPH_FEATURE_MONNAMES (1<<3)
-
- #define CEPH_FEATURE_SUPPORTED_MON CEPH_FEATURE_UID|CEPH_FEATURE_NOSRCADDR|\
- CEPH_FEATURE_MONCLOCKCHECK|\
- CEPH_FEATURE_MONNAMES
- #define CEPH_FEATURE_REQUIRED_MON CEPH_FEATURE_UID
- #define CEPH_FEATURE_SUPPORTED_MDS CEPH_FEATURE_UID|CEPH_FEATURE_NOSRCADDR|\
- CEPH_FEATURE_MONNAMES
- #define CEPH_FEATURE_REQUIRED_MDS CEPH_FEATURE_UID
- #define CEPH_FEATURE_SUPPORTED_OSD CEPH_FEATURE_UID|CEPH_FEATURE_NOSRCADDR|\
- CEPH_FEATURE_MONNAMES
- #define CEPH_FEATURE_REQUIRED_OSD CEPH_FEATURE_UID
- #define CEPH_FEATURE_SUPPORTED_CLIENT CEPH_FEATURE_NOSRCADDR|\
- CEPH_FEATURE_MONNAMES
- #define CEPH_FEATURE_REQUIRED_CLIENT 0
+ #define CEPH_FEATURE_FLOCK (1<<3)
+ #define CEPH_FEATURE_SUBSCRIBE2 (1<<4)
++#define CEPH_FEATURE_MONNAMES (1<<5)
/*
dout(10) << "get_monmap" << dendl;
Mutex::Locker l(monc_lock);
- _sub_want("monmap", monmap.get_epoch());
+ _sub_want("monmap", 0, 0);
- if (cur_mon < 0)
+ if (cur_mon.empty())
_reopen_session();
while (want_monmap)
return 0;
}
- _sub_want("monmap", monmap.get_epoch());
+ _sub_want("monmap", monmap.get_epoch() ? monmap.get_epoch() + 1 : 0, 0);
- if (cur_mon < 0)
+ if (cur_mon.empty())
_reopen_session();
utime_t until = g_clock.now();
void MonClient::_finish_hunting()
{
if (hunting) {
- dout(0) << "found mon." << cur_mon << dendl;
- dout(1) << "found mon" << cur_mon << dendl;
++ dout(1) << "found mon." << cur_mon << dendl;
hunting = false;
}
}
dout(0) << "forward from entity with insufficient caps! "
<< session->caps << dendl;
} else {
-
- MonSession *s = new MonSession(m->client);
- s->caps = m->client_caps;
Connection *c = new Connection;
+ MonSession *s = new MonSession(m->msg->get_source_inst(), c);
c->set_priv(s);
+ c->set_peer_addr(m->client.addr);
+ c->set_peer_type(m->client.name.type());
+ s->caps = m->client_caps;
+ s->proxy_con = m->get_connection()->get();
+ s->proxy_tid = m->tid;
+
PaxosServiceMessage *req = m->msg;
m->msg = NULL; // so ~MForward doesn't delete it
req->set_connection(c);
void Monitor::check_sub(Subscription *sub)
{
- dout(0) << "check_sub monmap last " << sub->last << " have " << monmap->get_epoch() << dendl;
- if (sub->last < monmap->get_epoch()) {
+ dout(0) << "check_sub monmap next " << sub->next << " have " << monmap->get_epoch() << dendl;
+ if (sub->next <= monmap->get_epoch()) {
- send_latest_monmap(sub->session->inst);
+ send_latest_monmap(sub->session->con);
if (sub->onetime)
session_map.remove_sub(sub);
else