【发布时间】:2011-12-14 14:37:00
【问题描述】:
我正在开发一个无状态文件系统来浏览基于网络的目录和文件。我的主机上有我自己的文件/目录的 inode 缓存。我以这样一种方式设计了我的文件系统模块,即当从 VFS 层调用 evict_inode() 函数时,我的主机 inode 缓存将被删除。但是,只有在高内存压力或将 3 写入 /proc/sys/vm/drop_caches 时才会刷新。我不确定如何刷新我的主机 inode 缓存。随着时间的推移,我的主机端 inode 缓存变得越来越大,因为 evict_inode() 没有被调用。当我将 3 写入 /proc/sys/vm/drop_caches 时会调用它。
我想像 NFS 那样将dentry 缓存和inode 缓存标记为以有时限的方式删除,但我不确定如何实现这一点。
或者,有什么更好的办法来实现这一点?让 VFS inode 与我的主机 inode 同步会很有帮助。任何想法将不胜感激。
【问题讨论】:
标签: linux linux-kernel