On 3/25/19 1:04 PM, Omar Sandoval wrote: > On Mon, Mar 25, 2019 at 12:58:47PM -0600, Jens Axboe wrote: >> On 3/25/19 12:56 PM, Omar Sandoval wrote: >>> On Mon, Mar 25, 2019 at 10:22:50AM -0600, Jens Axboe wrote: >>>> 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. >>>> >>>> Fixes: 5d2ee7122c73 ("sbitmap: optimize wakeup check") >>>> Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> >>> >>> Can this use the helpers we added in 9f6b7ef6c3eb ("sbitmap: add helpers >>> for add/del wait queue handling")? >> >> I don't think so without adding more, which seems kind of silly for this >> very specialized use case of openly manipulating the wait queues. The >> blk-mq setup there is very special cased. > > Yup, I see. Assuming it fixes the issue, > > Reviewed-by: Omar Sandoval <osandov@xxxxxx> Thanks - it does fix the issue, the original reporter has since tested and confirmed that his abysmally slow raid5 now works at full speed again. -- Jens Axboe