From b73e53accdf5aab998b401475a90ef2192eaf70a 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. Lustre-change: https://review.whamcloud.com/43476 Lustre-commit: TBD (from e6033b193e8d35e689b7c2860374c8b2d2b7a5ee) Signed-off-by: Wang Shilong Change-Id: I322debec951b1a342246475456c0f40e10b0e578 Reviewed-on: https://review.whamcloud.com/44291 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger --- 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 fb9c387..831e432 100644 --- a/lustre/llite/vvp_page.c +++ b/lustre/llite/vvp_page.c @@ -179,6 +179,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