rsext4
路径:
components/rsext4类型:库 + 演示二进制 crate 分层:组件层 / 可复用基础组件 版本:0.1.0文档依据:Cargo.toml、README.md、src/lib.rs、src/ext4_backend/ext4.rs、src/ext4_backend/api.rs、src/ext4_backend/blockdev.rs、src/ext4_backend/jbd2/jbd2.rs、src/ext4_backend/datablock_cache.rs、src/ext4_backend/inodetable_cache.rs、src/ext4_backend/bitmap_cache.rs、src/testfs/test_example.rs、src/main.rs、os/arceos/modules/axfs/src/fs/ext4fs.rs
rsext4 是当前仓库里的独立 ext4 引擎。它自己定义块设备接口、挂载与卸载流程、目录/文件 API、JBD2 日志代理、多级缓存和若干 host 侧验证程序;在这棵代码树里,它主要作为旧 ax-fs 的 ext4 叶子后端被消费,而不是作为系统的 VFS 层或名字空间层存在。
架构设计
设计定位
rsext4 的边界非常靠下:
- 它直接面向 ext4 语义和块设备,而不是面向统一 VFS trait。
- 它对外导出的接口既有高层 API(
mount、open、read_at、mkdir等),也有大量后端内部模块,属于“引擎 + 宽导出 API”的风格。 - 在当前仓库里,旧
ax_fs::fs::ext4fs通过适配层把它包装成ax_fs_vfs::VfsOps;新ax-fs-ng的 ext4 路径则改用了lwext4_rust,不再依赖它。
模块结构
src/ext4_backend/blockdev.rs:定义BlockDevicetrait、BlockDev缓冲封装以及Jbd2Dev。src/ext4_backend/ext4.rs:文件系统核心对象Ext4FileSystem,包含超级块、块组描述符、分配器和三层缓存。src/ext4_backend/api.rs:高层调用入口,如fs_mount、fs_umount、open、read_at、write_at。src/ext4_backend/file.rs、dir.rs:文件/目录操作,包括创建、删除、rename、link、symlink、truncate 等。src/ext4_backend/jbd2/*:ordered 模式元数据日志提交与回放。src/ext4_backend/datablock_cache.rs、inodetable_cache.rs、bitmap_cache.rs:三类缓存,各自维护 BTreeMap + LRU 访问计数。src/main.rs、src/testfs/*:host 文件镜像驱动的演示和回归脚手架。
1.3 核心对象与数据路径
rsext4 并不是单层 API,而是一条较完整的 ext4 数据通路: