tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

re: thundering pipe herds



> @@ -395,9 +401,8 @@ pipeunlock(struct pipe *pipe)
>  	KASSERT(pipe->pipe_state & PIPE_LOCKFL);
>  
>  	pipe->pipe_state &= ~PIPE_LOCKFL;
> -	if (pipe->pipe_state & PIPE_LWANT) {
> -		pipe->pipe_state &= ~PIPE_LWANT;
> -		cv_broadcast(&pipe->pipe_lkcv);
> +	if (pipe->pipe_waiters > 0) {
> +		cv_signal(&pipe->pipe_lkcv);
>  	}
>  }

this part misses the while loop from the freebsd version i think?


.mrg.


Home | Main Index | Thread Index | Old Index