]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: shut down finisher before objecter 16102/head
authorJohn Spray <john.spray@redhat.com>
Wed, 8 Mar 2017 12:13:46 +0000 (12:13 +0000)
committerNathan Cutler <ncutler@suse.com>
Tue, 4 Jul 2017 11:02:14 +0000 (13:02 +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 - kraken has no 7189b53b410424d4a662486c1081181b2bd662ff
        so we omit the purge_queue.shutdown() call

src/mds/MDSRank.cc

index 63ad51bd9567073f024b1539d190c4e94f291251..c8900cdf3c443795ddc9e700b59bfc413797cc7c 100644 (file)
@@ -238,6 +238,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();
 
@@ -251,8 +255,6 @@ void MDSRankDispatcher::shutdown()
   // MDSDaemon::ms_handle_reset called from Messenger).
   mds_lock.Unlock();
 
-  finisher->stop(); // no flushing
-
   // shut down messenger
   messenger->shutdown();