} 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();
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());
snapserver->finish_recovery(active);
}
+ if (oldstate == MDSMap::STATE_CREATING)
+ return;
+
mdcache->start_recovered_truncates();
mdcache->do_file_recover();
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();