freebsd-skq/sys/fs
John Baldwin a120a7a3cd Rework the handling of stop signals in the NFS client. The changes in
195702, 195703, and 195821 prevented a thread from suspending while holding
locks inside of NFS by forcing the thread to fail sleeps with EINTR or
ERESTART but defer the thread suspension to the user boundary.  However,
this had the effect that stopping a process during an NFS request could
abort the request and trigger EINTR errors that were visible to userland
processes (previously the thread would have suspended and completed the
request once it was resumed).

This change instead effectively masks stop signals while in the NFS client.
It uses the existing TDF_SBDRY flag to effect this since SIGSTOP cannot
be masked directly.  Also, instead of setting PBDRY on individual sleeps,
the NFS client now sets the TDF_SBDRY flag around each NFS request and
stop signals are masked for all sleeps during that region (the previous
change missed sleeps in lockmgr locks).  The end result is that stop
signals sent to threads performing an NFS request are completely
ignored until after the NFS request has finished processing and the
thread prepares to return to userland.  This restores the behavior of
stop signals being transparent to userland processes while still
preventing threads from suspending while holding NFS locks.

Reviewed by:	kib
MFC after:	1 month
2013-02-06 17:06:51 +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 Do not force a writer to the devfs file to drain the buffer writes. 2012-12-23 22:43:27 +00:00
ext2fs ext2fs: move assignment where it is not dead. 2013-02-05 03:26:34 +00:00
fdescfs Complete MPSAFE VFS interface and remove MNTK_MPSAFE flag. 2012-11-09 18:02:25 +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 The MSDOSFSMNT_WAITONFAT flag is bogus and broken. It does less than 2013-02-01 18:30:41 +00:00
nandfs Remove the last use of the deprecated MNT_VNODE_FOREACH interface in 2013-01-03 19:01:56 +00:00
nfs Rework the handling of stop signals in the NFS client. The changes in 2013-02-06 17:06:51 +00:00
nfsclient Be conservative and do not try to consume more bytes than was 2013-01-27 09:34:25 +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 tmpfs: Replace directory entry linked list with RB-Tree. 2013-01-06 22:15:44 +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