美文网首页
浅尝辄止81-NTFS文件系统1-内核0-注册

浅尝辄止81-NTFS文件系统1-内核0-注册

作者: 阿棍儿_Leon | 来源:发表于2019-02-21 22:00 被阅读0次

    内核中的NTFS

    类比于FAT32文件系统,来看一下内核中的NTFS文件系统代码
    这部分代码质量可能不会很高!
    根据FAT32分析的经验,应该先找到module_init所在位置。它就在kernel/fs/ntfs/super.c里面,叫init_ntfs_fs。内容挺长的,核心内容我简化如下。

    static int __init init_ntfs_fs(void)
    {
        xxx_cache = kmem_cache_create(...);
        //...
        err = register_filesystem(&ntfs_fs_type);
        //...
    }
    
    • 用kmem_cache_create分配一些缓冲区
      一些常用的数据结构,如果临时分配和释放内存,就会很花时间。对于释放的数据结构实例,我们其实可以不释放内存,只是将其置为无效状态即可,等到需要分配一个实例时,直接激活这个实例来用就行了。
      每种文件系统可能会有一些自己的数据结构的缓冲区。VFS也有一些缓冲区,例如inode、dentry等数据结构。
    • 用register_filesystem注册文件系统
      注册的内容如下,与FAT32文件系统一样,ntfs注册了自己的mount函数——ntfs_mount和kill_sb函数——kill_block_super。前者是挂载时被调用的,后者是卸载时被调用的。
    static struct file_system_type ntfs_fs_type = {
        .owner      = THIS_MODULE,
        .name       = "ntfs",
        .mount      = ntfs_mount,
        .kill_sb    = kill_block_super,
        .fs_flags   = FS_REQUIRES_DEV,
    };
    

    相关文章

      网友评论

          本文标题:浅尝辄止81-NTFS文件系统1-内核0-注册

          本文链接:https://www.haomeiwen.com/subject/hthjyqtx.html