notes on virtio-blk driver
2016-03-28 19:49
344 查看
from block layer perspective
not request_fn based, blk-mq based instead., thus bypassing io scheduler. using one hw queue, so mapping all per-cpu queues into that signle hw queue. requests from generic block layer will first be put on the per-cpu queues and delay work will merge all the
requests from sw queues into the hw queue and send to virtio_queue_rq to process it.
from virtio point of view
one virt queue
a small set of virtio_blk_config
out (ro) and in buffer (writable). in for read, both used for write (order - out,in)
kick doesn't mean flush, because host may still buffer it.
sync part:
submit_bio -> generic_make_request -> blk_mq_make_request -> blk_mq_run_hw_queue -> kblockd_schedule_delayed_work
delayed work:
blk_mq_work_fn -> __blk_mq_run_hw_queue -> virtio_queue_rq
not request_fn based, blk-mq based instead., thus bypassing io scheduler. using one hw queue, so mapping all per-cpu queues into that signle hw queue. requests from generic block layer will first be put on the per-cpu queues and delay work will merge all the
requests from sw queues into the hw queue and send to virtio_queue_rq to process it.
from virtio point of view
one virt queue
a small set of virtio_blk_config
out (ro) and in buffer (writable). in for read, both used for write (order - out,in)
kick doesn't mean flush, because host may still buffer it.
sync part:
submit_bio -> generic_make_request -> blk_mq_make_request -> blk_mq_run_hw_queue -> kblockd_schedule_delayed_work
delayed work:
blk_mq_work_fn -> __blk_mq_run_hw_queue -> virtio_queue_rq
相关文章推荐
- web前端兼容问题
- HDU4276 The Ghost Blows Light(树形DP+背包)
- Android AndroidManifest 清单文件以及权限具体解释
- Log4j配置具体解释
- NHibernate3.2学习笔记-几种查询方式
- 三角形3
- HDU 5651xiaoxin juju needs help 带模除法逆元+有重复元素的全排列值
- 2016春季练习——位运算
- 推荐算法分类:协同过滤、聚类、分类
- 在企业内部分发 iOS 应用程序
- 第三次作业
- 三角形2
- 单链表的基本操作
- 第5周-项目3-时间类(1)
- 优先队列的一些使用
- Install Oracle 10g on Red Hat Linux 5.3 Step by Step
- 腐蚀图像
- 机器学习实战笔记1(机器学习基础)
- 二维数组求最大子矩阵的和
- Android 引导页的实现