冰块的博客

日拱一卒 不期而至

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 为什么需要它 → 两种存储方式怎么权衡 → 内核怎...

EROFS trace read funcgraph

EROFS 跟踪读调用路径

EROFS read 流程追踪 内容分两部分,两者除「镜像怎么挂」之外,追踪手法完全一致: 实验 A — fileio(文件后端)read 路径 实验 B — bdev(块设备)read 路径 0. 环境 / 前提 项 值 宿主机内核 5.10.0.x86_64(ftrace...

EROFS page cache sharing

EROFS 页缓存共享

11 · 特性专题:page cache sharing(ishare) 对应配置:CONFIG_EROFS_FS_PAGE_CACHE_SHARE 主源码:ishare.c(223 行);相关:xattr.c(指纹来源)、internal.h(erofs_real_inode()) 本文回答:为什么同一份数据会被缓存多份 → EROFS 怎么让多个文件共享一份页缓存 → 指纹...

EROFS FSDAX

EROFS 文件系统直接访问持久内存

10 · 特性专题:FSDAX(文件系统直接访问持久内存) 对应配置:CONFIG_FS_DAX(内核通用)+ EROFS 的 dax=always 挂载选项 相关源码:data.c(I/O 与 mmap)、inode.c(S_DAX 标志设置) 本文回答:为什么只读文件系统也需要 DAX → EROFS 的 DAX 与常规路径差在哪 → 用到哪些结构 → 关键函数做什么 → ...

EROFS file-backed image

EROFS 文件后端

09 · 特性专题:文件后端(file-backed image / fileio) 对应配置:CONFIG_EROFS_FS_BACKED_BY_FILE 主源码:fileio.c(不到200行,是 EROFS 里最小的特性文件之一) 本文回答六个问题:为什么需要它(缘由)→ 为什么会这样设计(理念)→ 它长什么样(架构)→ 用到哪些结构体 → 关键函数在做什么 → 一次读的...

EROFS core struct

EROFS 核心结构体

08 · 核心结构体:关键字段与它们之间的联系 本文档是参考手册,不是阶段教学。读完整条路线后回头查字段最有用; 也适合在读 03/04 章(读路径)时作为对照表放在旁边。 本文档目标(读完你应该能做到什么) 说出 EROFS 里 5 层核心结构体分别管什么,以及它们在什么文件里 看到 sbi->blkszbits、vi->datalayout、map.m...