]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: use want_state to indicate shutdown
authorSage Weil <sage.weil@dreamhost.com>
Sun, 19 Feb 2012 15:41:47 +0000 (07:41 -0800)
committerSage Weil <sage.weil@dreamhost.com>
Sun, 19 Feb 2012 15:41:47 +0000 (07:41 -0800)
State gets DNE when we receive the first map.  And want_ makes more sense
anyway.  Fixes MDS startup.

Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
src/mds/MDS.cc

index 2f1dd447d555fa991f34bd6a4c4c3fcf1b036aff..79d1e6e3bfd1c8caa87e28980b0161e245cc4da1 100644 (file)
@@ -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 =