Re: [PATCH] test_rhashtable: remove semaphore usage

From: David Miller
Date: Mon Dec 10 2018 - 20:29:15 EST


From: Arnd Bergmann <arnd@xxxxxxxx>
Date: Mon, 10 Dec 2018 22:17:20 +0100

> This is one of only two files that initialize a semaphore to a negative
> value. We don't really need the two semaphores here at all, but can do
> the same thing in more conventional and more effient way, by using a
> single waitqueue and an atomic thread counter.
>
> This gets us a little bit closer to eliminating classic semaphores from
> the kernel. It also fixes a corner case where we fail to continue after
> one of the threads fails to start up.
>
> An alternative would be to use a split kthread_create()+wake_up_process()
> and completely eliminate the separate synchronization.
>
> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
> ---
> This is part of a longer, untested, series to remove semaphores
> from the kernel, please review as such before applying.

This looks fine to me, although it seems kinda weird how the
synchronization works in that the N - 1 child threads will
be awoken two times, once when child N decrements the count
to zero and once when the parent decrements the count to -1
which lets us past the wait_event_interruptibel().

Nevertheless it should work just fine and I have no problems
with it.

Want me to apply this to net-next?

Thanks.