From f2a16793fa4316fc9ccdc46bcfe54f6b8d1e442b Mon Sep 17 00:00:00 2001 From: Wang Shilong Date: Wed, 28 Apr 2021 22:26:10 +0800 Subject: [PATCH] LU-14541 llite: avoid stale data reading remove_mapping() can prohibit to kill page from page cache due page refcount!=2, in vvp_page_delete() clear uptodate flag in case stale data reading later. Signed-off-by: Wang Shilong Change-Id: I322debec951b1a342246475456c0f40e10b0e578 Reviewed-on: https://review.whamcloud.com/43476 Reviewed-by: Patrick Farrell Tested-by: jenkins Reviewed-by: Andreas Dilger Reviewed-by: Li Dongyang Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/llite/vvp_page.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lustre/llite/vvp_page.c b/lustre/llite/vvp_page.c index d0e274c..d5158e7 100644 --- a/lustre/llite/vvp_page.c +++ b/lustre/llite/vvp_page.c @@ -178,6 +178,12 @@ static void vvp_page_delete(const struct lu_env *env, ClearPagePrivate(vmpage); vmpage->private = 0; + + /** + * Vmpage might not be released due page refcount != 2, + * clear Page uptodate here to avoid stale data. + */ + ClearPageUptodate(vmpage); /* * Reference from vmpage to cl_page is removed, but the reference back * is still here. It is removed later in vvp_page_fini(). -- 1.8.3.1