我正在尝试了解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?
谢谢,卡皮尔
答案 0 :(得分:1)
文件系统的Dentry表示挂载点始终在缓存中。此外,文件系统的根节点始终存在。
因此,导航到" / ext3_dir / ext4_dir"不需要文件系统的功能:使用VFS缓存提取dentry和inode。