freebsd-dev/sys/nfsclient
John Baldwin 593efaf9f7 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
..
nfs_bio.c Do not leave invalid pages in the object after the short read for a 2012-08-14 11:45:47 +00:00
nfs_kdtrace.c Fix the module dependency in nfs_kdtrace.c for the old NFS 2011-05-06 19:55:15 +00:00
nfs_krpc.c Further refine the handling of stop signals in the NFS client. The 2013-02-21 19:02:50 +00:00
nfs_nfsiod.c Change the sysctl naming for the old and new NFS clients 2011-05-15 20:52:43 +00:00
nfs_node.c r16312 is not any longer real since many years (likely since when VFS 2012-11-19 22:43:45 +00:00
nfs_subs.c Use the VA_UTIMES_NULL flag to detect when NULL was passed to utimes() 2013-01-16 21:52:31 +00:00
nfs_vfsops.c Further refine the handling of stop signals in the NFS client. The 2013-02-21 19:02:50 +00:00
nfs_vnops.c Use vfs_timestamp() to set file timestamps rather than invoking 2013-01-18 18:43:38 +00:00
nfs.h Fix a comment that got missed by r221973 which changed 2011-05-16 13:12:09 +00:00
nfsargs.h Move the NFSv4.1 client patches over from projects/nfsv4.1-client 2012-12-08 22:52:39 +00:00
nfsm_subs.h Close a race in NFS lookup processing that could result in stale name cache 2012-01-20 20:02:01 +00:00
nfsmount.h Add a timeout on positive name cache entries in the NFS client. That is, 2012-01-25 20:05:58 +00:00
nfsnode.h PR# 165923 reported intermittent write failures for dirty 2012-05-12 12:02:51 +00:00
nfsstats.h
nlminfo.h