From: John Spray Date: Thu, 18 Jun 2015 10:08:05 +0000 (+0100) Subject: mds: drop MDSIOContext on mds->stopping X-Git-Tag: v9.0.3~116^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f2daa19c8d5a61f032db87f7ae844340549c2351;p=ceph.git mds: drop MDSIOContext on mds->stopping `stopping` is true once the MDS has entered suicide(). During this phase, any MDSIOContexts that are called (e.g. from objecter, journaler) become no-ops. Signed-off-by: John Spray --- diff --git a/src/mds/MDSContext.cc b/src/mds/MDSContext.cc index 9a9a6f15ba14..59854ff2869b 100644 --- a/src/mds/MDSContext.cc +++ b/src/mds/MDSContext.cc @@ -52,6 +52,12 @@ void MDSIOContextBase::complete(int r) { dout(10) << "MDSIOContextBase::complete: " << typeid(*this).name() << dendl; assert(mds != NULL); Mutex::Locker l(mds->mds_lock); + if (mds->stopping) { + dout(4) << "MDSIOContextBase::complete: dropping for stopping " + << typeid(*this).name() << dendl; + return; + } + if (r == -EBLACKLISTED) { derr << "MDSIOContextBase: blacklisted! Restarting..." << dendl; mds->respawn();