I want to get the filesystem mount point for a file system in my kernel module, which is a stackable filesystem. Eg. if /home/ab/abc is a file and /home is mounted on a diff
If someone still needs to "dereference" given path to its mount point there is follow_up function which does exactly this thing :) It operates on the struct path and changes it accordingly to its .mnt entry. Maybe someone will find it handy!
Edit: I've used it in the 5.6 kernel version. I don't know if it was always available (<5.6)
You can get the list of file systems from current->namespace
. By iterating current->namespace->list
(items being struct vfsmount
) you can get all mounted file systems. vfsmount->mnt_mountpoint
is the directory entry you want.
You can follow the code that prints /proc/mounts
(e.g. base.c/mountstats_open
, namespace.c/m_start
) to get more details (e.g. some locking is needed).
I don't know if you can do it in a kernel module, however.