On Thu, 2017-11-09 at 16:00 -0700, Jens Axboe wrote:
> + spin_lock(&this_hctx->lock);
> + if (!list_empty(&wait->entry)) {
> + spin_unlock(&this_hctx->lock);
> + return false;
> + }
>
> - ws = bt_wait_ptr(&this_hctx->tags->bitmap_tags, this_hctx);
> - add_wait_queue(&ws->wait, wait);
> + ws = bt_wait_ptr(&this_hctx->tags->bitmap_tags, this_hctx);
> + add_wait_queue(&ws->wait, wait);
> + }
Hello Jens,
My understanding is that all code that adds a dispatch_wait entry to a wait
queue or removes it from a wait queue is protected by ws->wait.lock. Can you
explain why the above list_empty() check is protected by this_hctx->lock?
Thanks,
Bart.