在内核模块中获取文件系统挂载点

我想在我的内核模块(这是一个可堆叠的文件系统)中获取文件系统的文件系统挂载点。 例如。 如果/ home / ab / abc是一个文件,/ home被安装在不同的文件系统上,我想要一个dentry或path结构到/ home。 我想在一个模块中做这个,而不用修改内核代码。 例如/ home / user /中有一个文件,现在我想知道这个文件在哪个分区。 例如,该文件可能位于与“/”相同的分区中,或者该文件可能位于/ home或/ home / user上的另一个分区中。

您可以从current->namespace获得文件系统列表。 通过迭代current->namespace->list (项目是struct vfsmount ),你可以获得所有的挂载文件系统。 vfsmount->mnt_mountpoint是你想要的目录条目。

您可以按照prints /proc/mounts (例如base.c/mountstats_opennamespace.c/m_start )的代码来获取更多细节(例如需要一些锁定)。

但是,我不知道你是否可以在内核模块中完成。

您可以从此代码获取指向vfsmount结构的指针

http://copilotco.com/mail-archives/security-module.2003/msg00627.html