git: kernel - Fix NFS stall and likely also x86-64 seg-fault issue
Matthew Dillon
dillon at crater.dragonflybsd.org
Sat Nov 27 22:45:28 PST 2010
commit 4b16aa8469a814628eea6f791dad4a9f50ae6413
Author: Matthew Dillon <dillon at 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 at 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
More information about the Commits
mailing list