git: kernel - More readdirplus deadlock avoidance work

Matthew Dillon dillon at crater.dragonflybsd.org
Sat Feb 13 09:43:05 PST 2010


commit 668b43c50042037f92a5b34aac99c0c8d6b8dee1
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sat Feb 13 09:23:33 2010 -0800

    kernel - More readdirplus deadlock avoidance work
    
    * Add cache_nlookup_nonblock() and nfs_nget_nonblock()
    
    * Adjust the readdirplus code to use the new functions.   Basically
      there are too many locks being held by callers and then readdirplus
      goes and tries to acquire (and lock) nodes for the directory elements
      on top of that, leading to deadlocks.
    
      Attempts to order the locks have failed so now we just use a
      non-blocking approach since the readdirplus entries are all
      advisory anyway.

Summary of changes:
 sys/kern/vfs_cache.c    |  128 +++++++++++++++++++++++++++++++++++++++++++-
 sys/sys/namecache.h     |    2 +
 sys/vfs/nfs/nfs_node.c  |  137 ++++++++++++++++++++++++++++++++++++++++++++++-
 sys/vfs/nfs/nfs_vnops.c |   45 ++++++++--------
 sys/vfs/nfs/nfsnode.h   |    1 +
 5 files changed, 288 insertions(+), 25 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/668b43c50042037f92a5b34aac99c0c8d6b8dee1


-- 
DragonFly BSD source repository





More information about the Commits mailing list