• David Howells's avatar
    NFS: Add dentry materialisation op · 770bfad8
    David Howells authored
    The attached patch adds a new directory cache management function that prepares
    a disconnected anonymous function to be connected into the dentry tree. The
    anonymous dentry is transferred the name and parentage from another dentry.
    
    The following changes were made in [try #2]:
    
     (*) d_materialise_dentry() now switches the parentage of the two nodes around
         correctly when one or other of them is self-referential.
    
    The following changes were made in [try #7]:
    
     (*) d_instantiate_unique() has had the interior part split out as function
         __d_instantiate_unique(). Callers of this latter function must be holding
         the appropriate locks.
    
     (*) _d_rehash() has been added as a wrapper around __d_rehash() to call it
         with the most obvious hash list (the one from the name). d_rehash() now
         calls _d_rehash().
    
     (*) d_materialise_dentry() is now __d_materialise_dentry() and is static.
    
     (*) d_materialise_unique() added to perform the combination of d_find_alias(),
         d_materialise_dentry() and d_add_unique() that the NFS client was doing
         twice, all within a single dcache_lock critical section. This reduces the
         number of times two different spinlocks were being accessed.
    
    The following further changes were made:
    
     (*) Add the dentries onto their parents d_subdirs lists.
    Signed-Off-By: default avatarDavid Howells <dhowells@redhat.com>
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    770bfad8
dcache.c 48.6 KB