场景:
getdents()
直到所有输入完成。就我而言,READDIRPLUS
是在引擎盖下使用的。stat
工具。服务器上的目录未在任何位置(在此客户端或任何其他客户端上)被修改。
结果:下一个getdents
将被卡住很长时间,它似乎是在通过重复以前的NFS READDIRPLUS
cookie来重新重申已经完成的一些工作。 / p>
为什么stat
命令导致此问题?
(我假设stat
要求将路径名解析为inode / dentry,但不确定如何影响正在进行的目录迭代)
如果目录迭代使用的是READDIR
而不是READDIRPLUS
,则问题似乎没有发生。
答案 0 :(得分:0)
使用READDIRPLUS时,内核处理无效的缓存条目似乎是一个错误。此处提供了一个初始补丁:https://marc.info/?l=linux-nfs&m=156336530903066&w=4