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. -- Jens Axboe