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