From 83bd3430e3a17b77265e696095904b7a9032d2ee Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Wed, 10 Sep 2014 13:44:58 +0800 Subject: [PATCH] mds: fix replay locking When replaying EImportFinish/EFragment event, the replay thread may call MDS::queue_waiters. MDS::queue_waiters() requires its caller to hold the mds_lock. Otherwise assert(waiter_mutex == __null || waiter_mutex->is_locked()) in Cond::Signal() will be tiggered. Signed-off-by: Yan, Zheng --- src/mds/MDLog.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mds/MDLog.cc b/src/mds/MDLog.cc index 6de3f3e93216..837a47597b31 100644 --- a/src/mds/MDLog.cc +++ b/src/mds/MDLog.cc @@ -1045,7 +1045,9 @@ void MDLog::_replay_thread() le->_segment->end = journaler->get_read_pos(); num_events++; + mds->mds_lock.Lock(); le->replay(mds); + mds->mds_lock.Unlock(); } delete le; -- 2.47.3