From b52c5088618011a569f157616c5c667c2fc1e9fe Mon Sep 17 00:00:00 2001 From: John Spray Date: Wed, 8 Mar 2017 12:13:46 +0000 Subject: [PATCH] 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 (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 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 728af772bae6..d050afe955b5 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -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(); -- 2.47.3