Eu tenho um processo que depende da detecção da criação de arquivos em um servidor NFS.
Geralmente funciona bem, mas recentemente ocorreram alguns pequenos problemas, devido ao armazenamento em cache e a uma renomeação do NFS operação .
Agora, chegamos até a investigar lookupcache
no servidor NFS:
lookupcache=mode Specifies how the kernel manages its cache of directory entries for a given mount point. mode can be one of all, none, pos, or positive. This option is supported in kernels 2.6.28 and later.
The Linux NFS client caches the result of all NFS LOOKUP requests. If the requested directory entry exists on the server, the result is referred to as positive. If the requested directory entry does not exist on the server, the result is referred to as negative.
If this option is not specified, or if all is specified, the client assumes both types of directory cache entries are valid until their parent directory's cached attributes expire.
Agora, meu problema é - eu não realmente quero desabilitar globalmente o lookupcache
- e acho que seria necessário, devido à natureza desse processo (ele atinge arquivos em muitos locais em nossa propriedade NFS)
Existe uma maneira de eu programaticamente invalidar o lookupcache e forçar um LOOKUP? Um ioctl
ou outra chamada de sistema idealmente. O que eu estou idealmente procurando é algo que é documentado como uma abordagem confiável - tenho visto indicações de que 'opendir'; O closedir 'disparará um invalidado pelo cache, mas não consigo rastrear uma fonte para essa informação.