2011-01-07 93 views
4

是否可以从给定的dentry和inode构造绝对路径?Linux Kernel dentry和inode

感谢所有

+0

你可以反复提升'd_parent'并跟踪'd_name'吗? – chrisaycock 2011-01-07 05:46:08

+0

是的,这是可能的,我已经这么做了...... *但是*如果给定的dentry是一个已安装的文件系统(来自USB,NFS或其他任何东西),则d_parent将停止,直到该文件系统的根目录为止......假设/ dev/sda1安装在/ tmp/a/b/c/d/e /(* root的/ dev/sda1 *),最高的d_parent值将会*在*“e”目录之后 – 2011-01-07 05:48:05

+1

@Billy您是否希望为不同的解决方案? – chrisaycock 2011-01-07 05:50:10

回答

1

看看dentry_path()。它将填充一个缓冲区,直到达到根的路径。要继续过去,您需要遍历文件的f_vfsmount和它的mnt_parent s,直到您到达文件系统的真实根目录。

1

是的,只有一个dentry就足够了,通过dentry-> parent返回。 当你遇到一个挂载点时要小心,对于linux支持“一个dentry挂载多个设备”......好吧,它很容易编码,只需切换到vfsmnt-> mnt_parent。

顺便说一句:我经常困惑,为什么linux建立一个字段“mnt_parent”而不是“mnt_child”的挂载点链接列表,当我写这个答案时,我似乎猜测出了一些东西。

相关问题