Oops, forgot to include the branch-22.03 in the title. This one should be the one backported to 22.03 and 21.12.
Thanks, Ales On Thu, Jun 30, 2022 at 3:59 PM Ales Musil <[email protected]> wrote: > From: Adrian Moreno <[email protected]> > > Specifically for: > a77ad96 ("dpif-netdev: Refactor AVX512 runtime checks.") > > At the same time cherry-pick the patch that > allows the bump. > 996ed75 ("treewide: bump ovs and fix problematic loops") > > Reported-at: https://bugzilla.redhat.com/2102618 > Co-authored-by: Adrian Moreno <[email protected]> > Co-authored-by: Dumitru Ceara <[email protected]> > Co-authored-by: Mark Michelson <[email protected]> > Signed-off-by: Ales Musil <[email protected]> > --- > controller/ofctrl.c | 7 ++++++- > lib/actions.c | 2 +- > lib/expr.c | 31 ++++++++++++++++++------------- > lib/ovn-util.c | 2 +- > ovs | 2 +- > utilities/ovn-nbctl.c | 6 +++--- > utilities/ovn-trace.c | 8 +++++--- > 7 files changed, 35 insertions(+), 23 deletions(-) > > diff --git a/controller/ofctrl.c b/controller/ofctrl.c > index 19aa787f9..198f13983 100644 > --- a/controller/ofctrl.c > +++ b/controller/ofctrl.c > @@ -924,7 +924,12 @@ link_installed_to_desired(struct installed_flow *i, > struct desired_flow *d) > break; > } > } > - ovs_list_insert(&f->installed_ref_list_node, > &d->installed_ref_list_node); > + if (!f) { > + ovs_list_insert(&i->desired_refs, &d->installed_ref_list_node); > + } else { > + ovs_list_insert(&f->installed_ref_list_node, > + &d->installed_ref_list_node); > + } > d->installed_flow = i; > return installed_flow_get_active(i) == d; > } > diff --git a/lib/actions.c b/lib/actions.c > index 5d3caaf2b..2219c5b37 100644 > --- a/lib/actions.c > +++ b/lib/actions.c > @@ -2336,7 +2336,7 @@ validate_empty_lb_backends(struct action_context > *ctx, > > switch (o->option->code) { > case EMPTY_LB_VIP: > - if (!inet_parse_active(c->string, 0, &ss, false)) { > + if (!inet_parse_active(c->string, 0, &ss, false, NULL)) { > lexer_error(ctx->lexer, "Invalid load balancer VIP '%s'", > c->string); > return; > diff --git a/lib/expr.c b/lib/expr.c > index 47ef6108e..058390a16 100644 > --- a/lib/expr.c > +++ b/lib/expr.c > @@ -211,16 +211,17 @@ expr_combine(enum expr_type type, struct expr *a, > struct expr *b) > } > > static void > -expr_insert_andor(struct expr *andor, struct expr *before, struct expr > *new) > +expr_insert_andor(struct expr *andor, struct ovs_list *before, > + struct expr *new) > { > if (new->type == andor->type) { > if (andor->type == EXPR_T_AND) { > /* Conjunction junction, what's your function? */ > } > - ovs_list_splice(&before->node, new->andor.next, &new->andor); > + ovs_list_splice(before, new->andor.next, &new->andor); > expr_destroy(new); > } else { > - ovs_list_insert(&before->node, &new->node); > + ovs_list_insert(before, &new->node); > } > } > > @@ -2101,7 +2102,8 @@ expr_annotate__(struct expr *expr, const struct > shash *symtab, > expr_destroy(expr); > return NULL; > } > - expr_insert_andor(expr, next, new_sub); > + expr_insert_andor(expr, next ? &next->node : &expr->andor, > + new_sub); > } > *errorp = NULL; > return expr; > @@ -2301,7 +2303,7 @@ expr_evaluate_condition(struct expr *expr, > struct expr *e = expr_evaluate_condition(sub, > is_chassis_resident, > c_aux); > e = expr_fix(e); > - expr_insert_andor(expr, next, e); > + expr_insert_andor(expr, next ? &next->node : &expr->andor, e); > } > return expr_fix(expr); > > @@ -2334,7 +2336,8 @@ expr_simplify(struct expr *expr) > case EXPR_T_OR: > LIST_FOR_EACH_SAFE (sub, next, node, &expr->andor) { > ovs_list_remove(&sub->node); > - expr_insert_andor(expr, next, expr_simplify(sub)); > + expr_insert_andor(expr, next ? &next->node : &expr->andor, > + expr_simplify(sub)); > } > return expr_fix(expr); > > @@ -2444,12 +2447,13 @@ crush_and_string(struct expr *expr, const struct > expr_symbol *symbol) > * EXPR_T_OR with EXPR_T_CMP subexpressions. */ > struct expr *sub, *next = NULL; > LIST_FOR_EACH_SAFE (sub, next, node, &expr->andor) { > + struct ovs_list *next_list = next ? &next->node : &expr->andor; > ovs_list_remove(&sub->node); > struct expr *new = crush_cmps(sub, symbol); > switch (new->type) { > case EXPR_T_CMP: > if (!singleton) { > - ovs_list_insert(&next->node, &new->node); > + ovs_list_insert(next_list, &new->node); > singleton = new; > } else { > bool match = !strcmp(new->cmp.string, > singleton->cmp.string); > @@ -2463,7 +2467,7 @@ crush_and_string(struct expr *expr, const struct > expr_symbol *symbol) > case EXPR_T_AND: > OVS_NOT_REACHED(); > case EXPR_T_OR: > - ovs_list_insert(&next->node, &new->node); > + ovs_list_insert(next_list, &new->node); > break; > case EXPR_T_BOOLEAN: > if (!new->boolean) { > @@ -2559,7 +2563,7 @@ crush_and_numeric(struct expr *expr, const struct > expr_symbol *symbol) > case EXPR_T_AND: > OVS_NOT_REACHED(); > case EXPR_T_OR: > - ovs_list_insert(&next->node, &new->node); > + ovs_list_insert(next ? &next->node : &expr->andor, > &new->node); > break; > case EXPR_T_BOOLEAN: > if (!new->boolean) { > @@ -2725,7 +2729,8 @@ crush_or(struct expr *expr, const struct expr_symbol > *symbol) > * is now a disjunction of cmps over the same symbol. */ > LIST_FOR_EACH_SAFE (sub, next, node, &expr->andor) { > ovs_list_remove(&sub->node); > - expr_insert_andor(expr, next, crush_cmps(sub, symbol)); > + expr_insert_andor(expr, next ? &next->node : &expr->andor, > + crush_cmps(sub, symbol)); > } > expr = expr_fix(expr); > if (expr->type != EXPR_T_OR) { > @@ -2886,8 +2891,7 @@ expr_normalize_and(struct expr *expr) > > struct expr *a, *b; > LIST_FOR_EACH_SAFE (a, b, node, &expr->andor) { > - if (&b->node == &expr->andor > - || a->type != EXPR_T_CMP || b->type != EXPR_T_CMP > + if (!b || a->type != EXPR_T_CMP || b->type != EXPR_T_CMP > || a->cmp.symbol != b->cmp.symbol) { > continue; > } else if (a->cmp.symbol->width > @@ -2964,7 +2968,8 @@ expr_normalize_or(struct expr *expr) > } > expr_destroy(new); > } else { > - expr_insert_andor(expr, next, new); > + expr_insert_andor(expr, next ? &next->node : &expr->andor, > + new); > } > } else { > ovs_assert(sub->type == EXPR_T_CMP || > diff --git a/lib/ovn-util.c b/lib/ovn-util.c > index a22ae84fe..2f2f7ae39 100644 > --- a/lib/ovn-util.c > +++ b/lib/ovn-util.c > @@ -735,7 +735,7 @@ ip_address_and_port_from_lb_key(const char *key, char > **ip_address, > uint16_t *port, int *addr_family) > { > struct sockaddr_storage ss; > - if (!inet_parse_active(key, 0, &ss, false)) { > + if (!inet_parse_active(key, 0, &ss, false, NULL)) { > static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 1); > VLOG_WARN_RL(&rl, "bad ip address or port for load balancer key > %s", > key); > diff --git a/ovs b/ovs > index 91e1ff5dd..45ecaa9e5 160000 > --- a/ovs > +++ b/ovs > @@ -1 +1 @@ > -Subproject commit 91e1ff5dde396fbcc8623ac0726066e970e6de15 > +Subproject commit 45ecaa9e574d63496e54a4093128302e2c2e10d0 > diff --git a/utilities/ovn-nbctl.c b/utilities/ovn-nbctl.c > index adb08c6c9..2684870be 100644 > --- a/utilities/ovn-nbctl.c > +++ b/utilities/ovn-nbctl.c > @@ -2847,7 +2847,7 @@ nbctl_lb_add(struct ctl_context *ctx) > } > > struct sockaddr_storage ss_vip; > - if (!inet_parse_active(lb_vip, 0, &ss_vip, false)) { > + if (!inet_parse_active(lb_vip, 0, &ss_vip, false, NULL)) { > ctl_error(ctx, "%s: should be an IP address (or an IP address " > "and a port number with : as a separator).", lb_vip); > return; > @@ -2877,7 +2877,7 @@ nbctl_lb_add(struct ctl_context *ctx) > struct sockaddr_storage ss_dst; > > if (lb_vip_port) { > - if (!inet_parse_active(token, -1, &ss_dst, false)) { > + if (!inet_parse_active(token, -1, &ss_dst, false, NULL)) { > ctl_error(ctx, "%s: should be an IP address and a port " > "number with : as a separator.", token); > goto out; > @@ -3023,7 +3023,7 @@ lb_info_add_smap(const struct nbrec_load_balancer > *lb, > const struct smap_node *node = nodes[i]; > > struct sockaddr_storage ss; > - if (!inet_parse_active(node->key, 0, &ss, false)) { > + if (!inet_parse_active(node->key, 0, &ss, false, NULL)) { > continue; > } > > diff --git a/utilities/ovn-trace.c b/utilities/ovn-trace.c > index ece5803f2..096d691d5 100644 > --- a/utilities/ovn-trace.c > +++ b/utilities/ovn-trace.c > @@ -214,7 +214,7 @@ static void > parse_lb_option(const char *s) > { > struct sockaddr_storage ss; > - if (!inet_parse_active(s, 0, &ss, false)) { > + if (!inet_parse_active(s, 0, &ss, false, NULL)) { > ovs_fatal(0, "%s: bad address", s); > } > > @@ -1388,7 +1388,8 @@ ovntrace_node_prune_summary(struct ovs_list *nodes) > sub->type == OVNTRACE_NODE_TABLE) { > /* Replace 'sub' by its children, if any, */ > ovs_list_remove(&sub->node); > - ovs_list_splice(&next->node, sub->subs.next, &sub->subs); > + ovs_list_splice(next ? &next->node : nodes, sub->subs.next, > + &sub->subs); > ovntrace_node_destroy(sub); > } > } > @@ -1432,7 +1433,8 @@ ovntrace_node_prune_hard(struct ovs_list *nodes) > sub->type == OVNTRACE_NODE_OUTPUT) { > /* Replace 'sub' by its children, if any, */ > ovs_list_remove(&sub->node); > - ovs_list_splice(&next->node, sub->subs.next, &sub->subs); > + ovs_list_splice(next ? &next->node : nodes, sub->subs.next, > + &sub->subs); > ovntrace_node_destroy(sub); > } > } > -- > 2.35.3 > > -- Ales Musil Senior Software Engineer - OVN Core Red Hat EMEA <https://www.redhat.com> [email protected] IM: amusil <https://red.ht/sig> _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
