From c3a509a0f610205e76247545b77c46dc405970ab Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sat, 18 Feb 2012 13:36:24 -0800 Subject: [PATCH] mds: drop all messages during suicide Signed-off-by: Sage Weil --- src/mds/MDS.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index dd56136aeb1e5..d575e031ad96a 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -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; -- 2.39.5