-
由 Jens Axboe 提交于
We now wrap sbitmap waitqueues in an active counter, so we can avoid iterating wakeups unless we have waiters there. This works as long as everyone that's manipulating the waitqueues use the proper helpers. For the tag wait case for shared tags, however, we add ourselves to the waitqueue without incrementing/decrementing the ->ws_active count. This means that wakeups can take a long time to happen. Fix this by manually doing the inc/dec as needed for the wait queue handling. Reported-by: NMichael Leun <kbug@newton.leun.net> Tested-by: NMichael Leun <kbug@newton.leun.net> Cc: stable@vger.kernel.org Reviewed-by: NOmar Sandoval <osandov@fb.com> Fixes: 5d2ee712 ("sbitmap: optimize wakeup check") Signed-off-by: NJens Axboe <axboe@kernel.dk>
e8618575