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