On Wed, May 29, 2019 at 08:05:13PM +0800, ychen wrote:
> hi,
>    I noticed that we can set bucket's weight to 0 when add/mod group.
>    1. when we use default select method, and when all the buckets with weight 
> larger than 0 change to dead,
>       we can still pick the bucket whose weight is 0. here is the code:
>      pick_default_select_group()->group_best_live_bucket():
>      LIST_FOR_EACH (bucket, list_node, &group->up.buckets) {
>         if (bucket_is_alive(ctx, bucket, 0)) {       ///// so when only 
> bucket with weight=0 is active
>             uint32_t score =
>                 (hash_int(bucket->bucket_id, basis) & 0xffff) * 
> bucket->weight;
>             if (score >= best_score) {                 //// and bucket with 
> weight=0 does match this clause
>                 best_bucket = bucket;
>                 best_score = score;
>             }
> 
> 
> 2. but for dp_hash selection method, we init the bucket when group_construct
>     and bucket whose weight is 0 will be excluded. Here is the code:
>       for (int hash = 0; hash < n_hash; hash++) {
>         struct webster *winner = &webster[0];
>         for (i = 1; i < n_buckets; i++) {
>             if (webster[i].value > winner->value) {   //// bucket with 
> weight=0 always be excluded
>                 winner = &webster[i];
>             }
>         }
> 
> 
> so here is my question: why the behavior is different for dp_hash method and 
> default selection method?

Thank you for the bug report.

I sent a fix for review:
        https://mail.openvswitch.org/pipermail/ovs-dev/2019-June/359559.html
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to