]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: additional damage handling case in EImportStart 18930/head
authorJohn Spray <john.spray@redhat.com>
Wed, 11 Oct 2017 10:36:36 +0000 (11:36 +0100)
committerShinobu Kinjo <shinobu@redhat.com>
Wed, 15 Nov 2017 03:29:15 +0000 (12:29 +0900)
Fixes: http://tracker.ceph.com/issues/21759
Signed-off-by: John Spray <john.spray@redhat.com>
(cherry picked from commit b4c662c2cf47f7b6f952e776d0212156861eaffb)

src/mds/journal.cc

index b63fbd980c8b0808518fc825281a2aea12809a3b..70163f1f15d1d4b51568ec8c696c4cb10db0bb12 100644 (file)
@@ -2964,7 +2964,14 @@ void EImportStart::replay(MDSRank *mds)
     bufferlist::iterator blp = client_map.begin();
     ::decode(cm, blp);
     mds->sessionmap.open_sessions(cm);
-    assert(mds->sessionmap.get_version() == cmapv);
+    if (mds->sessionmap.get_version() != cmapv)
+    {
+      derr << "sessionmap version " << mds->sessionmap.get_version()
+           << " != cmapv " << cmapv << dendl;
+      mds->clog->error() << "failure replaying journal (EImportStart)";
+      mds->damaged();
+      ceph_abort();  // Should be unreachable because damaged() calls respawn()
+    }
     mds->sessionmap.set_projected(mds->sessionmap.get_version());
   }
   update_segment();