1. 程式人生 > >ceph儲存 PG的狀態機和peering過程

ceph儲存 PG的狀態機和peering過程

6).本端使用handle_pg_query 處理g_query_t::LOG,將其封裝成為MOSDPGLog訊息,該訊息傳送到目標auth osd後,有auth osd解封訊息,並且構造PG::MLogRec事件,傳送給auth_osd處理,在auth_osd上形成MQuery& query 交給pg的state_machine處理,處理該事件,pg->fulfill_log(),獲取本地log,然後通過訊息MOSDPGLog發還給primary osd。這時primary 接到auth_osd傳送過來的訊息,並且訊息攜帶auth_log的資訊。在primary解析成為MLogRec 資訊。這時primary osd的狀態為GetLog,開始處理MLogRec 事件。直接出發post_event(GotLog())事件,當GetLog接收到Gotlog事件的時候,先要合併proc_master_log(),然後轉換狀態為GetMissing狀態。