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)

Reply via email to