virtio-blk初始化

本文详细介绍了virtio-blk设备的初始化过程,从virtblk_probe函数开始,包括init_vq、vp_find_vqs、vp_try_to_find_vqs、vp_setup_vq和setup_vq等函数的作用和执行步骤。在初始化完成后,建立了virtio数据结构与blk-mq块驱动模型之间的关系,为virtio-blk设备的运行奠定了基础。
摘要由CSDN通过智能技术生成

virtio-blk初始化

source code: 3.19.3
(ps:如有错误请大家留言指正,每晚我会查看一下;若有幸被转载或引用请注明下,谢谢)


对于virtio-blk设备,virtio-bus的probe回调函数会调用对应驱动的probe回调函数,这里就是virtblk_probe函数来进行初始化操作。当此函数执行完成的时候,virtio-blk相关的数据结构也就建立完成了。


先来看看完成初始化之后的数据结构关系图(有些域未标出):
这里写图片描述
上图主要是virtio中定义的数据结构,virtio-blk使用了blk-mq块驱动模型(在图中没有画出),通过gendisk的request_queue结构的域queue、virtio-blk结构的域tag_set和blk-mq模型的数据结构衔接了起来。
* 强调*
图中涉及到两个数量:
1.num表示的是该队列的size,但不是以byte为单位的,需要通过vring_size函数进行计算
2.nr_vqs表示的是虚拟队列的数量、也就是虚拟硬件支持的硬件队列数量

virtblk_probe函数

主要流程:
1.调用ida_simple_get函数得到了一个新id值,这个id将在创建磁盘名字的时候派上用场
2.得到硬件上支持多少个segments(因为都是聚散IO,这个s

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值