kernel-nvmf

##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 ?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值