Skip to content

Feature/ext4

不让内核死机 requested to merge feature/ext4 into main

成员 2:补强 EXT4/fd syscall 基础语义

  • fstat/newfstatat 支持从 EXT4 inode 返回真实 metadata

    • st_mode 使用 inode mode,libc 可通过 S_ISREG/S_ISDIR 判断文件类型
    • 可执行文件保留 0755 权限位,例如 busybox 返回 0x81ed
    • st_size 使用 inode size,busybox 等大文件大小正确
    • st_blocks/st_nlink 使用 EXT4 inode 字段
    • overlay/可写 fd 保留动态 size fallback
  • 修复 fs::resolve_path 的父目录归一化

    • 支持 "." 和 ".."
    • /glibc/basic + .. 可回到 /glibc
    • 修复 runner 在 cd .. 后继续执行 ./busybox 的路径风险
    • ./busybox 可正确解析到 /glibc/busybox 或 /musl/busybox
  • 完成 lseek 最小 errno 语义

    • 支持 SEEK_SET / SEEK_CUR / SEEK_END
    • 支持 cached regular fd 和目录缓存 fd
    • 同步维护 fd_offset_table,目录 fd 同步 fd_dir_cursor_table
    • 错误返回改为 -EBADF / -EINVAL / -ESPIPE,便于 libc 正确处理

验证:

  • cargo fmt
  • make -C oskernel kernel-rv
  • QEMU EXT4 启动与 runner smoke
  • 验证 cd .. 后 cwd 回到 /glibc、/musl,结束 marker 正常输出

Merge request reports