_nosay 发表于 2016-08-26 18:11

struct vfsmount总结

本帖最后由 _nosay 于 2016-08-26 21:07 编辑



总结只是用于回顾,任何有难度的东西都要经过长时间的学习才会懂,不要指望光看个总结就什么都懂:shock: :
①②:所谓安装就是将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链表。


文件系统关键结构联系:


页: [1]
查看完整版本: struct vfsmount总结