Re: [PATCH 1/5] sbitmap: don't consume nr for inactive waitqueue to avoid lost wakeups

From: Kemeng Shi
Date: Thu Dec 01 2022 - 19:57:32 EST




on 12/1/2022 9:32 PM, Gabriel Krisman Bertazi wrote:
> Kemeng Shi <shikemeng@xxxxxxxxxx> writes:
>
>> If we decremented queue without waiters, we should not decremente freed
>> bits number "nr", or all "nr" could be consumed in a empty queue and no
>> wakeup will be called.
>> Currently, for case "wait_cnt > 0", "nr" will not be decremented if we
>> decremented queue without watiers and retry is returned to avoid lost
>> wakeups. However for case "wait_cnt == 0", "nr" will be decremented
>> unconditionally and maybe decremented to zero. Although retry is
>> returned by active state of queue, it's not actually executed for "nr"
>> is zero.
>>
>
> Hi Kemeng,
>
> Fwiw, I sent a patch rewriting this algorithm which is now merged in
> axboe/for-next. It drops the per-waitqueue wait_cnt entirely. You can
> find it here:
>
> https://lore.kernel.org/lkml/20221110153533.go5qs3psm75h27mx@quack3/T/
>
> Thanks!
Hi Gabriel,
Thanks for remind me of this, I will recheck my patches in the
axboe/for-next branch.

--
Best wishes
Kemeng Shi