nvme req的dma映射与提交流程注释

时间:2024-03-22 17:06:33

nvme_queue_rq函数用于提交一个req到nvme submission queue中。

nvme req的dma映射与提交流程注释

1,nvme_setup_cmd用于构造nvme cmd:

nvme req的dma映射与提交流程注释 nvme_setup_rw函数用于设置nvme读写命令的基础字段:

nvme req的dma映射与提交流程注释

  2,nvme_map_data函数为req的bio中所有vector建立dma散列表映射

nvme req的dma映射与提交流程注释

blk_rq_map_sq函数是核心的dma映射函数:

nvme req的dma映射与提交流程注释

散列表sg的结构:

nvme req的dma映射与提交流程注释

__blk_bvec_map_sq函数用于映射单个bio sector: 

nvme req的dma映射与提交流程注释

nvme req的dma映射与提交流程注释 

__blk_bios_map_sq函数为req中每个bio所有的vector创建dma映射:

nvme req的dma映射与提交流程注释

3,nvme_pci_setup_prps函数设置nvme cmd中prp字段

nvme req的dma映射与提交流程注释 nvme req的dma映射与提交流程注释

 4,提交nvme cmd

nvme req的dma映射与提交流程注释

 写sq tail doorbell寄存器nvme req的dma映射与提交流程注释