kernel - More readdirplus deadlock avoidance work
authorMatthew Dillon <dillon@apollo.backplane.com>
Sat, 13 Feb 2010 17:23:33 +0000 (09:23 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Sat, 13 Feb 2010 17:26:46 +0000 (09:26 -0800)
commit668b43c50042037f92a5b34aac99c0c8d6b8dee1
treec411ab4fd9dfcab3e5f02cd9a44c719a5c871956
parentf3ba2c0c00d74be534bb3c7d56b3b2500209ebb4
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.
sys/kern/vfs_cache.c
sys/sys/namecache.h
sys/vfs/nfs/nfs_node.c
sys/vfs/nfs/nfs_vnops.c
sys/vfs/nfs/nfsnode.h