]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: finish clientreplay requests before requesting active state 12852/head
authorYan, Zheng <zyan@redhat.com>
Tue, 10 Jan 2017 03:16:47 +0000 (11:16 +0800)
committerYan, Zheng <zyan@redhat.com>
Tue, 10 Jan 2017 03:37:14 +0000 (11:37 +0800)
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 <zyan@redhat.com>
src/mds/MDSRank.cc

index 3b66fc9833e1af4876c4f4d8ef668fa3f266c105..c6576effdb1ad0bc32611adca4418bda212a413a 100644 (file)
@@ -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());