Skip to main content

20 虚拟文件系统

往文件系统里面读写数据

挂载文件系统

需要进行注册确定内核是否支持某种类型的文件系统。

每一个文件和文件夹都有 dentry,用于和 inode 关联。每个打开的文件都有一个 file 结构,它里面有两个变量,一个指向相应的 mount,一个指向相应的 dentry。

打开文件

Open 系统调用,找到文件描述符,将文件描述符和这个结构关联起来,初始化 struct nameidata 结构,调用 path_openat:

  • get_empty_filp 生成一个 struct file 结构;
  • path_init 初始化 nameidata,准备开始节点路径查找;
  • link_path_walk 对于路径名逐层进行节点路径查找,这里的循环用“/”分隔逐层处理;
  • do_last 获取文件对应的 inode 对象,并且初始化 file 对象。

最后通过 do_last 解析和处理,调用 vfs_open 真正打开文件。