Skip to content

feat(fs): 实现22个文件系统系统调用,完善VFS基础设施

StellaOS requested to merge feature/network into main

VFS trait 新增:

  • Inode: rename, symlink, read_link, set_timestamps, chmod, chown
  • SuperBlock: statfs
  • Dentry::traverse 支持绝对路径

新增系统调用(22个):

  • 链接/重命名:linkat(37), symlinkat(36), renameat2(276)
  • 截断/属性:truncate(45), ftruncate(46), fstatat(79), statfs(43)
  • 读写:readv(65), writev(66), pread64(67), pwrite64(68)
  • 文件控制:fcntl(25), ioctl(29)
  • 时间戳/权限:utimensat(88), fchmod(52), fchmodat(53), fchownat(54)
  • 符号链接:readlinkat(78)
  • 访问/同步:faccessat(48), sync(81)
  • 传输/分配:sendfile(71), fallocate(47)

后端实现:

  • Ext4Inode: rename(完整跨目录移动+..更新+link count), symlink, read_link, set_timestamps, chmod, chown
  • RamInode: rename, symlink, read_link, chmod
  • FdTable: dup_fd_to, get_cloexec 支持 fcntl

修正:

  • Dentry::traverse 绝对路径自动切换到根
  • chmod 保留文件类型位(防止 InodeFileType::from_bits(0) panic)
  • chown 清除 setuid/setgid 对齐 POSIX
  • ext4_rs: pub mod ext4_defs 暴露目录操作类型

Merge request reports