UBIFS文件系统(五)

本文深入探讨UBIFS文件系统的数据管理,包括为何data node不从freeable_list查找空间、异常掉电时的数据保护机制、文件系统是否需要replay的判断、mkfs.ubifs的-F参数意义,以及UBIFS的属性和扩展属性。同时讨论了inode在journal删除过程中的行为和可能存在的恢复问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UBIFS文件系统(五)

本文主要解释如下几个问题:

  1. 为什么data node在空间索引时,并不从freeable_list中查找,而为index node索引剩余空间的时候则会?
    写data node时,当该node对应的key在TNC中存在时,会发生node的替换,原node所在LEB的dirty值增加,该LEB可能会成为freeable LEB,但是写数据时该LEB并不在索引的范围之内,这是由于将该存在于该LEB中的node编成脏的新的node可能此时正存在于jhead的wbuf中,还没有同步到flash当中。如果此时将该LEB索引,必会先对其进行unmap,如果此时发生异常掉电则数据将会丢失。而当为index node索引空间时,根据do_commit的流程,此时的jhead对应的wbuf均已被同步到flash,所以此时可以从freeable_list中查找空闲LEB。

  2. 如何判断文件系统是否需要replay?
    文件系统挂载时,会将need_recovery标志写入master node中,当正常卸载调用unmount时会将该标识清除,而如果发生异常掉电时,该标志将仍然存在,再次挂载时则根据该标志是否为1来判断上次是否是正常卸载,从而决定是否replay。

  3. mkfs.ubifs 的 -F参数的作用?
    -F参数将标志为UBIFS_FLG_SPACE_FIXUP保存到sb_node中,当该分区被首次mount为rw模式时(包括从ro模式remount为rw模式),ubifs会将分区内所有包含free空间的LEB进行读取、擦除、回写的操作,以保证所有的n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值