Changes in v3: - rename patch 2, and add some comments. - add patch 3, which fixes a new issue pointed out by Jan Kara. Changes in v2: - split to spearate patches for different problem. - add fix tag This patchset fixes problems in the wakeup path on concurrent scenarios, the problems are found during code review, and it's not reporduced in real test yet in my environment. Keith reported a possible related io hung problem in nvme: https://bugzilla.kernel.org/show_bug.cgi?id=215679 Previous versions: v1: https://lore.kernel.org/all/20220617141125.3024491-1-yukuai3@xxxxxxxxxx/ v2: https://lore.kernel.org/all/20220619080309.1630027-1-yukuai3@xxxxxxxxxx/ Yu Kuai (3): sbitmap: fix that same waitqueue can be woken up continuously sbitmap: fix invalid wakeup on the wrong waitqueue sbitmap: fix that 'wait_cnt' can be decreased while waitqueue is empty lib/sbitmap.c | 70 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 27 deletions(-) -- 2.31.1