EImportStart類分析

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

相關文章
相關標籤/搜索