浅尝辄止81-NTFS文件系统1-内核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-注册)