【问题标题】:How VFS knows which underlying File system functions to be called?VFS 如何知道要调用哪些底层文件系统函数?
【发布时间】:2014-10-07 05:45:07
【问题描述】:

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

【问题讨论】:

  • 在可以访问文件系统之前,它必须被挂载。这个挂载操作是文件系统信息的来源。

标签: linux linux-kernel filesystems vfs


【解决方案1】:

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

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

如需更多信息,请参阅RKFS 并查看文件操作的实现方式以及数据流图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    • 1970-01-01
    • 2018-03-19
    • 2011-01-30
    • 2011-02-04
    相关资源
    最近更新 更多