From: Loic Dachary Date: Tue, 23 Aug 2016 06:46:38 +0000 (+0200) Subject: Merge pull request #10500 from Abhishekvrshny/wip-16620-jewel X-Git-Tag: v10.2.3~34 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=282371465476e37408f65fc33145f8a76cf35ac7;p=ceph.git Merge pull request #10500 from Abhishekvrshny/wip-16620-jewel jewel: Fix shutting down mds timed-out due to deadlock Reviewed-by: Greg Farnum --- 282371465476e37408f65fc33145f8a76cf35ac7 diff --cc src/mds/MDSRank.cc index 62dc54dc937,9c5def15a94..1e67833cdb9 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@@ -234,17 -236,13 +234,21 @@@ void MDSRankDispatcher::shutdown( progress_thread.shutdown(); + // release mds_lock for finisher/messenger threads (e.g. + // MDSDaemon::ms_handle_reset called from Messenger). + mds_lock.Unlock(); + + finisher->stop(); // no flushing + // shut down messenger + // release mds_lock first because messenger thread might call + // MDSDaemon::ms_handle_reset which will try to hold mds_lock + mds_lock.Unlock(); messenger->shutdown(); + mds_lock.Lock(); + mds_lock.Lock(); + // Workaround unclean shutdown: HeartbeatMap will assert if // worker is not removed (as we do in ~MDS), but ~MDS is not // always called after suicide.