From: Sage Weil Date: Sun, 19 Feb 2012 15:41:47 +0000 (-0800) Subject: mds: use want_state to indicate shutdown X-Git-Tag: v0.43~61 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ff5178c86a043a26ea8523dd5ac24462a8472fd4;p=ceph.git mds: use want_state to indicate shutdown State gets DNE when we receive the first map. And want_ makes more sense anyway. Fixes MDS startup. Signed-off-by: Sage Weil --- diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index 2f1dd447d555..79d1e6e3bfd1 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -455,6 +455,10 @@ int MDS::init(int wanted_state) monc->wait_auth_rotating(30.0); mds_lock.Lock(); + if (want_state == CEPH_MDS_STATE_DNE) { + mds_lock.Unlock(); + return 0; + } timer.init(); @@ -1522,7 +1526,7 @@ void MDS::handle_signal(int signum) void MDS::suicide() { assert(mds_lock.is_locked()); - state = CEPH_MDS_STATE_DNE; // whatever. + want_state = CEPH_MDS_STATE_DNE; // whatever. dout(1) << "suicide. wanted " << ceph_mds_state_name(want_state) << ", now " << ceph_mds_state_name(state) << dendl; @@ -1591,7 +1595,7 @@ bool MDS::ms_dispatch(Message *m) { bool ret; mds_lock.Lock(); - if (state == CEPH_MDS_STATE_DNE) { + if (want_state == CEPH_MDS_STATE_DNE) { dout(10) << " stopping, discarding " << *m << dendl; m->put(); ret = true; @@ -1960,7 +1964,7 @@ void MDS::ms_handle_connect(Connection *con) { Mutex::Locker l(mds_lock); dout(0) << "ms_handle_connect on " << con->get_peer_addr() << dendl; - if (state == CEPH_MDS_STATE_DNE) + if (want_state == CEPH_MDS_STATE_DNE) return; objecter->ms_handle_connect(con); } @@ -1969,7 +1973,7 @@ bool MDS::ms_handle_reset(Connection *con) { Mutex::Locker l(mds_lock); dout(0) << "ms_handle_reset on " << con->get_peer_addr() << dendl; - if (state == CEPH_MDS_STATE_DNE) + if (want_state == CEPH_MDS_STATE_DNE) return false; if (con->get_peer_type() == CEPH_ENTITY_TYPE_OSD) { @@ -1994,7 +1998,7 @@ void MDS::ms_handle_remote_reset(Connection *con) { Mutex::Locker l(mds_lock); dout(0) << "ms_handle_remote_reset on " << con->get_peer_addr() << dendl; - if (state == CEPH_MDS_STATE_DNE) + if (want_state == CEPH_MDS_STATE_DNE) return; objecter->ms_handle_remote_reset(con); } @@ -2004,7 +2008,7 @@ bool MDS::ms_verify_authorizer(Connection *con, int peer_type, bool& is_valid) { Mutex::Locker l(mds_lock); - if (state == CEPH_MDS_STATE_DNE) + if (want_state == CEPH_MDS_STATE_DNE) return false; AuthAuthorizeHandler *authorize_handler =