linux - VFS 如何知道要调用哪些底层文件系统函数?

标签 linux linux-kernel filesystems vfs

当我们在 linux 终端上发出命令时。由此创建的进程遍历到 VFS 层,在那里它决定调用哪个文件系统函数,如 ext4、ext3 或任何其他文件系统。所以我的问题是 VFS 如何区分文件系统?从 VFS 获取文件系统信息的地方,是 task_struct 中的 fs_struct 告诉 VFS 吗?

最佳答案

作为 FS 实现的一部分,您需要实现文件、inode、 super block 操作,这将向 VFS 层注册底层 FS 操作(例如:ext3_open())。根据提供给 open() 的文件路径,VFS 将调用系统调用的适当文件系统特定实现。

假设你已经挂载了一个文件系统,当你挂载一个文件系统时,你在模块初始化期间向 VFS 层注册你的 FS 以进行特定操作。在此步骤中,两个处理程序 get_sb() 和 kill_sb()。 get_sb() 在挂载文件系统时被调用。 kill_sb() 在卸载文件系统时被调用。

有关更多信息,请参阅 RKFS并查看文件操作是如何与数据流图一起实现的。

关于linux - VFS 如何知道要调用哪些底层文件系统函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26229268/

相关文章:

linux - 何时以及何时不在 Docker Remote API 中使用 tty

c - 如何查看命名管道中排队的数据量?

c - 在用户空间应用程序中使用自旋锁

c# - 如何读取/写入特定数量的字节到文件

linux - Bash:用零替换 "nothing"

linux - 用于交叉编译的库(armel)

linux - 如果普通程序和驱动程序都使用系统调用,那么设备驱动程序还有什么意义呢?

linux - Linux reboot() 系统调用的魔数(Magic Number)

java - Android 文件系统上的目录和文件创建

windows - 如何在 CreateFile 中打开卷的文件系统?