Index | Thread | Search

From:
Claudio Jeker <cjeker@diehard.n-r-g.com>
Subject:
Re: socket wait channels
To:
Alexander Bluhm <bluhm@openbsd.org>
Cc:
tech@openbsd.org
Date:
Thu, 25 Apr 2024 16:43:26 +0200

Download raw body.

Thread
On Thu, Apr 25, 2024 at 03:58:32PM +0200, Alexander Bluhm wrote:
> Hi,
> 
> Wait channel names should be unique for easier debugging.
> 
> "netcon2" was copied from sys_connect() to sys_ypconnect(), better
> call it "ypcon".
> 
> Calling the accept sleep "netcon" makes no sense.  Better use
> "netacc" for accept(2) and "netcon" for connect(2).
> 
> "netlck" for the socket buffer lock in bslock() can easily mixed
> with "netlock" for the global network lock.  How about "sblock" for
> sblock()?

Sounds good to me. I thought sblock was already used but that's sbwait.
So OK claudio@
 
> ok?
> 
> bluhm
> 
> Index: kern/uipc_socket2.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/kern/uipc_socket2.c,v
> diff -u -p -r1.149 uipc_socket2.c
> --- kern/uipc_socket2.c	11 Apr 2024 13:32:51 -0000	1.149
> +++ kern/uipc_socket2.c	25 Apr 2024 13:45:23 -0000
> @@ -559,7 +559,7 @@ sblock(struct socket *so, struct sockbuf
>  	while (sb->sb_flags & SB_LOCK) {
>  		sb->sb_flags |= SB_WANT;
>  		mtx_leave(&sb->sb_mtx);
> -		error = sosleep_nsec(so, &sb->sb_flags, prio, "netlck", INFSLP);
> +		error = sosleep_nsec(so, &sb->sb_flags, prio, "sblock", INFSLP);
>  		if (error)
>  			return (error);
>  		mtx_enter(&sb->sb_mtx);
> Index: kern/uipc_syscalls.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/kern/uipc_syscalls.c,v
> diff -u -p -r1.218 uipc_syscalls.c
> --- kern/uipc_syscalls.c	1 Mar 2024 14:15:01 -0000	1.218
> +++ kern/uipc_syscalls.c	25 Apr 2024 13:45:12 -0000
> @@ -300,7 +300,7 @@ doaccept(struct proc *p, int sock, struc
>  			break;
>  		}
>  		error = sosleep_nsec(head, &head->so_timeo, PSOCK | PCATCH,
> -		    "netcon", INFSLP);
> +		    "netacc", INFSLP);
>  		if (error)
>  			goto out_unlock;
>  	}
> @@ -428,7 +428,7 @@ sys_connect(struct proc *p, void *v, reg
>  	}
>  	while ((so->so_state & SS_ISCONNECTING) && so->so_error == 0) {
>  		error = sosleep_nsec(so, &so->so_timeo, PSOCK | PCATCH,
> -		    "netcon2", INFSLP);
> +		    "netcon", INFSLP);
>  		if (error) {
>  			if (error == EINTR || error == ERESTART)
>  				interrupted = 1;
> @@ -1651,7 +1651,7 @@ out:
>  	error = soconnect(so, nam);
>  	while ((so->so_state & SS_ISCONNECTING) && so->so_error == 0) {
>  		error = sosleep_nsec(so, &so->so_timeo, PSOCK | PCATCH,
> -		    "netcon2", INFSLP);
> +		    "ypcon", INFSLP);
>  		if (error)
>  			break;
>  	}
> 

-- 
:wq Claudio