This socket comes from userland, so this flag is never set. This makes SB_NOINTR flag immutable, because we only set this bit on NFS client socket buffers for all it's lifetime.
I want to do this because this flag modifies sblock() behaviour and it's not clean which lock should protect it for standalone sblock(). ok? I want to completely remove SB_NOINTR flag. Only NFS client sets it, but since the socket never passed to userland, this flag is useless, because we can't send singnal to kernel thread. So for this sblock()/sbwait() sleep is uninterruptible. But I want to not mix NFS server and NFS client diffs. Index: sys/nfs/nfs_syscalls.c =================================================================== RCS file: /cvs/src/sys/nfs/nfs_syscalls.c,v retrieving revision 1.119 diff -u -p -r1.119 nfs_syscalls.c --- sys/nfs/nfs_syscalls.c 3 Aug 2023 09:49:09 -0000 1.119 +++ sys/nfs/nfs_syscalls.c 16 Oct 2023 19:00:02 -0000 @@ -276,9 +276,7 @@ nfssvc_addsock(struct file *fp, struct m m_freem(m); } solock(so); - so->so_rcv.sb_flags &= ~SB_NOINTR; so->so_rcv.sb_timeo_nsecs = INFSLP; - so->so_snd.sb_flags &= ~SB_NOINTR; so->so_snd.sb_timeo_nsecs = INFSLP; sounlock(so); if (tslp)