feat(vfs): implement fallocate syscall (#1668)
feat(vfs): implement fallocate syscall
实现 fallocate 系统调用 (syscall 285),用于为文件分配磁盘空间。
- 新增 sys_fallocate.rs 系统调用处理
- 支持 mode=0 的默认分配操作,通过 vfs_truncate 扩展文件
- 暂不支持 FALLOC_FL_KEEP_SIZE、FALLOC_FL_PUNCH_HOLE 等标志位
- fix:add deleted_test
- fix
修复关于文件大小扩展的问题,使其更符合linux语义
fix(vfs): fallocate should only extend file, not shrink
According to Linux fallocate(2) semantics, mode=0 should only extend the file size when offset+len exceeds the current file size. It should never shrink the file.
fix(vfs): fallocate 溢出处理和文件类型检查修复
- 修正文档中的错误码描述(EOPNOTSUPP → EOPNOTSUPP_OR_ENOTSUP)
- 修复溢出处理:使用 checked_add 替代 saturating_add,溢出时正确返回 EINVAL
- 添加文件类型检查,只支持普通文件,与 ftruncate 行为保持一致
- 对于分配大小小于文件空间的,直接明确返回不支持
- fix:修改一些错误码相关
- 添加fallocate的测试
- 添加nix对c_unitest的构建,会直接打包存放在bin下面
improve fallocate coverage and error handling
删除错误文件
Signed-off-by: zhzvitus zhzvitus@gmail.com
轻量级云原生内核
DragonOS
Languages 中文|English
DragonOS龙操作系统是一个面向云计算轻量化场景的,完全自主内核的,提供Linux二进制兼容性的64位操作系统,旨在为容器化工作负载提供轻量级、高性能的解决方案。它使用Rust语言进行开发,以提供更好的可靠性。
DragonOS开源社区成立于2022年7月,完全商业中立。我们热烈欢迎感兴趣的开发者和爱好者加入我们!
DragonOS具有优秀的、完善的架构设计。相比于同体量的其他系统,DragonOS支持eBPF、虚拟化。当前正在大力推进容器支持、云平台支持、riscv支持等工作,以及编译器、应用软件的移植。力求在5年内实现生产环境大规模应用。
DragonOS目前在社区驱动下正在快速发展中,目前DragonOS已经实现了约1/4的Linux接口,在未来我们将提供对Linux的100%兼容性,并且提供新特性。
🌟 想要快速体验DragonOS? 访问 DragonOS Playground 即可在云端零配置一键启动DragonOS,体验最新的nightly build版本!
📰 社区新闻
如何运行?
🌟 方法一:云原生开发(推荐)
零配置、一键启动! 在CNB云原生开发平台上体验DragonOS是最简单快捷的方式,无需本地安装任何依赖!
方法二:本地构建运行
如果您希望在本地环境中构建和运行DragonOS,可以参考以下文档:
参与开发?
仔细阅读 DragonOS社区介绍文档 ,能够帮助你了解社区的运作方式,以及如何参与贡献!
如果你愿意加入我们,你可以查看issue,并在issue下发表讨论、想法,或者访问DragonOS的论坛,了解开发动态、开发任务: https://bbs.dragonos.org.cn
你也可以带着你的创意与想法,和社区的小伙伴一起讨论,为DragonOS创造一些新的功能。
站点
如何与社区建立联系?
请阅读贡献者指南~
贡献者名单
Contributors to DragonOS-Community/DragonOS · GitHub
赞助
DragonOS是一个公益性质的开源项目,它的发展离不开资金的支持,所有的赞助者的名单都会被公示。您的每一分赞助,都会为DragonOS的发展作出贡献!
赞助的资金都会被用到哪里?
我们保证,所有赞助的资金及物品,将会用于:
🌟 赞助商列表
Special thanks to these generous financial supporters (in reverse chronological order):
CDN 赞助商
本项目的CDN加速和安全防护由腾讯EdgeOne赞助。
个人赞赏者列表
请见 Supporters.md
开放源代码声明
本项目采用GPLv2协议进行开源,欢迎您在遵守开源协议的基础之上,使用本项目的代码!
若您发现了任何违背开源协议的使用行为,我们欢迎您发邮件到 pmc@dragonos.org 反馈!让我们共同建设诚信的开源社区。
👩💻 Contributors