]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: drop all messages during suicide
authorSage Weil <sage.weil@dreamhost.com>
Sat, 18 Feb 2012 21:36:24 +0000 (13:36 -0800)
committerSage Weil <sage@newdream.net>
Sat, 18 Feb 2012 22:28:42 +0000 (14:28 -0800)
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
src/mds/MDS.cc

index dd56136aeb1e5a52901a3614ee06114ea1ca4809..d575e031ad96aaa0163cbe3cf3b79d9f9e9f2e2b 100644 (file)
@@ -1522,10 +1522,7 @@ void MDS::handle_signal(int signum)
 void MDS::suicide()
 {
   assert(mds_lock.is_locked());
-  if (want_state == MDSMap::STATE_STOPPED)
-    state = want_state;
-  else
-    state = CEPH_MDS_STATE_DNE; // whatever.
+  state = CEPH_MDS_STATE_DNE; // whatever.
 
   dout(1) << "suicide.  wanted " << ceph_mds_state_name(want_state)
          << ", now " << ceph_mds_state_name(state) << dendl;
@@ -1774,6 +1771,12 @@ bool MDS::is_stale_message(Message *m)
  * it has not put the message. */
 bool MDS::_dispatch(Message *m)
 {
+  if (state == CEPH_MDS_STATE_DNE) {
+    dout(0) << " stopping, discarding " << *m << dendl;
+    m->put();
+    return true;
+  }
+
   if (is_stale_message(m)) {
     m->put();
     return true;