ubifs - superblock
来源:互联网 发布:华为批量配置端口 编辑:程序博客网 时间:2024/06/05 06:12
ubifs superblock
- 1 superblock node.
- store system data
- superblock node be rewritten only if an automatic resize occurs. (image size < volume size -> resizing)
ubi对LEB的操作是原子操作,以保证数据更新成功。
superblock数据定义在下面这个文件中。
fs/ubifs/ubifs-media.h
这个文件描述了ubifs的格式及相关的数据结构和常量的定义。
所有ubifs on-flash objects都是以节点的形式存放的。
所有节点都是以ubifs node magic number开始,并具有相同的的header。
Nodes是8-byte aligned. Node header sizes也是8-byte aligned,(除了indexing node与padding node)。
在看superblock前,记住下面的结构。
/* UBIFS node magic number (must not have the padding byte first or last) */
#define UBIFS_NODE_MAGIC 0x06101831
/**
* struct ubifs_ch - common header node.
* 每个ubifs node都是以common part开始的,如果有key,那么key会紧随common header
*/
struct ubifs_ch {
__le32 magic; // * @magic: UBIFS node magic number (%UBIFS_NODE_MAGIC)
__le32 crc; // * @crc: CRC-32 checksum of the node header
__le64 sqnum; // * @sqnum: sequence number
__le32 len; //* @len: full node length
__u8 node_type; // * @node_type: node type
__u8 group_type; // * @group_type: node group type
__u8 padding[2]; // * @padding: reserved for future, zeroes
} __packed;
struct ubifs_sb_node {
struct ubifs_ch ch; // * @ch: common header
__u8 padding[2]; // * @padding: reserved for future, zeroes
__u8 key_hash; // * @key_hash: type of hash function used in keys
__u8 key_fmt; // * @key_fmt: format of the key
__le32 flags; // * @flags: file-system flags: UBIFS_FLG_BIGLPT or UBIFS_FLG_SPACE_FIXUP???
__le32 min_io_size; // 最小读写单元
__le32 leb_size; // LEB大小,单位字节
__le32 leb_cnt; //系统使用的的leb 数量
__le32 max_leb_cnt; //系统使用的最大leb数量
__le64 max_bud_bytes; // * @max_bud_bytes: maximum amount of data stored in buds ???
__le32 log_lebs; // log area占用的leb数量
__le32 lpt_lebs; // lpt area 占用的leb数量
__le32 orph_lebs; //orphon area占用的leb数量
__le32 jhead_cnt; //journal header 数量
__le32 fanout; // * @fanout: tree fanout (max. number of links per indexing node) ???
__le32 lsave_cnt; // LPT save table中LEB Numbers的数目,LEB saved table用来在mount时加快查找LPT中空闲eraseblocks的速度.
__le32 fmt_version; // * @fmt_version: UBIFS on-flash format version
__le16 default_compr; //默认压缩算法
__u8 padding1[2]; // * @padding1: reserved for future, zeroes
__le32 rp_uid; // * @rp_uid: reserve pool UID
__le32 rp_gid; // * @rp_gid: reserve pool GID
__le64 rp_size; // * @rp_size: size of the reserved pool in bytes
__le32 time_gran; // * @time_gran: time granularity in nanoseconds
__u8 uuid[16]; // * @uuid: UUID (全局唯一标示符)generated when the file system image was created
__le32 ro_compat_version; // * @ro_compat_version: UBIFS R/O compatibility version
__u8 padding2[3968]; // * @padding2: reserved for future, zeroes
} __packed;
super block的数据很少改动,除了resize的时候。
- ubifs- superblock
- ubifs - superblock
- UBIFS 磁盘结构 之 superblock
- ubifs- 六大区域 (superblock area, master area, log area, lpt area, orphan area, main area )
- UBIFS
- UBIFS
- ubifs
- UBIFS
- ubifs
- ubifs?
- ubifs
- ubifs
- UBIFS
- superblock.c
- 什么是ubifs
- ubifs & mtd
- UBIFS 简介
- ubifs & mtd
- 解决xcode ios8.0 simulator APP无法获取中文的问题
- Android - 确认ImageView的图片是否加载成功
- Leetcode Largest Number
- 书法教育在高校素质教育中的地位及其实施
- JSP自定义标签开发入门
- ubifs - superblock
- easyui datagrid实现复选框的多选和单选删除
- Reverse String Question
- Android - Bug:The content of the adapter has changed but ListView did not receive a notification.
- 困扰我很久的 字符串常量指针问题
- 【BZOJ】【P3210】【花神的浇花集会】【题解】【曼哈顿距离变形】
- JS中用于精确计算的加减乘除方法
- flex通过AdvancedDataGrid合并单元格,导出为excel表格
- hdoj 2036 改革春风吹满地