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,
};
网友评论