On 12/18/18 11:19 AM, Paolo Valente wrote:
> 
> 
>> Il giorno 18 dic 2018, alle ore 19:08, Jens Axboe <[email protected]> ha 
>> scritto:
>>
>> On 12/18/18 11:04 AM, Paolo Valente wrote:
>>> static bool bfq_symmetric_scenario(struct bfq_data *bfqd)
>>> {
>>> -   return !bfq_varied_queue_weights_or_active_groups(bfqd);
>>> +   /*
>>> +    * For queue weights to differ, queue_weights_tree must contain
>>> +    * at least two nodes.
>>> +    */
>>> +   bool varied_queue_weights = !RB_EMPTY_ROOT(&bfqd->queue_weights_tree) &&
>>> +           (bfqd->queue_weights_tree.rb_node->rb_left ||
>>> +            bfqd->queue_weights_tree.rb_node->rb_right);
>>> +
>>> +   bool multiple_classes_busy =
>>> +           (bfqd->busy_queues[0] & bfqd->busy_queues[1]) |
>>> +           (bfqd->busy_queues[0] & bfqd->busy_queues[2]) |
>>> +           (bfqd->busy_queues[1] & bfqd->busy_queues[2]);
>>
>> I don't think this does what you want it to, looks like these should be
>> logical AND and OR.
>>
> 
> Absolutely, sorry. Fortunately, the end result is still correct :)

Is it? What if ->busy_queues[0] is 1 and ->busy_queues[1] is 2. You'd
expect the first comparison to be true, but it'd be false. Ditto for
the rest of them, of course.

-- 
Jens Axboe

Reply via email to