fs/ 源码目录与文件系统索引
1. VFS 核心编译单元
fs/Makefile 无条件编入的主要模块:
| 主题 | 文件 |
|---|---|
| 打开/读写 | open.c, read_write.c, file.c, file_table.c |
| 路径与名称 | namei.c, dcache.c, d_path.c |
| inode/super | inode.c, super.c, bad_inode.c |
| mount | namespace.c, pnode.c, fs_context.c, fsopen.c |
| 元数据 | stat.c, attr.c, xattr.c, readdir.c, utimes.c |
| fd/control | fcntl.c, ioctl.c, select.c |
| I/O | splice.c, sync.c, fs-writeback.c, remap_range.c |
| 注册/解析 | filesystems.c, fs_parser.c, fs_types.c |
| 工具 | seq_file.c, libfs.c, stack.c, fs_pin.c, nsfs.c |
CONFIG_BLOCK=y 时加入 buffer.c、direct-io.c、mpage.c;否则使用 no-block.c。
2. 通用子系统
| 目录/文件 | 功能 |
|---|---|
iomap/ |
extent 映射、buffered/direct I/O |
notify/ |
dnotify/inotify/fanotify/fsnotify |
quota/ |
用户/组/project quota |
crypto/ |
fscrypt 文件级加密 |
verity/ |
fs-verity 文件数据认证 |
netfs/ |
网络文件系统读缓存辅助 |
fscache/, cachefiles/ |
网络数据本地缓存 |
exportfs/ |
NFS export file handle |
nls/, unicode/ |
字符集与 Unicode |
jbd2/ |
ext4 日志层 |
3. 本地块文件系统
| 文件系统 | 目录 | 特点 |
|---|---|---|
| ext4 | ext4/ |
通用、JBD2、extent、成熟 |
| f2fs | f2fs/ |
flash-friendly、segment/SSR |
| XFS | xfs/ |
allocation group、延迟日志、iomap |
| Btrfs | btrfs/ |
CoW、checksum、snapshot、RAID |
| ext2 | ext2/ |
无日志、简单 |
| NILFS2 | nilfs2/ |
log-structured + checkpoint |
| zonefs | zonefs/ |
zoned block device 暴露 |
| GFS2/OCFS2 | 对应目录 | 共享磁盘集群文件系统 |
4. 可移动介质和兼容文件系统
fat/,exfat/ntfs/(旧只读/有限写)与ntfs3/isofs/,udf/hfs/,hfsplus/minix/,sysv/,ufs/等。
5. 闪存与只读镜像
| 文件系统 | 后端 |
|---|---|
| EROFS | 块设备,只读、可压缩 |
| SquashFS | 块设备,只读压缩镜像 |
| CramFS/RomFS | 简单只读镜像 |
| UBIFS | UBI/raw NAND |
| JFFS2 | MTD/raw flash |
UBIFS/JFFS2 不是普通 eMMC/NVMe 的首选;raw NAND 需结合 MTD/UBI。
6. 伪、内存和叠加
ramfs/(同时提供 tmpfs/shmem mount glue)proc/,kernfs/,sysfs/debugfs/,tracefs/,configfs/devpts/,efivarfs/,pstore/overlayfs/fuse/autofs/
7. 网络与分布式
- NFS client/server:
nfs/,nfsd/,nfs_common/ - SMB/CIFS:
smb/client/,smb/server/ - CephFS:
ceph/ - 9P、AFS、Coda、OrangeFS。
其 socket/RPC 基础可能位于 net/,不应把 fs/ 当作全部网络协议实现。
8. 条件编译
fs/Kconfig 汇总各文件系统 Kconfig。关键公共选项:
CONFIG_BLOCKCONFIG_FS_IOMAPCONFIG_FILE_LOCKINGCONFIG_FS_ENCRYPTIONCONFIG_FS_VERITYCONFIG_FS_DAXCONFIG_FS_POSIX_ACLCONFIG_PROC_FS,CONFIG_SYSFS,CONFIG_CONFIGFS_FSCONFIG_FSCACHE,CONFIG_CACHEFILESCONFIG_AIO,CONFIG_EPOLL,CONFIG_USERFAULTFD
源码存在不表示 RK3588 产品配置已启用,应以最终 .config 和 /proc/filesystems 为准。
正在加载留言…