]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: shut down finisher before objecter 14683/head
authorJohn Spray <john.spray@redhat.com>
Wed, 8 Mar 2017 12:13:46 +0000 (12:13 +0000)
committerNathan Cutler <ncutler@suse.com>
Thu, 20 Apr 2017 13:21:14 +0000 (15:21 +0200)
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>
(cherry picked from commit 177a97d5c55ee6a2d5dcd3cf0893546190b10f7a)

Conflicts:
        src/mds/MDSRank.cc (no purge_queue.shutdown() in jewel because jewel
        does not have 8ebf7d95a9071de24bb1e56a6423c505169cb4de)

src/mds/MDSRank.cc

index 728af772bae6a6cd5710b25aa6d4cc7f1bfe5dfb..d050afe955b534f5c973e0831f729fad044f6de3 100644 (file)
@@ -228,6 +228,10 @@ void MDSRankDispatcher::shutdown()
   // shut down cache
   mdcache->shutdown();
 
+  mds_lock.Unlock();
+  finisher->stop(); // no flushing
+  mds_lock.Lock();
+
   if (objecter->initialized.read())
     objecter->shutdown();
 
@@ -241,7 +245,6 @@ void MDSRankDispatcher::shutdown()
   // MDSDaemon::ms_handle_reset called from Messenger).
   mds_lock.Unlock();
 
-  finisher->stop(); // no flushing
   messenger->shutdown();
 
   mds_lock.Lock();