lkml.org 
[lkml]   [2018]   [Aug]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] blk-wbt: get back the missed wakeup from __wbt_done
From
Date
On 8/26/18 9:52 PM, jianchao.wang wrote:
> Hi Jens
>
> On 08/25/2018 11:41 PM, Jens Axboe wrote:
>> do {
>> - set_current_state(TASK_UNINTERRUPTIBLE);
>> + if (test_bit(0, &data.flags))
>> + break;
>>
>> - if (!has_sleeper && rq_wait_inc_below(rqw, get_limit(rwb, rw)))
>> + WARN_ON_ONCE(list_empty(&data.wq.entry));
>> +
>> + if (!has_sleeper &&
>> + rq_wait_inc_below(rqw, get_limit(rwb, rw))) {
>> + finish_wait(&rqw->wait, &data.wq);
>> +
>> + /*
>> + * We raced with wbt_wake_function() getting a token,
>> + * which means we now have two. Put ours and wake
>> + * anyone else potentially waiting for one.
>> + */
>> + if (test_bit(0, &data.flags))
>> + wbt_rqw_done(rwb, rqw, wb_acct);
>> break;
>
> Just use 'bool' variable should be OK
> After finish_wait, no one could race with us here.

I was mostly concerned with the check post prep_to_wait(), but since the
spin unlock should include a barrier, the bool should actually be enough.
I'll change that back once I test.

--
Jens Axboe

\
 
 \ /
  Last update: 2018-08-27 17:39    [W:0.055 / U:2.172 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site