2022-03-14 08:01:03

by Trond Myklebust

[permalink] [raw]
Subject: [PATCH v10 11/26] NFS: If the cookie verifier changes, we must invalidate the page cache

From: Trond Myklebust <[email protected]>

Ensure that if the cookie verifier changes when we use the zero-valued
cookie, then we invalidate any cached pages.

Signed-off-by: Trond Myklebust <[email protected]>
---
fs/nfs/dir.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 520dc3ec4aef..9998d7d17367 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -990,9 +990,14 @@ static int find_and_lock_cache_page(struct nfs_readdir_descriptor *desc)
/*
* Set the cookie verifier if the page cache was empty
*/
- if (desc->page_index == 0)
+ if (desc->last_cookie == 0 &&
+ memcmp(nfsi->cookieverf, verf, sizeof(nfsi->cookieverf))) {
memcpy(nfsi->cookieverf, verf,
sizeof(nfsi->cookieverf));
+ invalidate_inode_pages2_range(desc->file->f_mapping,
+ desc->page_index_max + 1,
+ -1);
+ }
}
res = nfs_readdir_search_array(desc);
if (res == 0)
--
2.35.1