nameidata路径查找辅助结构
来源:互联网 发布:php连接数据库语句 编辑:程序博客网 时间:2024/06/11 08:28
转自:http://blog.sina.com.cn/s/blog_4a2f24830100l2h4.html
根据路径名寻找目标节点的dentry
5.1.
- 首先找到根文件系统的根目录节点 dentry 和 inode
- 由这个 inode 提供的操作接口 i_op->lookup(),找到下一层节点 ‘mnt’ 的dentry 和 inode
- 由 ‘mnt’ 的 inode 找到 ‘win’ 的 dentry 和 inode
- 由于 ‘win’ 是个“安装点”,因此需要找到“被安装设备”/dev/sda1 根目录节点的 dentry 和inode,只要找到 vfsmount B,就可以完成这个任务。
- 然后由 /dev/sda1 根目录节点的 inode 负责找到下一层节点 ‘dir1’ 的 dentry 和inode
- 由于 dir1 是个“安装点”,因此需要借助 vfsmount C 找到 /dev/sda2 的根目录节点 dentry 和inode
- 最后由这个 inode 负责找到 ‘abc’ 的 dentry 和 inode
现在有两个问题:
- 在寻找过程的第一步,如何得到“根文件系统”的根目录节点的 dentry?
答案是这个 dentry 是被保存在进程的 task_struct 中的。后面分析进程与文件系统关系的时候再说这个。 - 如何寻找 vfsmount B 和 C?
这是接下来要分析的。
5.2.
- 现在有四个 vfsmount A, B, C, D
- A 和B对应着不同的安装点 ‘win’ 和 ‘linux’,但是都指向 /dev/sda1 根目录的 dentry
- C 和D 对应着这相同的安装点 ‘dir1’,也都指向 /dev/sda2 根目录的 dentry
- C 是 A 的 child, A是 C 的 parent
- D 是 B 的 child, B 是 D 的 parent
5.3.
6.
- 打开这个文件的进程的 uid,pid
- 打开的方式
- 读写的方式
- 当前在文件中的位置
7.
8.
struct files_struct {
};
8.2. struct
struct fs_struct {
};
- root 指向此进程的“根目录”,通常就是“根文件系统”的根目录 dentry
- pwd 指向此进程当前所在目录的 dentry
因此,通过task_struct->fs->root,就可以找到“根文件系统”的根目录dentry,这就回答了 5.1 小节的第一个问题。 - rootmnt :指向“安装”根文件系统时创建的那个 vfsmount
- pwdmnt:指向“安装”当前工作目录所在文件系统时创建的那个 vfsmount
这两个域用于初始化 nameidata 结构。
8.3.
9.
1、《Linux 源码情景分析》上册
2、Linux 2.4.30 源码
struct nameidata {
};
static inline struct inode *iget(struct super_block *sb, unsignedlong ino)
{
}
- nameidata路径查找辅助结构
- nameidata路径查找辅助结构
- 三层结构辅助开发工具(TTA)
- 集算器辅助SQL编写的应用结构
- 利用HashMap辅助调整对象结构
- 【查找结构】二叉查找树
- 【查找结构1】静态查找结构概论
- GNU GCC查找路径
- 查找php.ini路径
- VC查找路径配置
- 路径名查找
- 查找路径乱码代码
- linux 查找文件路径
- gstreamer查找路径
- MVC路径查找顺序
- smarty模板查找路径
- 路径名查找
- linux 查找文件路径
- lucene入门及安装配置
- 心路杂谈
- Android不同分辨率图片实际显示大小的计算
- iOS开发常用技巧-常见问题篇
- 【Java】Object类的方法
- nameidata路径查找辅助结构
- java的菜单控件使用
- laravel 5.2 学习笔记
- BSOJ 4852:比赛 暴力优化
- codz.me's blog
- 【hihocoder】#1094 : Lost in the City
- Photoshop cs7发布,设计师将哭晕在厕所
- Android网络开源库-Retrofit(五)简易封装
- [NYOJ] 02括号配对问题(c语言链栈实现)