[LTP] [PATCH] fanotify10: Calling drop_cache twice to ensure the inode is evicted

Zizhi Wo wozizhi@huawei.com
Fri Aug 30 15:00:03 CEST 2024


In this test case, some scenarios are designed to verify whether the
FANOTIFY_EVICTABLE flag takes effect: by verifying that information cannot
be obtained from the corresponding inode after drop_cache, as this flag
does not ping the inode.

However, drop_cache is only performed once here, which may result in the
inode not being released in NUMA scenarios. Suppose the inode is located
on NUMA0 and the dentry is located on NUMA1; the first drop_cache can only
ensure that the inode is added to the LRU list, but does not guarantee that
evict() can been called because dispose_list does not yet include this
inode when traversing NUMA0, which causes the testcase execution fail.

For the single-file scenario in this testcase, executing drop_cache twice
is necessary to ensure the inode is evicted, thus allowing the testcase to
pass.

Signed-off-by: Zizhi Wo <wozizhi@huawei.com>
---
 testcases/kernel/syscalls/fanotify/fanotify10.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/testcases/kernel/syscalls/fanotify/fanotify10.c b/testcases/kernel/syscalls/fanotify/fanotify10.c
index c6d8ec922..42018de0d 100644
--- a/testcases/kernel/syscalls/fanotify/fanotify10.c
+++ b/testcases/kernel/syscalls/fanotify/fanotify10.c
@@ -515,6 +515,8 @@ static void drop_caches(void)
 	if (syncfs(fd_syncfs) < 0)
 		tst_brk(TBROK | TERRNO, "Unexpected error when syncing filesystem");
 
+	/* Need to drop twice to ensure the inode is evicted. */
+	SAFE_FILE_PRINTF(DROP_CACHES_FILE, "3");
 	SAFE_FILE_PRINTF(DROP_CACHES_FILE, "3");
 }
 
-- 
2.39.2



More information about the ltp mailing list