OSDN Git Service

NFS: If the cookie verifier changes, we must invalidate the page cache
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Tue, 22 Feb 2022 21:23:12 +0000 (16:23 -0500)
committerTrond Myklebust <trond.myklebust@hammerspace.com>
Wed, 2 Mar 2022 13:43:38 +0000 (08:43 -0500)
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 <trond.myklebust@hammerspace.com>
fs/nfs/dir.c

index 520dc3e..9998d7d 100644 (file)
@@ -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)