【发布时间】:2012-03-12 02:39:04
【问题描述】:
我正在研究 Linux 内核代码,尤其是文件系统部分。我发现当内核启动时,为根目录“/”分配了一些 dentry 对象。为什么需要在 RAM 中分配根目录的多个副本?而且,既然dcache(dentry缓存,本质上是一个大的hash表)似乎是在用一个hash函数H(parent_dentry_address, name_hash)来计算一个dentry抵抗的bucket。是不是意味着每个根dentry“/”都做了一个dcache中hash桶的不同dentry映射?
顺便说一句,上述行为是在 Linux-3.3.0-rc4 上观察到的。
【问题讨论】:
-
如果您链接到您正在谈论的代码,这将有所帮助,使用例如lxr.linux.no
-
我还没有找到导致这个问题的原因。我只在 __d_alloc() 中添加了几个 printk 来打印出 dentry->d_name.name 和 dentry 的指针地址。它表明,当 Linux 启动时,分配了几个具有不同指针的“/”目录。
标签: linux filesystems linux-kernel vfs