Linux NFS客户端:统计信息导致正在进行的readdirplus迭代重新启动到较早的cookie

时间:2019-07-14 19:25:46

标签: linux-kernel nfs

场景:

  1. Linux NFS客户端使用许多(百万)个文件来迭代目录,例如通过getdents()直到所有输入完成。就我而言,READDIRPLUS是在引擎盖下使用的。
  2. 同时,在该目录内的文件上运行stat工具。

服务器上的目录未在任何位置(在此客户端或任何其他客户端上)被修改。

结果:下一个getdents将被卡住很长时间,它似乎是在通过重复以前的NFS READDIRPLUS cookie来重新重申已经完成的一些工作。 / p>

为什么stat命令导致此问题?

(我假设stat要求将路径名解析为inode / dentry,但不确定如何影响正在进行的目录迭代)

如果目录迭代使用的是READDIR而不是READDIRPLUS,则问题似乎没有发生。

1 个答案:

答案 0 :(得分:0)

使用READDIRPLUS时,内核处理无效的缓存条目似乎是一个错误。此处提供了一个初始补丁:https://marc.info/?l=linux-nfs&m=156336530903066&w=4