Linux内核-文件系统-挂载流程分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/feilengcui008/article/details/48420871

1.根文件系统的挂载

  • mount_root[init/do_mounts.c]
    • create_dev(“/dev/root”, ROOT_DEV) ==> how to do this
      • sys_unlink(“/dev/root”)
      • sys_mknod(“/dev/root”,…)
    • mount_block_root(“/dev/root”, flags)
      • get_fs_names -> copy root_fs_names
      • do_mount_root ==> 调用系统调用sys_mount,sys_chdir(“/root”),为当 前进程current->fs.pwd.dentry设置挂载返回的root dentry
        • sys_mount ==>进入系统调用

2.进入系统调用的挂载,也是用户态挂载文件系统的入口

  • sys_mount[fs/namespace.c]
    • copy_mount_string
    • copy_mount_options
    • do_mount
      • user_path(dirname, &path) -> path_lookupat ==> 获取挂载路径的struct path,查找路径是很复杂的过程:)
      • do_remount
      • do_loopback
      • do_change_type
      • do_move_mount
      • do_new_mount ==> 构建虚拟挂载点vsfmount,检查设置namespace
        • get_fs_type ==> 在file_systems查找传入的文件系统类型
        • vfs_kernel_mount ==> 调用具体文件系统的mount,并将返回的root dentry与分配的vfsmount挂接
          • alloc_vfsmnt ==> 从slob中分配虚拟挂载点struct vfsmount
          • root = mount_fs
            • type->mount ==> 调用具体文件系统的mount,返回root dentry
            • 设置vfsmount结构内容

3.进入具体文件系统类型的mount,此处以ext2为例分析

  • 模块初始化时

    • init_inodecache分配slab作为inode的cache
    • register_filesystem加入模块全局变量file_systems
  • struct file_system_type ext2_fs_type

    • ext2_mount
      • mount_bdev ==> 传入ext2_fill_super,返回root dentry
        • blkdev_get_by_path ==> 通过设备节点路径名构造block_device结构
        • sget ==> 获取或分配super block结构体,并将bdev绑定到sb上
        • fill_super ==> 填充super block
          • sb_bread ==> 读取super block的count块到buffer head,先查找lru缓存
            • __find_get_clock_slow ==> 根据bdev中的inode及inode中的i_mapping信息将page cache读到buffer head里
    • kill_block_super
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值