8.4.3  文件系统的卸载

如果文件系统中的文件当前正在使用,该文件系统是不能被卸载的。如果文件系统中的文件或目录正在使用,则 VFS 索引节点高速缓存中可能包含相应的 VFS 索引节点。根据文件系统所在设备的标识符,检查在索引节点高速缓存中否有来自该文件系统的 VFS 索引节点,如果有且使用计数大于0,则说明该文件系统正在被使用,因此,该文件系统不能被卸载。否则,查看对应的 VFS 超级块,如果该文件系统的 VFS 超级块标志为“脏”,则必须将超级块信息写回磁盘。上述过程结束之后,对应的 VFS 超级块被释放,vfsmount 数据结构将从vfsmntlist 链表中断开并被释放。具体的实现代码为fs/super.c中的sysy_umount()函数,在此不再进行详细的讨论。