Feature/ext4
成员 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 正常输出