本文主要是介绍zfs的同步机制深究(zio层面),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
zfs同步机制 到了zio之后,就很难从代码上进行跟踪了。今天解决了困扰自己数月的问题。对于间接块而言,必须要先同步叶子节点,即该间接块的叶子节点必须申请完新写入的空间,才可以同步他自己。当间接块的zio开始进入zio_write_bp_init流水线的时候,会发现这个时候叶子节点还没有进入zio_ready状态。那么通过函数
点击(此处)折叠或打开
- zio_wait_for_children(zio_t *zio, enum zio_child child, enum zio_wait_type wait)
就会提前退出流水线,直到这个间接块的叶子节点申请完块,进入zio_ready状态的时候,他才开始申请块,这样一级一级的等待,直到dnode的最上层的zio被执行,整个的dnode才完成了同步。
这篇关于zfs的同步机制深究(zio层面)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!