gpt4 book ai didi

linux - 锁定文件或分区以进行读写系统调用

转载 作者:太空宇宙 更新时间:2023-11-04 09:54:01 30 4
gpt4 key购买 nike

我需要知道如何编写系统调用来阻塞(锁定)和解锁(解锁)存档(inode)或分区(super_block)以实现读写功能。

例子:这些函数在fs.hlock_super(struct super_block *);
unlock_super(struct super_block *);

如何获取super_block(例如/dev/sda1)?

最佳答案

lock_super 和 unlock_super 调用并不意味着由用户级进程直接控制。当用户进程调用文件系统上的操作(对 inode 的操作)时,它仅由 VFS 层调用。如果您仍然希望这样做,则必须编写自己的设备驱动程序并将所需的功能(inode 的锁定和解锁)公开给用户级别。

当前没有允许您锁定、解锁 inode 的系统调用。在没有适当考虑的情况下实现新的系统调用是不明智的,原因有很多。但是如果你想这样做,你需要在内核中编写你自己的系统调用的处理程序。您似乎想要对文件系统进行细粒度控制,也许您正在实现用户级文件系统。

对于如何获得 super block 的答案,每个文件系统模块都将自己注册到 VFS(虚拟文件系统)。 VFS 充当用户和实际文件系统之间的中间层。因此,VFS 知道指向 lock_super 和 unlock_super 方法的函数指针。 VFS super block 包含“设备信息”和“指向文件系统 super block 的指针集”。您可以从这里获取这些指针并调用它们。但请记住,因为实际的文件系统是由 VFS 管理的,所以您可能会破坏数据。

关于linux - 锁定文件或分区以进行读写系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7691451/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com