首先我想先承接上一篇博文赘述一下dentry和vfsmount是如何联系起来的。从 __lookup_mnt 中可以看到,可以通过vfsmount中相关dentry结构域找到dentry。而从一个dentry如何找到对应它的vfsmount结构呢?其实这是在最开始的初始化函数 do_path_lookup 中就通过把fs_struct 结构的 root 或 pwd 赋值给nd中的path(nd->path = fs->root;nd->path = fs->pwd),来把最开始的vfsmount 和 dentry联系好的。而在后面的过程中dentry或vfsmount的改变都会通过vfsmount中的dentry域紧密联系。
接下来讲这章主题。
之所以称之为简述,是因为这里只讲 do_lookup 的VFS过程,而这个过程比较简单。它包含两个函数:__d_lookup 和 real_lookup 。而所谓的VFS过程其实就是从 dentry 的缓存 dcache 中找到目标dentry。从do_lookup开始就不是沿着路径往上

本文简要介绍了Linux内核中dentry和vfsmount的关联,详细讲解了do_lookup的VFS过程,特别是__d_lookup函数如何在dentry缓存(dcache)中查找目标dentry。内容涵盖了dentry_hashtable哈希表和dentry_unused队列的工作原理,以及它们在dentry管理中的角色。此外,还提到了特殊情况下的dentry处理和dentry的几个关键队列的区别。

704

被折叠的 条评论
为什么被折叠?



