[ENHANCE] 关于 IndexNode 的参数传递优化
您的功能请求是否与问题/故障有关?请描述一下。
我们来看 IndexNode 的 create 签名
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),所以只传递一个参数即可。
没记错的话,modetype那个是为了跟open/read这些对外的接口的入参保持一致。