我想在我的内核模块(这是一个可堆叠的文件系统)中获取文件系统的文件系统挂载点。 例如。 如果/ 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_open
, namespace.c/m_start
)的代码来获取更多细节(例如需要一些锁定)。
但是,我不知道你是否可以在内核模块中完成。
您可以从此代码获取指向vfsmount结构的指针
http://copilotco.com/mail-archives/security-module.2003/msg00627.html