##ini
nvmf_dev_write
nvmf_create_ctrl : ops->create_ctrl(dev, opts)
nvme_rdma_create_ctrl
reconnect_work : nvme_rdma_reconnect_ctrl_work // 初始化这些work
err_work :nvme_rdma_error_recovery_work // 初始化这些work
reset_work :nvme_rdma_reset_ctrl_work // 初始化这些work
nvme_init_ctrl #### ctrl状态为NVME_CTRL_NEW
scan_work : nvme_scan_work
async_event_work :nvme_async_event_work
fw_act_work :nvme_fw_act_work
delete_work :nvme_delete_ctrl_work
ka_work : nvme_keep_alive_work
#### ctrl状态变为 NVME_CTRL_CONNECTING
nvme_rdma_setup_ctrlr
nvme_rdma_configure_admin_queue
nvme_rdma_configure_io_queues
#### ctrl状态变为 NVME_CTRL_LIVE
nvme_start_ctrl
nvme_start_keep_alive
nvme_queue_scan : ctrl->scan_work
nvme_enable_aen : nvme_set_features, NVME_FEAT_ASYNC_EVENT
queue_work : async_event_work
nvme_start_queues
host删除一个设备的流程
nvme_sysfs_delete
nvme_delete_ctrl_sync
nvme_delete_ctrl
### ctrlr状态变为 NVME_CTRL_DELETING
queue_work : ctrl->delete_work : nvme_delete_ctrl_work
nvme_stop_ctrl
nvme_mpath_stop
nvme_stop_keep_alive
nvme_remove_namespaces
传输层删除ctrl --会写cc寄存器 reg_write32,是否是这里引起tgt进行相应反应
nvme_put_ctrl
tgt ns_change异步事件触发
此为configfs的基本框架,当用户态修改该属性时,会调用store方法。
nvmet_subsystems_group_ops
nvmet_subsys_make
nvmet_namespaces_type
nvmet_namespaces_group_ops
nvmet_ns_make
nvmet_ns_type
nvmet_ns_attrs
nvmet_ns_attr_revalidate_size
nvmet_ns_revalidate_size_store
nvmet_ns_revalidate -- 里面区分了block_device和VFS 再进行size的比较判断是否有更改
nvmet_ns_changed -- 获取ns之前大小和现在大小比较不同则进行更新
nvmet_ns_changed
nvmet_add_async_event
schedule_work :ctrl->async_event_work :nvmet_async_event_work
nvmet_async_event_work
nvmet_async_events_process
nvmet_set_result :nvmet_async_event_result 将异步事件类型、信息填给req的rsp?
nvmet_req_complete
__nvmet_req_complete
nvmet_tcp_queue_response
queue_work_on : nvmet_tcp_io_work 回复给host,内核的io流程处理还需要仔细看
ctrl->nr_async_event_cmds 这个东西不太理解是不是可以理解为 aer_req ?