]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: properly save snaptable after upgrading version
authorYan, Zheng <zyan@redhat.com>
Wed, 11 Apr 2018 01:59:04 +0000 (09:59 +0800)
committerYan, Zheng <zyan@redhat.com>
Thu, 19 Apr 2018 03:32:18 +0000 (11:32 +0800)
commit 002c732d "mds: make sure snaptable version > 0" is buggy

Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
src/mds/MDSRank.cc

index 8d8faf199d0eb2fc18e8bead65d9ac30694bbed3..ca60ea602854d2d162813381910c0b0e4d4e498b 100644 (file)
@@ -1317,11 +1317,12 @@ void MDSRank::replay_done()
   mdlog->get_journaler()->set_writeable();
   mdlog->get_journaler()->trim_tail();
 
-  if (snapserver->get_version() == 0) {
+  if (mdsmap->get_tableserver() == whoami &&
+      snapserver->get_version() == 0) {
     // upgraded from old filesystem. version 0 snaptable confuses current code.
     dout(1) << "upgrading snaptable version from 0 to 1" << dendl;
     snapserver->reset();
-    sessionmap.save(new C_MDSInternalNoop);
+    snapserver->save(new C_MDSInternalNoop);
   }
 
   if (g_conf->mds_wipe_sessions) {
@@ -1524,7 +1525,6 @@ void MDSRank::boot_create()
 
   mdcache->init_layouts();
 
-  snapserver->set_rank(whoami);
   inotable->set_rank(whoami);
   sessionmap.set_rank(whoami);
 
@@ -1560,6 +1560,7 @@ void MDSRank::boot_create()
   // initialize tables
   if (mdsmap->get_tableserver() == whoami) {
     dout(10) << "boot_create creating fresh snaptable" << dendl;
+    snapserver->set_rank(whoami);
     snapserver->reset();
     snapserver->save(fin.new_sub());
   }