s->inst);
}
-void Client::_closed_mds_session(int mds, MetaSession *s)
+void Client::_closed_mds_session(MetaSession *s)
{
+ s->state = MetaSession::STATE_CLOSED;
mount_cond.Signal();
- if (s)
- remove_session_caps(s);
- kick_requests(mds, true);
+ remove_session_caps(s);
+ kick_requests(s->mds_num, true);
+ mds_sessions.erase(s->mds_num);
delete s;
- mds_sessions.erase(mds);
}
void Client::handle_client_session(MClientSession *m)
break;
case CEPH_SESSION_CLOSE:
- _closed_mds_session(from, session);
+ _closed_mds_session(session);
break;
case CEPH_SESSION_RENEWCAPS:
if (mds >= 0) {
if (s->state == MetaSession::STATE_CLOSING) {
ldout(cct, 1) << "reset from mds we were closing; we'll call that closed" << dendl;
- _closed_mds_session(mds, s);
+ _closed_mds_session(s);
}
}
}
MetaSession *_get_or_open_mds_session(int mds);
MetaSession *_open_mds_session(int mds);
void _close_mds_session(MetaSession *s);
- void _closed_mds_session(int mds, MetaSession *s);
+ void _closed_mds_session(MetaSession *s);
void handle_client_session(MClientSession *m);
void send_reconnect(int mds);
void resend_unsafe_requests(int mds);
case STATE_OPENING: return "opening";
case STATE_OPEN: return "open";
case STATE_CLOSING: return "closing";
+ case STATE_CLOSED: return "closed";
default: return "unknown";
}
}