您好,我是内核编程的新手。我正在编写一个基于 wrapfs 模板的小内核模块来实现备份机制。这纯粹是为了学习基础。
我正在扩展 wrapfs,以便在进行写入调用时,wrapfs 透明地在单独的目录中制作该文件的副本,然后对该文件执行写入。但我不想为每个写调用创建一个副本。
一种天真的方法可能是我检查该目录中是否存在文件。但我认为对于每个呼叫检查这可能是一个严厉的惩罚。
我还可以检查第一次写入调用,然后使用 private_data 属性存储该特定文件的值。但这不会存储在磁盘上。所以我需要再次检查。
我也在考虑利用修改时间。我可以节省修改时间。如果旧的修改时间在那个时间之前,那么只会创建一个副本,否则我不会做任何事情。我尝试为此使用 inode.i_mtime ,但它是在调用 write 之前修改的时间,应用程序也可以修改该时间。
所以我想在磁盘上的 inode 中存储一些值,表明它的备份是否已创建。那可能吗?欢迎任何其他建议或方法。