On 07/03/17(Tue) 10:57, Martin Pieuchot wrote:
> This code is mostly a copy of what's done in sys_connect(), so sync it
> to use solock()/sosleep()/sounlock() instead of splsoftnet()/splx().
> 
> ok?

Anyone?

> 
> Index: nfs/nfs_socket.c
> ===================================================================
> RCS file: /cvs/src/sys/nfs/nfs_socket.c,v
> retrieving revision 1.114
> diff -u -p -r1.114 nfs_socket.c
> --- nfs/nfs_socket.c  3 Mar 2017 09:41:20 -0000       1.114
> +++ nfs/nfs_socket.c  7 Mar 2017 09:53:02 -0000
> @@ -306,25 +306,24 @@ nfs_connect(struct nfsmount *nmp, struct
>                * connect system call but with the wait timing out so
>                * that interruptible mounts don't hang here for a long time.
>                */
> -             s = splsoftnet();
> +             s = solock(so);
>               while ((so->so_state & SS_ISCONNECTING) && so->so_error == 0) {
> -                     (void) tsleep((caddr_t)&so->so_timeo, PSOCK,
> -                             "nfscon", 2 * hz);
> +                     sosleep(so, &so->so_timeo, PSOCK, "nfscon", 2 * hz);
>                       if ((so->so_state & SS_ISCONNECTING) &&
>                           so->so_error == 0 && rep &&
>                           (error = nfs_sigintr(nmp, rep, rep->r_procp)) != 0){
>                               so->so_state &= ~SS_ISCONNECTING;
> -                             splx(s);
> +                             sounlock(s);
>                               goto bad;
>                       }
>               }
>               if (so->so_error) {
>                       error = so->so_error;
>                       so->so_error = 0;
> -                     splx(s);
> +                     sounlock(s);
>                       goto bad;
>               }
> -             splx(s);
> +             sounlock(s);
>       }
>       /*
>        * Always set receive timeout to detect server crash and reconnect.
> 

Reply via email to