git: kernel - Fix NFS stall and likely also x86-64 seg-fault iss

看板DFBSD_commit作者時間15年前 (2010/11/28 15:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
commit 4b16aa8469a814628eea6f791dad4a9f50ae6413 Author: Matthew Dillon <dillon@apollo.backplane.com> Date: Sat Nov 27 22:20:04 2010 -0800 kernel - Fix NFS stall and likely also x86-64 seg-fault issue * The nfs node hash code was not MPSAFE due to its use of a global hash table. This could lead to a stall condition due to the global hash table losing track of its manual lock. For now use a token to interlock hash table access and replace the manual lock with a lockmgr lock. * This appears to have also fixed the long-standing random seg-fault issue with x86-64, where a buildworld loop would seg-fault every once in a while for no apparent reason. /usr/src on my test box has always been NFS mounted but was never considered a possible contributor to the problem. If NFS loses track of related nfs nodes or races operations on underlying vnodes while expecting their storage to remain stable it is possible for a random vnode to become corrupt. How this could translate to a completely random seg-fault is not entirely understood but I surmise the unrelated cc1's binary mmap could become corrupt. Reported-by: Thomas Nikolajsen <thomas.nikolajsen@mail.dk> (nfs issue) Summary of changes: sys/vfs/nfs/nfs_node.c | 63 ++++++++++++++++++++++-------------------------- 1 files changed, 29 insertions(+), 34 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4b16aa8469a814628eea6f791dad4a9f50ae6413 -- DragonFly BSD source repository
文章代碼(AID): #1CyVuo02 (DFBSD_commit)