git: kernel - More readdirplus deadlock avoidance work

看板DFBSD_commit作者時間16年前 (2010/02/14 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/3 (看更多)
commit 668b43c50042037f92a5b34aac99c0c8d6b8dee1 Author: Matthew Dillon <dillon@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
文章代碼(AID): #1BTkZg2U (DFBSD_commit)
文章代碼(AID): #1BTkZg2U (DFBSD_commit)