Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1899072
  • 博文数量: 211
  • 博客积分: 464
  • 博客等级: 下士
  • 技术积分: 3794
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-24 18:25
个人简介

阿弥陀佛

文章分类

全部博文(211)

文章存档

2020年(2)

2019年(3)

2018年(5)

2017年(6)

2016年(10)

2015年(9)

2014年(73)

2013年(90)

2012年(13)

分类: 服务器与存储

2012-12-16 21:04:27

作者:沈岩
转载请注明出处。
我发现国内研究zfs的同学非常少,如果你也跟我有相同的爱好,研究zfs,请告诉我,相互学习。
商业文件系统zfs是文件系统当中相当出色的一个了,由sun公司开发。
spa_sync函数负责同步spa中所有的内容到磁盘。
然后会同步dsl,之后就是同步dbuf,将dmu buffer中的内容同步到磁盘上。
dbuf_sync_list 负责同步的主要工作,他是一个递归函数,同步两种类型,分两种{sync_leaf,sync_indirect(会调用sync_list )}。

dbuf_sync_leaf 和 dbuf_sync_indirect 都会调用dbuf_write 函数,这个函数会将向下产生一个zio,这个zio将携带很多的写的相关信息,包括写的数据的偏移量,以及优先级信息。

db->db_data_pending 这个变量只有在sync_leaf和 sync_indirect 两个函数当中赋值了。
下面的代码仅仅出现在sync_leaf 和sync_indirect 两个函数中。

点击(此处)折叠或打开

  1. db->db_data_pending = dr;

  2.     mutex_exit(&db->db_mtx);

  3.     dbuf_write(dr, *datap, tx);
而且dbuf_write 这个函数的作用是产生一个zio,这个zio的请求类型是ZIO_TYPE_WRITE 结构,
dbuf_write 并没有进行写磁盘的操作,只是zio_nowait()函数 或者zio_wait 函数进入了流水线,并进行真正的写磁盘的操作。
阅读(2385) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~