mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 16:13:19 +09:00
NFS: Convert readdir page cache to use a cookie based index
Instead of using a linear index to address the pages, use the cookie of the first entry, since that is what we use to match the page anyway. This allows us to avoid re-reading the entire cache on a seekdir() type of operation. The latter is very common when re-exporting NFS, and is a major performance drain. The change does affect our duplicate cookie detection, since we can no longer rely on the page index as a linear offset for detecting whether we looped backwards. However since we no longer do a linear search through all the pages on each call to nfs_readdir(), this is less of a concern than it was previously. The other downside is that invalidate_mapping_pages() no longer can use the page index to avoid clearing pages that have been read. A subsequent patch will restore the functionality this provides to the 'ls -l' heuristic. Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
@@ -106,11 +106,9 @@ struct nfs_open_dir_context {
|
||||
unsigned long attr_gencount;
|
||||
__be32 verf[NFS_DIR_VERIFIER_SIZE];
|
||||
__u64 dir_cookie;
|
||||
__u64 dup_cookie;
|
||||
__u64 last_cookie;
|
||||
pgoff_t page_index;
|
||||
unsigned int dtsize;
|
||||
signed char duped;
|
||||
bool eof;
|
||||
struct rcu_head rcu_head;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user