#include "messages/MGenericMessage.h"
-#include "messages/MOSDMap.h"
-
#include "messages/MClientRequest.h"
#include "messages/MClientRequestForward.h"
objecter->init();
+ messenger->add_dispatcher_tail(objecter);
messenger->add_dispatcher_tail(this);
// get monmap
break;
// OSD
- case CEPH_MSG_OSD_OPREPLY:
- ALLOW_MESSAGES_FROM(CEPH_ENTITY_TYPE_OSD);
- objecter->handle_osd_op_reply((class MOSDOpReply*)m);
- break;
case CEPH_MSG_OSD_MAP:
ALLOW_MESSAGES_FROM(CEPH_ENTITY_TYPE_MON | CEPH_ENTITY_TYPE_OSD);
- objecter->handle_osd_map((MOSDMap*)m);
if (is_active() && snapserver)
snapserver->check_osd_map(true);
break;
void MDS::ms_handle_connect(Connection *con)
{
- Mutex::Locker l(mds_lock);
- dout(5) << "ms_handle_connect on " << con->get_peer_addr() << dendl;
- if (want_state == CEPH_MDS_STATE_DNE)
- return;
- objecter->ms_handle_connect(con);
}
bool MDS::ms_handle_reset(Connection *con)
{
+ if (con->get_peer_type() != CEPH_ENTITY_TYPE_CLIENT)
+ return false;
+
Mutex::Locker l(mds_lock);
dout(5) << "ms_handle_reset on " << con->get_peer_addr() << dendl;
if (want_state == CEPH_MDS_STATE_DNE)
return false;
- if (con->get_peer_type() == CEPH_ENTITY_TYPE_OSD) {
- objecter->ms_handle_reset(con);
- } else if (con->get_peer_type() == CEPH_ENTITY_TYPE_CLIENT) {
- Session *session = static_cast<Session *>(con->get_priv());
- if (session) {
- if (session->is_closed()) {
- dout(3) << "ms_handle_reset closing connection for session " << session->info.inst << dendl;
- con->mark_down();
- con->set_priv(NULL);
- sessionmap.remove_session(session);
- }
- session->put();
- } else {
+ Session *session = static_cast<Session *>(con->get_priv());
+ if (session) {
+ if (session->is_closed()) {
+ dout(3) << "ms_handle_reset closing connection for session " << session->info.inst << dendl;
con->mark_down();
+ con->set_priv(NULL);
+ sessionmap.remove_session(session);
}
+ session->put();
+ } else {
+ con->mark_down();
}
return false;
}
void MDS::ms_handle_remote_reset(Connection *con)
{
+ if (con->get_peer_type() != CEPH_ENTITY_TYPE_CLIENT)
+ return;
+
Mutex::Locker l(mds_lock);
dout(5) << "ms_handle_remote_reset on " << con->get_peer_addr() << dendl;
if (want_state == CEPH_MDS_STATE_DNE)
return;
- switch (con->get_peer_type()) {
- case CEPH_ENTITY_TYPE_OSD:
- objecter->ms_handle_remote_reset(con);
- break;
- case CEPH_ENTITY_TYPE_CLIENT:
- Session *session = static_cast<Session *>(con->get_priv());
- if (session) {
- if (session->is_closed()) {
- dout(3) << "ms_handle_remote_reset closing connection for session " << session->info.inst << dendl;
- con->mark_down();
- con->set_priv(NULL);
- sessionmap.remove_session(session);
- }
- session->put();
+ Session *session = static_cast<Session *>(con->get_priv());
+ if (session) {
+ if (session->is_closed()) {
+ dout(3) << "ms_handle_remote_reset closing connection for session " << session->info.inst << dendl;
+ con->mark_down();
+ con->set_priv(NULL);
+ sessionmap.remove_session(session);
}
- break;
+ session->put();
}
}