如何从 inode 创建 struct vfsmount?

How can I create struct vfsmount from inode?

我有一个需要实现的函数,它获取 i_node (struct inode *) 和 d_entry (struct dentry *) 作为输入参数。如何从这两个输入创建 vfsmount

一般来说,你不能。 vfsmount 对象对于 file 对象是可访问的,而不是对于 dentry 对象(inode 可以被视为严格连接到 dentry,所以它不会添加任何东西dentry 的新手)。

dentry对象没有vfsmount对象,普遍对应:它依赖于mnt_namespace对象。您可以获得名称空间,例如当前进程:current->nsproxy->mnt_ns,但你不应该在不使用 namespace_sem 信号量的情况下迭代此对象中的装载,该信号量在 fs/namespace.c.

中声明为静态

如果您想基于文件实施某些访问策略,您可能会发现此 conversation 很有帮助:

There is no canonical full path for a given dentry.

(path对象有一个字段,表示对应vfsmount对象)。