On Thu, Sep 08, 2022 at 02:51:32PM -0700, Keith Busch wrote: > @@ -638,7 +641,7 @@ static bool __sbq_wake_up(struct sbitmap_queue *sbq) > * Wake up first in case that concurrent callers decrease wait_cnt > * while waitqueue is empty. > */ > - wake_up_nr(&ws->wait, wake_batch); > + wake_up_nr(&ws->wait, wake_batch - wait_cnt); The reason it was failing is this was not spreading the wake up among enough wait states. I'll have to go back to the same method that patch 1 was doing with clamping the decrement count..