svn commit: r247116 - in head/sys: fs/nfs fs/nfsclient kern nfsclient sys tools

Andrew Turner andrew at fubar.geek.nz
Mon Feb 25 07:13:38 UTC 2013


On Thu, 21 Feb 2013 19:02:50 +0000 (UTC)
John Baldwin <jhb at 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


More information about the svn-src-head mailing list