以编程方式(使用系统调用)使NFS查找caching失效

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

通常它工作正常,但由于caching和NFS重命名操作 ,最近出现了一些小问题。

现在我们已经调查了NFS服务器上的lookupcache

lookupcache = mode指定内核如何pipe理给定安装点的目录条目caching。 模式可以是全部,无,位置或正面之一。 内核2.6.28和更高版本支持此选项。

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

如果未指定此选项,或者全部指定了此选项,则客户端会假定这两种types的目录高速caching条目都有效,直到其父目录的高速caching属性到期为止。

现在,我的问题是 – 我真的不想全局禁用lookupcache – 我想我必须这样做,因为这个过程的本质(它在我们的NFS的许多地方都会碰到文件)

有没有办法我可以编程方式使lookupcache无效并强制LOOKUP? 理想的ioctl或其他系统调用。 我理想的目标是被logging为可靠的方法 – 我已经看到了“opendir; closedir'会触发caching无效,但是我无法追踪这个信息的来源。