前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >内核文件系统挂载和Open文件

内核文件系统挂载和Open文件

作者头像
用户4700054
发布2022-08-17 12:26:33
9450
发布2022-08-17 12:26:33
举报

ext4挂载

  • 在linux 5.x的内核中,实际文件系统的挂载采用新的挂载API,引入了struct fs_context用于内部文件系统挂载的信息。
  • 应用端发起mount命令,进入mount系统调用,执行do_mount的函数

ext4中super_block初始化

  • os提供vfs层来建立用户态文件操作和真实磁盘文件系统之间关系。vfs层的super_block是通过工厂模式设计模式来整合真实文件系统的super_block.
  • ext4的super_block,初始化是在用户态发起mount时候进行初始化。vfs中文件创建、删除、写入都会在vfs层的inode操作,最终会进入实际文件系统的inode操作

open文件流程间接

  • vfs层包含了是实际文件系统的内存影像
  • 用户进程调用open函数,传入文件名称、打开文件的flags、文件的权限等信息,进入内核态的do_sys_open函数
  • 进入do_sys_open函数,首先是执行get_unused_fd_flags从当前的进程中申请未被使用的文件描述符
  • 其次是构建一个struct file结构,该结构是每个进程打开的fd关联的文件。调用了do_filp_open函数,该函数根据文件名称和文件打开的flags。
  • 如果正常执行 fd_install 函数把fd和当前进程的打开的struct file数组关联起来,把索引为fd 的struct file数组和struct file进行关联
  • 最后释放了内核态的filename,这个也是从用户态参数初始化而来

open文件执行函数说明

  • getname: 拷贝用户态传过来的文件路径
  • get_unused_fd_flags:从当前进程中获取未被使用的文件描述符
  • do_filp_open:解析路径并返回进程打开的文件struct file
  • path_openat:路径查找函数
  • path_init:设置路径的查找的开始位置
  • link_path_walk:目录逐层查找
  • do_last:查找dcache,通过所在目录的目录项对象的inode operation为相关文件创建新inode
  • lookup_fast:从dcache中找到dentry
  • lookup_open:通过所在目录的目录项对象的inode operation为相关文件创建新inode
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 存储内核技术交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ext4挂载
  • ext4中super_block初始化
  • open文件流程间接
  • open文件执行函数说明
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档