From: Yan, Zheng Date: Tue, 10 Jan 2017 03:16:47 +0000 (+0800) Subject: mds: finish clientreplay requests before requesting active state X-Git-Tag: v12.0.0~200^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F12852%2Fhead;p=ceph.git mds: finish clientreplay requests before requesting active state All clientreplay requests' finish contexts should be executed before MDCache::export_remaining_imported_caps(). Otherwise MDCache::try_reconnect_cap() may fail to reconnect client caps. Fixes: http://tracker.ceph.com/issues/18461 Signed-off-by: Yan, Zheng --- diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 3b66fc9833e..c6576effdb1 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -1254,7 +1254,7 @@ void MDSRank::clientreplay_start() bool MDSRank::queue_one_replay() { if (replay_queue.empty()) { - clientreplay_done(); + mdlog->wait_for_safe(new C_MDS_VoidFn(this, &MDSRank::clientreplay_done)); return false; } queue_waiter(replay_queue.front());