server_start_targets
lustre_start_simple
do_lcfg //for LCFG_ATTACH
class_attach
do_lcfg //for LCFG_SETUP
class_setup
class_attach
class_newdev
class_setup
obd_setup
lov_setup
obd_llog_init
lov_llog_init
llog_setup //LLOG_MDS_OST_ORIG_CTXT, lov_mds_ost_orig_logops
lov_llog_origin_connect
llog_connect
llog_origin_connect //send LLOG_ORIGIN_CONNECT RPC
=> llog_handle_connect
llog_setup //LLOG_SIZE_REPL_CTXT, lov_size_repl_logops
//循环调用
obd_llog_init
osc_llog_init
llog_setup //LLOG_MDS_OST_ORIG_CTXT, osc_mds_ost_orig_logops
llog_obd_origin_setup
llog_create
llog_process
llog_setup //LLOG_SIZE_REPL_CTXT, osc_size_repl_logops
mds_finish_transno
lustre_msg_get_transno
fsfilt_add_journal_cb
fsfilt_write_record
mds_lov_write_objids
fsfilt_commit
mdc_unlink
mdc_reint
## XID
oti->oti_xid = req->rq_xid;
ptlrpc_prep_req_pool
request->rq_xid = ptlrpc_next_xid();
## transaction
oti_init
target_send_reply
## replay
struct obd_import
struct list_head imp_replay_list;
struct list_head imp_sending_list;
struct list_head imp_delayed_list;
ptlrpc_queue_wait
after_reply
lustre_msg_set_transno
ptlrpc_retain_replayable_request
lustre_msg_get_last_committed
ptlrpc_import_recovery_state_machine
ptlrpc_replay_next
ptlrpc_replay_req
## import req 状态机
enum lustre_imp_state {
LUSTRE_IMP_CLOSED = 1,
LUSTRE_IMP_NEW = 2,
LUSTRE_IMP_DISCON = 3,
LUSTRE_IMP_CONNECTING = 4,
LUSTRE_IMP_REPLAY = 5,
LUSTRE_IMP_REPLAY_LOCKS = 6,
LUSTRE_IMP_REPLAY_WAIT = 7,
LUSTRE_IMP_RECOVER = 8,
LUSTRE_IMP_FULL = 9,
LUSTRE_IMP_EVICTED = 10,
};
2021-05-07
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。