浅尝辄止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,
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容