淺嘗輒止82-NTFS文件系統(tǒng)1-內(nèi)核1-掛載

NTFS文件系統(tǒng)掛載

看這個(gè)掛載函數(shù)就知道,和FAT32套路是一樣的,要看ntfs_fill_super。

static struct dentry *ntfs_mount(struct file_system_type *fs_type,
    int flags, const char *dev_name, void *data)
{
    return mount_bdev(fs_type, flags, dev_name, data, ntfs_fill_super);
}

ntfs_fill_super

老套路,struct super_block *sb是VFS層的數(shù)據(jù)結(jié)構(gòu),其成員s_fs_info是給每個(gè)具體的文件系統(tǒng)用的,我理解它就是一個(gè)指向具體文件系統(tǒng)的自定義超級(jí)塊的指針,NTFS的自定義超級(jí)塊的結(jié)構(gòu)體就是ntfs_volume

sb->s_fs_info = kmalloc(sizeof(ntfs_volume), GFP_NOFS);

vol就是ntfs_volume的實(shí)例指針,這里把它成員sb指向了VFS超級(jí)塊sb,super_blockntfs_volume就形成了一種親密關(guān)系,互相很容易找到對(duì)方。

    *vol = (ntfs_volume) {
        .sb = sb,
        ///...
    };

這里在加載boot sector,也就是把分區(qū)的0號(hào)扇區(qū)讀到內(nèi)存里來。read_ntfs_boot_sector里面和FAT32一樣,也是用sb_bread(sb, 0)讀取分區(qū)的0號(hào)扇區(qū),然后用parse_ntfs_boot_sector來解析它。

bh = read_ntfs_boot_sector(sb, silent)

在進(jìn)一步機(jī)械boot sector之前,我需要先說一下NTFS的設(shè)計(jì)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容