我有一个需要实现的函数,它将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
中声明为静态)的情况下迭代此对象中的装载。
如果您想基于文件实现一些访问策略,您可能会发现这个conversationhelpfull:
给定dentry没有规范的完整路径。
(path
对象有一个字段,表示对应的vfsmount
对象)。