const MDSMap::mds_info_t& info = mdsmap->get_mds_info(mds);
for (set<int>::const_iterator q = info.export_targets.begin();
q != info.export_targets.end();
- q++) {
+ ++q) {
- if (mds_sessions.count(*q) == 0 && waiting_for_session.count(*q) == 0) {
+ if (mds_sessions.count(*q) == 0 &&
+ mdsmap->is_clientreplay_or_active_or_stopping(*q)) {
ldout(cct, 10) << "check_mds_sessions opening mds." << mds
- << " export target mds." << *q << dendl;
- messenger->send_message(new MClientSession(CEPH_SESSION_REQUEST_OPEN),
- mdsmap->get_inst(*q));
- waiting_for_session[*q].size();
+ << " export target mds." << *q << dendl;
+ _open_mds_session(*q);
}
}
}
while (it != in->caps.end()) {
int mds = it->first;
Cap *cap = it->second;
- it++;
+ ++it;
+ MetaSession *session = mds_sessions[mds];
+ assert(session);
+
int revoking = cap->implemented & ~cap->issued;
ldout(cct, 10) << " cap mds." << mds
// pick auth mds
assert(in->auth_cap);
- int mds = in->auth_cap->session->inst.name.num();
+ MetaSession *session = in->auth_cap->session;
int mseq = in->auth_cap->mseq;
- assert(mds >= 0);
- for (map<snapid_t,CapSnap*>::iterator p = in->cap_snaps.begin(); p != in->cap_snaps.end(); p++) {
+ for (map<snapid_t,CapSnap*>::iterator p = in->cap_snaps.begin(); p != in->cap_snaps.end(); ++p) {
CapSnap *capsnap = p->second;
if (again) {
// only one capsnap
// send any cap releases
for (map<int,MetaSession*>::iterator p = mds_sessions.begin();
p != mds_sessions.end();
- p++) {
+ ++p) {
- if (p->second->release && mdsmap->is_up(p->first)) {
- messenger->send_message(p->second->release, mdsmap->get_inst(p->first));
+ if (p->second->release && mdsmap->is_clientreplay_or_active_or_stopping(p->first)) {
+ messenger->send_message(p->second->release, p->second->con);
p->second->release = 0;
}
}
for (map<int,MetaSession*>::iterator p = mds_sessions.begin();
p != mds_sessions.end();
- p++) {
+ ++p) {
ldout(cct, 15) << "renew_caps requesting from mds." << p->first << dendl;
if (mdsmap->get_state(p->first) >= MDSMap::STATE_REJOIN)
- renew_caps(p->first);
+ renew_caps(p->second);
}
}