-
Notifications
You must be signed in to change notification settings - Fork 36
Open
Labels
Milestone
Description
[任务] 在 slayerfs 元数据层新增对 Link / Symlink 节点类型的支持
[任务分值] 60 分
[背景描述] 当前 SlayerFS 仅支持普通文件与目录,不支持硬链接与符号链接,导致基础 POSIX 测试(hardlink/symlink)失败。为提高兼容性,需要在元数据模型中引入可表示两类链接的节点,并在 VFS 层提供最小实现。实现基础的创建、解析、删除及解析跳转),使 FUSE 层的 ln / ln -s 操作不再返回 ENOSYS。
[需求描述]
- 在元数据模型中增加节点类型枚举值:File、Directory、Symlink、Hardlink(或 Link):
- Symlink:存储目标路径(原始字符串),解析时不做规范化(后续扩展再处理)。
- Hardlink:共享同一底层 inode/对象标识(引用计数递增/递减)。
- 新增接口:create_symlink(parent, name, target)、create_hardlink(existing_path, new_parent, new_name)
- unlink 行为:Symlink 直接删除;Hardlink 引用计数为 1 时删除底层对象,否则只减计数。
- open / read 路径解析:遇到 Symlink 按一次跳转解析(不做环检测,TODO 标注)。
- 在 FUSE 层对 symlink / link 请求调用上述接口;现有返回 ENOSYS 处替换为具体实现。
- 添加最小单元测试:
- 创建 symlink 后读取目标文件内容成功
- 创建两个 hardlink,引用计数正确,删除一个仍可访问另一个
- 添加英文文档说明:docs/ 目录新增 link_symlink.md,描述语义与限制。
- 不实现跨分区校验与复杂循环检测(用 TODO 英文标注)。
[代码标准]
- 所有 PR 提交必须 Signed-off-by 且使用 GPG 签名。
- 所有 PR 需通过 GitHub Actions。
- 注释与公共 API 文档英文书写。
[PR 提交地址] 提交到 rk8s 仓库的 main 分支 slayerfs 目录。
[开发指导]
- 认领任务参考 r2cn 开源实习计划 - 任务认领与确认;
- 先扩展元数据结构,再实现 chmod 接口与 FUSE 层映射,最后补充测试。
[导师及邮箱] 请申请此题目的同学使用邮件联系导师,或加入到 R2CN Discord 后在 #p-rk8s 频道和导师交流。
- Quanyi Ma [email protected]
[备注]
- 认领实习任务的同学,必须完成测试任务和注册流程,请参考: r2cn 开源实习计划 - 测试任务 和 r2cn 开源实习计划 - 学生注册与审核
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
No status