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