DragonOS icon indicating copy to clipboard operation
DragonOS copied to clipboard

[ENHANCE] 关于 IndexNode 的参数传递优化

Open Samuka007 opened this issue 9 months ago • 1 comments

您的功能请求是否与问题/故障有关?请描述一下。 我们来看 IndexNodecreate 签名 https://github.com/DragonOS-Community/DragonOS/blob/488718dc2ed6ab863a2882f474df5bc313b3640f/kernel/src/filesystem/vfs/mod.rs#L277-L293

注释中描述 vfs::syscall::ModeType 是权限,但实际上包含了文件类型: https://github.com/DragonOS-Community/DragonOS/blob/488718dc2ed6ab863a2882f474df5bc313b3640f/kernel/src/filesystem/vfs/syscall.rs#L42-L89

其中 47-55 行的部分显然与 vfs::FileType 相重复 https://github.com/DragonOS-Community/DragonOS/blob/488718dc2ed6ab863a2882f474df5bc313b3640f/kernel/src/filesystem/vfs/mod.rs#L99-L113

重复将 bitflags 类型实现 enum 的抽象是有意义的,因为语义上考虑到一个文件不可能即是块设备又是符号链接。然而,这里的问题是重复的传参,及其造成的开销。

描述您想要的解决方案 或许直接在 vfs::syscall::ModeType 中提供 .file_type() 类型,转换为 enum,是不错的选择?

上下文 我是在实现 ext4 时发现这个问题的,因为它是继承 posix 封装,参数直接转化为 InodeMode (类比我们系统的ModeType),所以只传递一个参数即可。

Samuka007 avatar Mar 15 '25 05:03 Samuka007

没记错的话,modetype那个是为了跟open/read这些对外的接口的入参保持一致。

fslongjin avatar Apr 02 '25 05:04 fslongjin