冰块的博客

日拱一卒 不期而至

EROFS Business Scenario

EROFS 业务场景

19 · 业务场景:EROFS 在智能手机系统分区的应用 本文档讲什么:把前面 10 份特性专题串到一个真实业务里—— 智能手机的只读系统分区(/system 等)。 回答:用在什么业务、怎么用、解决什么问题、取得什么效果,以及这些说法的根据是什么。 论文出处 本文档的业务数据全部来自这篇论文,不采用厂商宣传口径。 (论文里有实验条件与对比基线,比”发布会宣称的百分比”可验证得...

EROFS metabox

EROFS 元数据压缩

18 · 特性专题:metabox(元数据压缩) 相关源码:internal.h(erofs_inode_in_metabox()、erofs_iloc())、 super.c(初始化与自检)、inode.c / xattr.c / zdata.c(使用点) 关键字段:metabox_nid、nid 的 EROFS_DIRENT_NID_METABOX_BIT 位 本文回答:元...

EROFS zip accel

EROFS 硬件解压加速

17 · 特性专题:硬件解压加速(ZIP_ACCEL) 对应配置:CONFIG_EROFS_FS_ZIP_ACCEL 主源码:decompressor_crypto.c(189 行) ⚠️ 本机该配置为 n(未启用)——本文件不参与编译,无法在本机实测 本文回答:为什么解压需要硬件加速 → 怎么借 Linux 加密框架的 acomp → 引擎表怎么管理 → 关键结构体与函数 →...

EROFS trace dedupe ishare reading-path

EROFS 跟踪 dedupe 与 ishare 读路径

EROFS dedupe 与 ishare 读路径实测 15 专题讲 dedupe 时有个说法不太好验证:「跨文件重复只存一份,其余位置记为引用」。 光看代码只能看到 Z_EROFS_LI_PARTIAL_REF 这个标志位和 partial_decoding 这个开关, 但「引用」到底长什么样、读起来有什么不同,得实测。 而 11 专题的 ishare(page cache shari...

EROFS 48-bit block address

EROFS 48比特块地址

16 · 特性专题:48-bit 地址 特性标志:EROFS_FEATURE_INCOMPAT_48BIT(internal.h) 相关源码:zmap.c(越界检查)、super.c(读高位字段)、internal.h(辅助函数) 关键字段:blocks_hi、uniaddr_hi(on-disk);sbi->blkszbits 本文回答:为什么 32 位不够 → 48-...

EROFS trace fragment/ztailpacking reading-path

EROFS 跟踪 fragment/ztailpacking 读路径

EROFS fragment 与 ztailpacking:读路径实测 读 14 专题时最容易卡住的地方是:fragment 和 ztailpacking 到底在读路径上差在哪。 两者都跟「文件尾部那点数据」有关,但一个把数据放进 packed inode, 另一个把数据内联进 inode 自己的元数据区。 光看代码不够直观,于是造了三个对照镜像,用同一套 ftrace 手法各抓一次读路...

EROFS dedupe

EROFS 去重

15 · 特性专题:rolling-hash 去重(dedupe) 特性标志:EROFS_FEATURE_INCOMPAT_DEDUPE(internal.h) 内核侧代码:很少——主要在 decompressor.c(处理 deduped 页)与 sysfs 暴露 重要:本特性以 mkfs 侧为主,内核只负责”认得它 + 正确处理去重页” 本文回答:为什么压缩之后还要去重 →...

EROFS fragment and ztailpacking

14 · 特性专题:fragment 与 ztailpacking 相关源码:zmap.c(映射时判断)、zdata.c(z_erofs_read_fragment())、 super.c(packed_inode 初始化) 关键字段:vi->z_fragmentoff、vi->z_idata_size、sbi->packed_nid 本文回答:压缩后剩下的”...

EROFS multdev and device table

EROFS 多设备和设备表

13 · 特性专题:多设备与 device table 相关源码:super.c(挂载时建表)、data.c(erofs_map_dev() 解析)、 internal.h(erofs_device_info / erofs_dev_context) 配置:随主功能编译,无独立 CONFIG 本文回答:为什么要一个文件系统挂多个设备 → 两种模式(flat / 非 flat)差...

EROFS xattr

EROFS 扩展属性

12 · 特性专题:xattr(扩展属性) 对应配置:CONFIG_EROFS_FS_XATTR(及其子项 _POSIX_ACL / _SECURITY) 主源码: xattr.c、xattr.h 相关:internal.h(xattr_isize、xattr_blkaddr 等字段) 本文回答:xattr 是什么、EROFS 为什么需要它 → 两种存储方式怎么权衡 → 内核怎...