From: Yan, Zheng Date: Fri, 11 Apr 2014 01:43:59 +0000 (+0800) Subject: mds: finish table servers recovery after creating newfs X-Git-Tag: v0.80-rc1~61^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=f6c20730c16a7632061639dd83be523fc6a9a44f;p=ceph.git mds: finish table servers recovery after creating newfs Fixes: #8054 Signed-off-by: Yan, Zheng --- diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index 2473ff0eb1fda..b4cce0824c6aa 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -994,9 +994,10 @@ void MDS::handle_mds_map(MMDSMap *m) } else { // did i just recover? if ((is_active() || is_clientreplay()) && - (oldstate == MDSMap::STATE_REJOIN || + (oldstate == MDSMap::STATE_CREATING || + oldstate == MDSMap::STATE_REJOIN || oldstate == MDSMap::STATE_RECONNECT)) - recovery_done(); + recovery_done(oldstate); if (is_active()) { active_start(); @@ -1564,7 +1565,7 @@ void MDS::active_start() finish_contexts(g_ceph_context, waiting_for_active); // kick waiters } -void MDS::recovery_done() +void MDS::recovery_done(int oldstate) { dout(1) << "recovery_done -- successful recovery!" << dendl; assert(is_clientreplay() || is_active()); @@ -1579,6 +1580,9 @@ void MDS::recovery_done() snapserver->finish_recovery(active); } + if (oldstate == MDSMap::STATE_CREATING) + return; + mdcache->start_recovered_truncates(); mdcache->do_file_recover(); diff --git a/src/mds/MDS.h b/src/mds/MDS.h index a1e1c58c83f99..1cd6096b46d13 100644 --- a/src/mds/MDS.h +++ b/src/mds/MDS.h @@ -389,7 +389,7 @@ class MDS : public Dispatcher { void rejoin_joint_start(); void rejoin_start(); void rejoin_done(); - void recovery_done(); + void recovery_done(int oldstate); void clientreplay_start(); void clientreplay_done(); void active_start();