免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 658 | 回复: 0
打印 上一主题 下一主题

[内核入门] struct vfsmount总结 [复制链接]

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-08-26 18:11 |只看该作者 |倒序浏览
本帖最后由 _nosay 于 2016-08-26 21:07 编辑



总结只是用于回顾,任何有难度的东西都要经过长时间的学习才会懂,不要指望光看个总结就什么都懂
①②:所谓安装就是将2个设备连接起来,vfsmount正是“连接件”,①②表示将mount_root指向的dentry安装到mnt_mountpoint指向的安装点dentry;
③:  一个安装点可以同时安装多个设备,安装点的d_vfsmount正是用于记录安装了哪些设备,被安装设备用mount_clash链上去;
④⑤:一个设备只会有一个super_block,但由于可以安装到多个安装点,那自然也可能对应多个vfsmount结构(每个表示安装到了不同的安装点),super_block的s_mounts用于链接这些vfsmount结构,即记录设备本身安装到了哪些安装点;
⑥⑦:mnt_parent指向安装点所在设备的vfsmount,同时mnt_child链接到该vfsmount的mnt_mounts上。但说明④⑤时已经提到,一个设备可以对应多个vfsmount,那么mnt_parent应该指向安装点所在设备的哪个vfsmount呢?比如设备B同时安装在A1、A2,设备C往B上安装时,是要提供安装路径的,路径不同,在B上找到的dentry就会又因为“父设备”为A1、A2而不同,自然就可以区分,vfsmount才是真正意义的“安装点”,一个安装点可以安装多个设备,所以mnt_mounts是个链表,相比于dentry的d_vfsmount,d_vfsmount是设备上所有vfsmount的mnt_mounts“总和”;
⑧:  任何vfsmount通过mnt_list链接到全局链表vfsmntlist;
⑨:  dentry里面没有直接说明该根设备对应的安装信息,因为有个成员指向super_block,而上述已经提到super_block里面有s_mounts链表。


文件系统关键结构联系:


fs.7z (2.92 MB, 下载次数: 4)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP