zfs的同步机制深究(zio层面)

本文探讨了ZFS文件系统的ZIO(Zettabyte I/O)同步机制,通过`zio_wait_for_children`函数分析了如何处理子ZIO任务,涉及线程同步与数据一致性问题。同时,文章还提到了其他不相关的主题,如Linux内核学习、SEO项目沟通、Oracle数据库双机热备等。
摘要由CSDN通过智能技术生成
zfs同步机制 到了zio之后,就很难从代码上进行跟踪了。今天解决了困扰自己数月的问题。
对于间接块而言,必须要先同步叶子节点,即该间接块的叶子节点必须申请完新写入的空间,才可以同步他自己。当间接块的zio开始进入zio_write_bp_init流水线的时候,会发现这个时候叶子节点还没有进入zio_ready状态。那么通过函数

点击(此处)折叠或打开

  1. zio_wait_for_children(zio_t *zio, enum zio_child child, enum zio_wait_type wait)

就会提前退出流水线,直到这个间接块的叶子节点申请完块,进入zio_ready状态的时候,他才开始申请块,这样一级一级的等待,直到dnode的最上层的zio被执行,整个的dnode才完成了同步。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值