BDI各个结构体关系

BDI各个结构体关系

  • 每块磁盘对应着一个BDI设备,用struct backing_dev_info表示
  • 系统上所有BDI设备通过struct list_head bdi_list;链表串在一起
  • 一个BDI设备对应一个struct bdi_writeback结构,存放该设备需要处理的脏页及脏页回写函数
  • struct delayed_work定义了一个延迟任务,其处理函数也就是脏页回写函数,bdi_writeback_workfn
  • struct list_head b_dirty存放该BDI所有dirty inode,但回写时不是在这个链表上处理
  • struct list_head b_io, b_dirty链表上的dirty inode经过dirty_expire_centisecs后,过期才会挂到该链表,进行实际的回写。而且还会对该链表排序,按分区将inode排序,因为同一块磁盘可能有多个分区,每个分区的文件系统可能不同,回写脏页的处理也不尽相同,排序是为了提供效率,避免频繁切换,同时有时候回写任务是针对特定某个分区,这样回写就更快
  • struct list_head b_more_io主要是存放b_io链表处理时无法处理的inode,会先放到这里,避免一致等待inode可用,减少竞争
  • struct list_head work_list链表挂的是该BDI设备所有的回写任务,比如周期回写或者background回写,以及对某个分区的单独回写。回写函数就是通过执行struct wb_writeback_work这一个一个任务,把struct list_head b_io链表中的dirty inode回写到设备。
    在这里插入图片描述
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值