• Trond Myklebust's avatar
    NFS: Convert readdir page cache to use a cookie based index · f648022f
    Trond Myklebust authored
    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: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
    f648022f
dir.c 81.6 KB