Messages in this thread | | | From | Gabriel Krisman Bertazi <> | Subject | Re: [PATCH 1/5] sbitmap: don't consume nr for inactive waitqueue to avoid lost wakeups | Date | Thu, 01 Dec 2022 10:32:36 -0300 |
| |
Kemeng Shi <shikemeng@huawei.com> 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!
-- Gabriel Krisman Bertazi
| |