From: Yan, Zheng Date: Tue, 10 Apr 2018 09:14:02 +0000 (+0800) Subject: mds: properly dirty sessions opened by journal replay X-Git-Tag: v12.2.6~152^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8048865b5f09d63e66fe9562765e2102cc8633e2;p=ceph.git mds: properly dirty sessions opened by journal replay Signed-off-by: "Yan, Zheng" Fixes: http://tracker.ceph.com/issues/23625 (cherry picked from commit c66189f00d12704c9e9d715b1c3636aca02499b9) Conflicts: src/mds/journal.cc: Resolved for replay_open_sessions --- diff --git a/src/mds/SessionMap.h b/src/mds/SessionMap.h index 50ffde9cc04f..a6c3cf6bfac2 100644 --- a/src/mds/SessionMap.h +++ b/src/mds/SessionMap.h @@ -557,13 +557,13 @@ public: s.insert(p->second); } - void open_sessions(map& client_map) { + void replay_open_sessions(map& client_map) { for (map::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); } } diff --git a/src/mds/journal.cc b/src/mds/journal.cc index decb7d47b741..f46dc991468f 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -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 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 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(); }