EImportStart類說明:
class EImportStart:public LogEvent {
dirfrag_t base;
vector<dirfrag_t> bounds;
EMetaBlob metablob;
bufferlist client_map;
version_t cmapv;
};session
EImportStart類方法:
EImportStart::update_segment()
|__設置LogSegment的sessionmapv爲cmapv,即:_segment->sessionmapv=cmapvit
EImportStart::replay(mds)
|__執行EMetaBlob::replay()操做
|__將bounds添加到MDCache的ambiguous中,即:mds->mdcache->add_ambiguous_import()
|__從MDCache中獲得base的CDir
|__遍歷bounds集合
|__獲得bounds在MDCache中的CDir
|__將CDir插入到realbounds集合中
|__將realbounds集合加入到MDCache中,即:mds->mdcache->adjust_bounded_subtree_auth()
|__若mds的sessinmap版本小於cmapv
|__解析client_map到map<client_t, entity_inst_t>cm中
|__執行mds中sessionmap的open_sessions()操做,即:mds->sessionmap.open_sessions(cm)
|__設置mds中sessionmap爲projected,即:mds->sessionmap.set_projected()
|__執行update_segment()
io