]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - fs/nfs/dir.c
Merge tag 'mac80211-for-net-2020-02-14' of git://git.kernel.org/pub/scm/linux/kernel...
[linux.git] / fs / nfs / dir.c
index 88f6cf1ccf8c28af015d8d728097354270bdb99f..1320288ff9ec9c7d50d207908d77f3899c7def3b 100644 (file)
@@ -449,7 +449,8 @@ void nfs_force_use_readdirplus(struct inode *dir)
        if (nfs_server_capable(dir, NFS_CAP_READDIRPLUS) &&
            !list_empty(&nfsi->open_files)) {
                set_bit(NFS_INO_ADVISE_RDPLUS, &nfsi->flags);
-               invalidate_mapping_pages(dir->i_mapping, 0, -1);
+               invalidate_mapping_pages(dir->i_mapping,
+                       nfsi->page_index + 1, -1);
        }
 }
 
@@ -720,6 +721,8 @@ struct page *get_cache_page(nfs_readdir_descriptor_t *desc)
 static
 int find_and_lock_cache_page(nfs_readdir_descriptor_t *desc)
 {
+       struct inode *inode = file_inode(desc->file);
+       struct nfs_inode *nfsi = NFS_I(inode);
        int res;
 
        desc->page = get_cache_page(desc);
@@ -731,8 +734,10 @@ int find_and_lock_cache_page(nfs_readdir_descriptor_t *desc)
        res = -EAGAIN;
        if (desc->page->mapping != NULL) {
                res = nfs_readdir_search_array(desc);
-               if (res == 0)
+               if (res == 0) {
+                       nfsi->page_index = desc->page_index;
                        return 0;
+               }
        }
        unlock_page(desc->page);
 error: