ubifs master.c代码分析

本文详细分析了UBIFS文件系统中Master.c的实现,包括ubifs_read_master和ubifs_write_master函数,以及扫描和验证主节点的过程。在读取过程中,通过scan_for_master函数查找并复制有效的master node,确保文件系统的正确运行。写入时,主节点内容会写入LEB1和LEB2以保证至少有一个有效的master node。

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

Master.c:

master node用来记录管理所有on-flash上位置不固定的结构。

UBIFSmaster node内容重复的写入LEB1LEB2中,这样可以保证任何时刻都有一个有效的master node存在。master node大小为512 bytes,顺序的占用LEBpage,如果整个LEB都被master node写满,那么执行unmap操作,分配一个新空LEB。注意unmap LEB1 LEB2操作也要顺序的进行,如果同时unmap两个master LEB,系统就暂时的处于无有效master node的状态。一个master LEB可能存在masternode的多个版本,LEB内最后一个master node是有效的

ubifs_read_master

函数功能:在ubifs被挂载的时候用来寻找并且读出node中的有效数据并且将数据复制到c->mst_node缓存区中去结构体中去。

①  :首先调用scan_for_master()将masternode中的内容复制到c->mst_node中去,。

②  使用c->mst_node中的内容将c中的变量进行赋值,其中c是结构体“ubifs_info”。

③  调用validate_master()对于从master中读出的内容进行的有效性进行检查。

 

scan_for_master

fs/ubifs/master.c

函数功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值