From: John Spray Date: Wed, 8 Mar 2017 12:13:46 +0000 (+0000) Subject: mds: shut down finisher before objecter X-Git-Tag: v12.0.2~69^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=177a97d5c55ee6a2d5dcd3cf0893546190b10f7a;p=ceph.git mds: shut down finisher before objecter 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 --- diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index eb538f9c849e..df118e692482 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -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();