truncate_inode_pages_range可能导致进程间死锁

image
image
图片一进程淘汰inode对应的一批page,图片二采用缓存读取一批page
出现两个进程都进入D状态。
怀疑这个两个进程分别拿着对方想要的page锁,出现死锁。


对比了openeuler 2203版本的truncate_inode_pages_range函数实现和linux-5.10内核版本的实现。
openeuler 通过find_lock_entries函数获取批量page lock,感觉存在死锁的可能性。