- 论坛徽章:
- 0
|
"现在假设原文件系统中有一目录a,其下有目录b,此时有一软盘,其中仅有一个目录c。那么把软盘挂载到目录b下,此时就有路径:a/b/c,当处于目录c中时,输入命令cd .. 就会返回到挂载点b中,这个过程很简单, ..."
-----------------------------------------------------------------
1, mount了一个文件系统到a/b,看到了a/b/c, 说明了c不是被挂文件系统的根,而是根的一个子目录,这一点很重要。所以在c中执行cd .. 并不需要切换mnt. 执行的是你所说的第2种情况。也就是说, 在b目录下ls, 查看的是软盘的根目录里面有哪些子目录,显然c是一子目录。在c中cd ..只是回到根目录,还在原来的mnt上。
2,在b中cd ..,这就要跨mnt了。因为b是一个挂载点,在b的dentry上是呆不住的,要follow down到软盘根目录的dentry上。也就是说在表面看是呆b中,实际上是当前的dentry实际上是软盘根目录的dentry, 在b中cd .. 就会进入第三种情况,先拿到b真正的dentry, 然后再循环一次,拿到b的dentry后dget(nd->path.dentry->d_parent)就到了a.
|
|