如何从 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
对象)。
我有一个需要实现的函数,它获取 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
对象)。