linux内核路径走。 lookup_slow解释

时间:2017-09-14 18:01:31

标签: linux filesystems kernel ext4 ext3

我正在尝试了解linux内核路径。如何解决以下案例:

对于Path,

“/ ext3_dir / ext4_dir”

假设我们有以下挂载文件系统,ext4_dir是ext4文件系统的根目录,挂载在ext3目录ext3_dir上。

Q1:是否有可能在dentry缓存中不存在对ext4_dir的dentry,或者在ext3顶部安装ext4之后它总是存在?

Q2:如果可能出现dcache miss case,则在下面的慢速路径中:

link_path_walk->walk_component->lookup_slow()

分配第一个dentry

dentry = d_alloc_parallel(dir, name, &wq);

然后我们打电话

inode->i_op->lookup(inode, dentry, flags);

调用实际的文件系统函数来读取父目录的inode数据块内的组件,这里是ext3_dir。 由于ext3_dir在ext3文件系统中,在这种情况下如何访问ext4文件系统以将ext4_dir的数据读入dentry?

谢谢,卡皮尔

1 个答案:

答案 0 :(得分:1)

文件系统的Dentry表示挂载点始终在缓存中。此外,文件系统的根节点始终存在

因此,导航到" / ext3_dir / ext4_dir"不需要文件系统的功能:使用VFS缓存提取dentry和inode。