内核的文件系统的注册
在linux内核中的文件管理模块中,VFS机制居功至伟,VFS是virtual file system的缩写,表示为虚拟文件系统,它可以实现在Linux操作系统中可以同时有多个不同的文件系统在工作,并且不同文件系统之间的差异性对应用层是完全透明的。VFS本身并不是一种技术,而是多种技术手段和数据结构的集合,比如对进程抽象文件管理,如果将系统文件管理转换成对文件外存的块管理,如何加快对文件的操作,诸如这些所有,加在一起,就形成一种文件管理的机制,把这种机制中的一个中间部分,由内核来主要管理的、不依赖于具体的文件系统和驱动的、只提供接口不实现操作的部分,称为VFS机制。
这篇博文讨论内核中文件系统的注册。
一,文件系统往哪注册
在说明文件系统注册之前,先了解一些文件系统往哪注册,这本质上是内核如何管理所有已经被注册的文件系统。就是如果要添加一个文件系统至操作系统,此时内核将这个文件系统的信息将要保存在什么地方?
内核将文件系统保存在一个全局变量中,在源码文件filesystems.c文件中定义:
int unregister_filesystem(struct file_system_type * fs){struct file_system_type ** tmp;write_lock(&file_systems_lock);tmp = &file_systems;while (*tmp) {if (fs == *tmp) {*tmp = fs->next;fs->next = NULL;write_unlock(&file_systems_lock);return 0;}tmp = &(*tmp)->next;}write_unlock(&file_systems_lock);return -EINVAL;}