合并IO代码分析
来源:互联网 发布:js cookie 代码 编辑:程序博客网 时间:2024/06/03 11:01
在这里梳理一下zfs合并请求的代码部分。如果fio 不等于lio,说明可以合并临近的IO请求。
if (fio != lio) {uint64_t size = IO_SPAN(fio, lio); 找到IO之间的差值作为新的zio 的size。ASSERT(size <= zfs_vdev_aggregation_limit);ASSERT(vi != NULL); 以第一个zio的io_offset作为起始偏移量。aio = zio_vdev_delegated_io(fio->io_vd, fio->io_offset, vi, size, fio->io_type, ZIO_PRIORITY_AGG, flags | ZIO_FLAG_DONT_CACHE | ZIO_FLAG_DONT_QUEUE, vdev_queue_agg_io_done, NULL);nio = fio;do {dio = nio;nio = AVL_NEXT(t, dio);ASSERT(dio->io_type == aio->io_type);ASSERT(dio->io_vdev_tree == t);if (dio->io_flags & ZIO_FLAG_NODATA) {ASSERT(dio->io_type == ZIO_TYPE_WRITE);bzero((char *)aio->io_data + (dio->io_offset - aio->io_offset), dio->io_size);} else if (dio->io_type == ZIO_TYPE_WRITE) {如果请求为写请求,那么就遍历avl树,由于写请求是按照偏移量来排序的,所以从dio当中复制缓冲区到aio当中。bcopy(dio->io_data, (char *)aio->io_data + (dio->io_offset - aio->io_offset), dio->io_size);}zio_add_child(dio, aio);vdev_queue_io_remove(vq, dio);zio_vdev_io_bypass(dio);zio_execute(dio);} while (dio != lio);直到遍历到最后一个缓冲区的位置。avl_add(&vq->vq_pending_tree, aio);list_remove(&vq->vq_io_list, vi);return (aio);}bcopy将每个dio的缓冲区复制到aio当中,形成一个大的缓冲区aio,aio为每个dio的parent zio。
0
上一篇:简述bloom filter的作用及原理
下一篇:存储自测答案总结
相关热门文章
- 单人操作分析仪中,以最新AKK...
- 单人操作分析仪中,以最新AKK...
- 单人操作分析仪中,以最新AKK...
- mysqlbinlog功能扩展--table参...
- 世界第四大铁矿公司债务问题进...
- 双机热备Oracle数据库服务器操...
- 双机热备Oracle数据库服务器操...
- 双机热备Oracle数据库服务器操...
- 缘聚湘西南 武冈深圳同乡会 欢...
- 虚拟磁带库 变革数据保护流程(...
- 这样配置的服务器能够承受8k并...
- vm里的系统能够ping到nfs,但...
- bind是否随机从两台master中读...
- 在win7下用cygwin搭建hadoop,...
- Mysql的binglog日志能否分库备...
给主人留下些什么吧!~~
评论热议
- 合并IO代码分析
- IO-Polling的代码分析
- java中IO流代码实例分析
- IO流(合并流)
- IO流--流合并
- IO 文件合并
- IO-合并流
- io代码
- io分析
- Java IO _合并流
- JAVA IO流(合并流)
- Java IO _合并流
- Java IO--合并流SequenceInputStream
- Java io 文件读取 合并
- IO流 合并流 SequenceInputStream
- 合并排序代码
- 关于代码合并
- svn代码分支合并
- zfs如何进入内核态
- gdb调试带参数的程序
- zfs中的锁的使用
- mmap优缺点
- 简述bloom filter的作用及原理
- 合并IO代码分析
- c++创建DLL
- 存储自测答案总结
- 通过字符型指针输出字符串
- dbuf_dirty函数分析
- SOA On Tomcat专题2--JBOSS
- Android 更新UI的两种方法——handler和runOnUiThread()
- zfs脏记录分析
- 在linux中安装zfs的方法
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
刷房子
老房子刷墙
刷房子用什么涂料好
北京手机刷地铁下载哪个app
淘宝手机单怎么刷
手机三国杀刷元宝教程
武汉手机刷地铁下载哪个app
手机刷地铁
手机版方舟如何大量刷黑曜石
手机支付公交车怎么刷
手机刷门禁卡
手机怎么刷系统
4g手机怎么刷机
手机如何刷系统
如何给手机刷机
手机刷机有什么用
用手机怎么刷机
3g手机怎么刷机
手机怎么卡刷
怎么刷机安卓系统
安卓如何刷机
咋刷机
刷卡系统
上海地铁怎么用手机刷
北京坐公交车能用手机刷吗
北京公交怎么用手机刷
牙菌斑刷的掉吗
刷把菌多少钱一斤
刷快速排名
刷360排名
刷网站排名
刷网站排名软件
alexa 排名 刷
刷脸支付公司排名
刷快速排名公司
快速排名
敌对区域
敌对分子
敌对区域完整高清国语版
屏幕刷新率是不是越高越好
显示器刷新率越高越好吗