freebsd-skq/sys/fs
jhb ca1e2e0739 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
2013-02-21 19:02:50 +00:00
..
cd9660 Complete MPSAFE VFS interface and remove MNTK_MPSAFE flag. 2012-11-09 18:02:25 +00:00
coda Fix the mis-handling of the VV_TEXT on the nullfs vnodes. 2012-09-28 11:25:02 +00:00
deadfs The deadfs VOPs for vop_ioctl and vop_bmap call itself recursively, 2012-09-13 13:05:45 +00:00
devfs Stop translating the ERESTART error from the open(2) into EINTR. 2013-02-07 14:53:33 +00:00
ext2fs ext2fs: Use prototype declarations for function definitions 2013-02-10 19:49:37 +00:00
fdescfs Revert r246791 as it needs a security review first 2013-02-14 15:17:53 +00:00
fifofs I am comparing current pipe code with the one in 8.3-STABLE r236165, 2012-07-31 05:48:35 +00:00
fuse Add support for IO_APPEND flag in fuse 2013-01-08 12:21:50 +00:00
hpfs Fix up kernel sources to be ready for a 64-bit ino_t. 2012-09-27 23:30:49 +00:00
msdosfs Do not update the fsinfo block on each update of any fat block, this 2013-02-17 20:35:54 +00:00
nandfs Remove the last use of the deprecated MNT_VNODE_FOREACH interface in 2013-01-03 19:01:56 +00:00
nfs Further refine the handling of stop signals in the NFS client. The 2013-02-21 19:02:50 +00:00
nfsclient Further refine the handling of stop signals in the NFS client. The 2013-02-21 19:02:50 +00:00
nfsserver Further cleanups to use of timestamps in NFS: 2013-01-25 15:25:24 +00:00
ntfs Fix up kernel sources to be ready for a 64-bit ino_t. 2012-09-27 23:30:49 +00:00
nullfs Remove the filtering of the acceptable mount options for nullfs, added 2013-01-16 05:32:49 +00:00
nwfs Do not leave invalid pages in the object after the short read for a 2012-08-14 11:45:47 +00:00
portalfs Use NULL instead of 0 for pointers 2012-07-22 15:40:31 +00:00
procfs Remove the support for using non-mpsafe filesystem modules. 2012-10-22 17:50:54 +00:00
pseudofs Complete MPSAFE VFS interface and remove MNTK_MPSAFE flag. 2012-11-09 18:02:25 +00:00
smbfs - smbfs_rename() might return an error value without correctly upgrading 2012-11-26 04:29:47 +00:00
tmpfs Remove a racy checks on resident and cached pages for 2013-02-10 01:04:10 +00:00
udf Complete MPSAFE VFS interface and remove MNTK_MPSAFE flag. 2012-11-09 18:02:25 +00:00
unionfs r16312 is not any longer real since many years (likely since when VFS 2012-11-19 22:43:45 +00:00