From: Wang Shilong Date: Wed, 28 Apr 2021 14:26:10 +0000 (+0800) Subject: LU-14541 llite: avoid stale data reading X-Git-Tag: 2.14.53~39 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=refs%2Fchanges%2F76%2F43476%2F5;p=fs%2Flustre-release.git 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 --- 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().