从给定的dentry和inode是否可以构建绝对路径?
谢谢大家
struct path
(或者可以构建一个),可以看看tomoyo是如何做到这一点的:
http://lxr.linux.no/linux+v2.6.37/security/tomoyo/realpath.c#L86
看一下dentry_path()
。它会将缓冲区填充到挂载点的根路径。要继续前进,您需要遍历文件的f_vfsmount
和它的mnt_parent
,直到到达文件系统的真正根目录。
是的,只需要一个dentry,通过dentry->parent向后遍历即可。 当你遇到挂载点时要小心,因为Linux支持“一个dentry可以挂载多个设备”……好吧,编码很容易,只需切换到vfsmnt->mnt_parent。
顺便说一句:当我写这个答案时,我经常被困惑为什么Linux使用“mnt_parent”而不是“mnt_child”字段来构建挂载点链接列表,现在我似乎猜出了一些原因。
d_parent
并跟踪d_name
吗? - chrisaycockvfsmount
。 - chrisaycock