zfs的zio代码部分学习

来源:互联网 发布:js cookie 代码 编辑:程序博客网 时间:2024/06/03 05:37
在对zfs的介绍当中,会提到他会对读写请求排序,然后再合并相邻的请求。
这也是可以理解的。通过阅读代码发现,实际上对请求的排序工作都是在avl树当中进行的。


点击(此处)折叠或打开

  1. struct vdev_queue {
  2.     avl_tree_t    vq_deadline_tree;
  3.     avl_tree_t    vq_read_tree;
  4.     avl_tree_t    vq_write_tree;
  5.     avl_tree_t    vq_pending_tree;
  6.     list_t        vq_io_list;
  7.     kmutex_t    vq_lock;
  8. };
vdev_queue这个数据结构完成了对zio请求的排序工作,并递归的将相邻的请求合并为一个请求。


另再补一下我对dmu层的观察,我发现dmu层的代码是当你发出了读请求之后db->db_blkptr这里面是有内容的,当你发出了写请求时,db->db_blkptr里面是没有内容的,这也很容易理解,毕竟此时还不知道到底应该向哪个盘上写,也不知道应该怎么写,这一切都是由底层来决定。
阅读(100) | 评论(0) | 转发(0) |
0

上一篇:vmalloc内核函数分析。

下一篇:zfs的双buffer设计问题

相关热门文章
  • HHVM安装
  • 初识Hadoop
  • Hadoop集群配置中如何写入和读...
  • Winsock中EWOULDBLOCK返回码在...
  • Hadoop分布式文件系统安全隐患...
  • 双机热备Oracle数据库服务器操...
  • 双机热备Oracle数据库服务器操...
  • 双机热备Oracle数据库服务器操...
  • 缘聚湘西南 武冈深圳同乡会 欢...
  • 虚拟磁带库 变革数据保护流程(...
  • 这样配置的服务器能够承受8k并...
  • vm里的系统能够ping到nfs,但...
  • bind是否随机从两台master中读...
  • 在win7下用cygwin搭建hadoop,...
  • Mysql的binglog日志能否分库备...
给主人留下些什么吧!~~
原创粉丝点击