• Rajesh Ghanekar's avatar
    nfsd: allow turning off nfsv3 readdir_plus · 18c01ab3
    Rajesh Ghanekar authored
    One of our customer's application only needs file names, not file
    attributes. With directories having 10K+ inodes (assuming buffer cache
    has directory blocks cached having file names, but inode cache is
    limited and hence need eviction of older cached inodes), older inodes
    are evicted periodically. So if they keep on doing readdir(2) from NSF
    client on multiple directories, some directory's files are periodically
    removed from inode cache and hence new readdir(2) on same directory
    requires disk access to bring back inodes again to inode cache.
    
    As READDIRPLUS request fetches attributes also, doing getattr on each
    file on server, it causes unnecessary disk accesses. If READDIRPLUS on
    NFS client is returned with -ENOTSUPP, NFS client uses READDIR request
    which just gets the names of the files in a directory, not attributes,
    hence avoiding disk accesses on server.
    
    There's already a corresponding client-side mount option, but an export
    option reduces the need for configuration across multiple clients.
    
    This flag affects NFSv3 only.  If it turns out it's needed for NFSv4 as
    well then we may have to figure out how to extend the behavior to NFSv4,
    but it's not currently obvious how to do that.
    Signed-off-by: default avatarRajesh Ghanekar <rajesh_ghanekar@symantec.com>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    18c01ab3
export.c 32.6 KB