通过编程(使用系统调用)使 NFS lookupcache 无效

通过编程(使用系统调用)使 NFS lookupcache 无效

我有一个依赖于检测 NFS 服务器上的文件创建的进程。

通常情况下,它工作正常,但最近出现了一些小故障,原因是缓存和NFS 重命名操作

现在,我们已经开始调查lookupcacheNFS 服务器:

lookupcache=mode 指定内核如何管理给定挂载点的目录条目缓存。mode 可以是 all、none、pos 或 positive。内核 2.6.28 及更高版本支持此选项。

Linux NFS 客户端会缓存所有 NFS LOOKUP 请求的结果。如果请求的目录条目在服务器上存在,则结果为肯定。如果请求的目录条目在服务器上不存在,则结果为否定。

如果未指定此选项,或者指定了全部,则客户端假定两种类型的目录缓存条目都有效,直到其父目录的缓存属性过期。

现在,我的问题是——我不知道真的想要全局禁用lookupcache- 而且我认为我必须这么做,因为这个过程的性质(它会影响我们 NFS 资产中很多位置的文件)

有什么办法吗以编程方式使 lookupcache 无效并强制执行 LOOKUP? Anioctl或其他系统调用。我理想情况下寻找的是一种被记录为可靠方法的东西——我已经看到有迹象表明“opendir; closedir”将触发缓存无效,但我无法找到该信息的来源。

相关内容