如何获取当前ROOT_NODE的Arc<MountFSInode>/Arc<MountFS>

需求:通过传入ROOT_NODE来构造一个MountFS
647dea6776b4a8a638f7283359ce5b6
现状:
4d5dd5c88ed6b3f5ebee92838a62e8f
找到这个函数,但是返回的是MountFSInode的ref,直接解引用会违反所有权规则

为什么要获取这个,这个对于文件系统而言是透明的。

参考这个函数即可实现你要的功能:

https://code.dragonos.org.cn/xref/DragonOS/kernel/src/filesystem/vfs/core.rs?r=5b59005f930266d0e9c0092373e894826150f862&mo=1287&fi=52#52

此代码可以创建ramfs,但要将其挂载到对应目录下,需要传入Arc<MountFSInode>。
曾尝试在该函数中添加语句,在根目录下创建ram目录但不进行迁移,实测创建成功但无法在目录下mkdir。

那是因为你实现的新的ramfs有问题,mountfs相关的东西,对于具体的文件系统而言是透明的。当你考虑到要在具体文件系统中获取mountfs相关的数据的时候,说明思路错了。可以参考procfs和devfs的初始化的写法。

如果无法mkdir,一种常见的错误可能是因为你的ramfs的inode没有正确实现open和close函数。

1 个赞

用的是当前库的代码。

找到问题了,感谢解答

发现是novashell里的目录解析bug导致在用户程序shell无法mkdir,在自己编写的用户程序中调用相同的接口能够实现创建目录,这个bug已修复,已在github上发起PR。

已在github回复

1 个赞