]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: properly dirty sessions opened by journal replay 21441/head
authorYan, Zheng <zyan@redhat.com>
Tue, 10 Apr 2018 09:14:02 +0000 (17:14 +0800)
committerPrashant D <pdhange@redhat.com>
Mon, 16 Apr 2018 06:46:13 +0000 (02:46 -0400)
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
Fixes: http://tracker.ceph.com/issues/23625
(cherry picked from commit c66189f00d12704c9e9d715b1c3636aca02499b9)

Conflicts:
src/mds/journal.cc: Resolved for replay_open_sessions

src/mds/SessionMap.h
src/mds/journal.cc

index 50ffde9cc04f3477dacca53705f2c890307b001c..a6c3cf6bfac2ef756e69b5b3ca1317489c6e7b52 100644 (file)
@@ -557,13 +557,13 @@ public:
        s.insert(p->second);
   }
 
-  void open_sessions(map<client_t,entity_inst_t>& client_map) {
+  void replay_open_sessions(map<client_t,entity_inst_t>& client_map) {
     for (map<client_t,entity_inst_t>::iterator p = client_map.begin(); 
         p != client_map.end(); 
         ++p) {
       Session *s = get_or_add_session(p->second);
       set_state(s, Session::STATE_OPEN);
-      version++;
+      replay_dirty_session(s);
     }
   }
 
index decb7d47b7411a4a835878940c60dcf3e7be1fc0..f46dc991468fcb10986c2f2398e481f706423d76 100644 (file)
@@ -1857,9 +1857,8 @@ void ESessions::replay(MDSRank *mds)
   } else {
     dout(10) << "ESessions.replay sessionmap " << mds->sessionmap.get_version()
             << " < " << cmapv << dendl;
-    mds->sessionmap.open_sessions(client_map);
+    mds->sessionmap.replay_open_sessions(client_map);
     assert(mds->sessionmap.get_version() == cmapv);
-    mds->sessionmap.set_projected(mds->sessionmap.get_version());
   }
   update_segment();
 }
@@ -2132,10 +2131,8 @@ void EUpdate::replay(MDSRank *mds)
       map<client_t,entity_inst_t> cm;
       bufferlist::iterator blp = client_map.begin();
       ::decode(cm, blp);
-      mds->sessionmap.open_sessions(cm);
-
+      mds->sessionmap.replay_open_sessions(cm);
       assert(mds->sessionmap.get_version() == cmapv);
-      mds->sessionmap.set_projected(mds->sessionmap.get_version());
     }
   }
   update_segment();
@@ -2960,7 +2957,7 @@ void EImportStart::replay(MDSRank *mds)
     map<client_t,entity_inst_t> cm;
     bufferlist::iterator blp = client_map.begin();
     ::decode(cm, blp);
-    mds->sessionmap.open_sessions(cm);
+    mds->sessionmap.replay_open_sessions(cm);
     if (mds->sessionmap.get_version() != cmapv)
     {
       derr << "sessionmap version " << mds->sessionmap.get_version()
@@ -2969,7 +2966,6 @@ void EImportStart::replay(MDSRank *mds)
       mds->damaged();
       ceph_abort();  // Should be unreachable because damaged() calls respawn()
     }
-    mds->sessionmap.set_projected(mds->sessionmap.get_version());
   }
   update_segment();
 }