- 論壇徽章:
- 13
|
本帖最后由 _nosay 于 2016-08-26 21:07 編輯
vfsmount.png (40.77 KB, 下載次數(shù): 33)
下載附件
2016-08-26 17:28 上傳
總結(jié)只是用于回顧,任何有難度的東西都要經(jīng)過(guò)長(zhǎng)時(shí)間的學(xué)習(xí)才會(huì)懂,不要指望光看個(gè)總結(jié)就什么都懂 :
①②:所謂安裝就是將2個(gè)設(shè)備連接起來(lái),vfsmount正是“連接件”,①②表示將mount_root指向的dentry安裝到mnt_mountpoint指向的安裝點(diǎn)dentry;
③: 一個(gè)安裝點(diǎn)可以同時(shí)安裝多個(gè)設(shè)備,安裝點(diǎn)的d_vfsmount正是用于記錄安裝了哪些設(shè)備,被安裝設(shè)備用mount_clash鏈上去;
④⑤:一個(gè)設(shè)備只會(huì)有一個(gè)super_block,但由于可以安裝到多個(gè)安裝點(diǎn),那自然也可能對(duì)應(yīng)多個(gè)vfsmount結(jié)構(gòu)(每個(gè)表示安裝到了不同的安裝點(diǎn)),super_block的s_mounts用于鏈接這些vfsmount結(jié)構(gòu),即記錄設(shè)備本身安裝到了哪些安裝點(diǎn);
⑥⑦:mnt_parent指向安裝點(diǎn)所在設(shè)備的vfsmount,同時(shí)mnt_child鏈接到該vfsmount的mnt_mounts上。但說(shuō)明④⑤時(shí)已經(jīng)提到,一個(gè)設(shè)備可以對(duì)應(yīng)多個(gè)vfsmount,那么mnt_parent應(yīng)該指向安裝點(diǎn)所在設(shè)備的哪個(gè)vfsmount呢?比如設(shè)備B同時(shí)安裝在A(yíng)1、A2,設(shè)備C往B上安裝時(shí),是要提供安裝路徑的,路徑不同,在B上找到的dentry就會(huì)又因?yàn)椤案冈O(shè)備”為A1、A2而不同,自然就可以區(qū)分,vfsmount才是真正意義的“安裝點(diǎn)”,一個(gè)安裝點(diǎn)可以安裝多個(gè)設(shè)備,所以mnt_mounts是個(gè)鏈表,相比于dentry的d_vfsmount,d_vfsmount是設(shè)備上所有vfsmount的mnt_mounts“總和”;
⑧: 任何vfsmount通過(guò)mnt_list鏈接到全局鏈表vfsmntlist;
⑨: dentry里面沒(méi)有直接說(shuō)明該根設(shè)備對(duì)應(yīng)的安裝信息,因?yàn)橛袀(gè)成員指向super_block,而上述已經(jīng)提到super_block里面有s_mounts鏈表。
文件系統(tǒng)關(guān)鍵結(jié)構(gòu)聯(lián)系:
main.png (60.75 KB, 下載次數(shù): 21)
下載附件
2016-08-26 18:23 上傳
fs.7z
(2.92 MB, 下載次數(shù): 5)
2016-08-26 21:07 上傳
點(diǎn)擊文件名下載附件
|
|