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