Date: Mon, 25 Feb 2013 20:13:13 +1300 From: Andrew Turner <andrew@fubar.geek.nz> To: John Baldwin <jhb@FreeBSD.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r247116 - in head/sys: fs/nfs fs/nfsclient kern nfsclient sys tools Message-ID: <20130225201313.2050da18@bender> In-Reply-To: <201302211902.r1LJ2o5T033708@svn.freebsd.org> References: <201302211902.r1LJ2o5T033708@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 21 Feb 2013 19:02:50 +0000 (UTC) John Baldwin <jhb@FreeBSD.org> wrote: > Author: jhb > Date: Thu Feb 21 19:02:50 2013 > New Revision: 247116 > URL: http://svnweb.freebsd.org/changeset/base/247116 > > Log: > Further refine the handling of stop signals in the NFS client. The > changes in r246417 were incomplete as they did not add explicit > calls to sigdeferstop() around all the places that previously passed > SBDRY to _sleep(). In addition, nfs_getcacheblk() could trigger a > write RPC from getblk() resulting in sigdeferstop() recursing. > Rather than manually deferring stop signals in specific places, > change the VFS_*() and VOP_*() methods to defer stop signals for > filesystems which request this behavior via a new VFCF_SBDRY flag. > Note that this has to be a VFC flag rather than a MNTK flag so that > it works properly with VFS_MOUNT() when the mount is not yet fully > constructed. For now, only the NFS clients are set this new flag in > VFS_SET(). > A few other related changes: > - Add an assertion to ensure that TDF_SBDRY doesn't leak to > userland. > - When a lookup request uses VOP_READLINK() to follow a symlink, > mark the request as being on behalf of the thread performing the > lookup (cnp_thread) rather than using a NULL thread pointer. This > causes NFS to properly handle signals during this VOP on an > interruptible mount. > > PR: kern/176179 > Reported by: Russell Cattelan (sigdeferstop() recursion) > Reviewed by: kib > MFC after: 1 month This change is causing init to crash for me on armv6. I'm netbooting a PandaBoard and it appears init is receiving a SIGABRT before it gets into main(). Do you have any idea where I could look to track down why it is doing this? Andrew
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130225201313.2050da18>