]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: shut down finisher before objecter 13859/head
authorJohn Spray <john.spray@redhat.com>
Wed, 8 Mar 2017 12:13:46 +0000 (12:13 +0000)
committerJohn Spray <john.spray@redhat.com>
Thu, 13 Apr 2017 16:43:39 +0000 (12:43 -0400)
Some of the finisher contexts would try to call into Objecter.
We mostly are protected from this by mds_lock+the stopping
flag, but at the Filer level there's no mds_lock, so in the
case of file size probing we have a problem.

Fixes: http://tracker.ceph.com/issues/19204
Signed-off-by: John Spray <john.spray@redhat.com>
src/mds/MDSRank.cc

index eb538f9c849e214bb3a92a1fdba2cdeb78457bfc..df118e6924824fc16638e943891e687aed5b2677 100644 (file)
@@ -287,6 +287,10 @@ void MDSRankDispatcher::shutdown()
 
   purge_queue.shutdown();
 
+  mds_lock.Unlock();
+  finisher->stop(); // no flushing
+  mds_lock.Lock();
+
   if (objecter->initialized.read())
     objecter->shutdown();
 
@@ -300,8 +304,6 @@ void MDSRankDispatcher::shutdown()
   // MDSDaemon::ms_handle_reset called from Messenger).
   mds_lock.Unlock();
 
-  finisher->stop(); // no flushing
-
   // shut down messenger
   messenger->shutdown();