diff --git a/SOURCES/openvswitch-3.2.0.patch b/SOURCES/openvswitch-3.2.0.patch index 9633cdc..67549f8 100644 --- a/SOURCES/openvswitch-3.2.0.patch +++ b/SOURCES/openvswitch-3.2.0.patch @@ -341,6 +341,26 @@ index e64ee76ce..24b0ffefe 100644 if HAVE_WNO_UNUSED lib_libsflow_la_CFLAGS += -Wno-unused endif +diff --git a/lib/db-ctl-base.c b/lib/db-ctl-base.c +index 5d2635946..3a8068b12 100644 +--- a/lib/db-ctl-base.c ++++ b/lib/db-ctl-base.c +@@ -820,6 +820,7 @@ check_condition(const struct ovsdb_idl_table_class *table, + type.value.type = OVSDB_TYPE_VOID; + error = ovsdb_datum_from_string(&b, &type, value_string, symtab); + if (error) { ++ ovsdb_atom_destroy(&want_key, column->type.key.type); + goto out; + } + +@@ -1374,6 +1375,7 @@ set_column(const struct ovsdb_idl_table_class *table, + error = ovsdb_atom_from_string(&value, NULL, &column->type.value, + value_string, symtab); + if (error) { ++ ovsdb_atom_destroy(&key, column->type.key.type); + goto out; + } + diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 9730e0eec..157694bcf 100644 --- a/lib/dpif-netdev.c @@ -519,6 +539,51 @@ index 4fcde9ba1..492bfcffb 100644 nl_msg_put_be16(buf, CTA_PROTO_SRC_PORT, tuple->src_port); nl_msg_put_be16(buf, CTA_PROTO_DST_PORT, tuple->dst_port); } else { +diff --git a/lib/tc.c b/lib/tc.c +index f49048cda..6b38925c3 100644 +--- a/lib/tc.c ++++ b/lib/tc.c +@@ -3851,15 +3851,13 @@ log_tc_flower_match(const char *msg, + + ds_put_cstr(&s, "\nExpected Actions:\n"); + for (i = 0, action = a->actions; i < a->action_count; i++, action++) { +- ds_put_cstr(&s, " - "); +- ds_put_hex(&s, action, sizeof *action); +- ds_put_cstr(&s, "\n"); ++ ds_put_format(&s, " - %d -\n", i); ++ ds_put_sparse_hex_dump(&s, action, sizeof *action, 0, false); + } +- ds_put_cstr(&s, "Received Actions:\n"); ++ ds_put_cstr(&s, "\nReceived Actions:\n"); + for (i = 0, action = b->actions; i < b->action_count; i++, action++) { +- ds_put_cstr(&s, " - "); +- ds_put_hex(&s, action, sizeof *action); +- ds_put_cstr(&s, "\n"); ++ ds_put_format(&s, " - %d -\n", i); ++ ds_put_sparse_hex_dump(&s, action, sizeof *action, 0, false); + } + } else { + /* Only dump the delta in actions. */ +@@ -3868,12 +3866,13 @@ log_tc_flower_match(const char *msg, + + for (int i = 0; i < a->action_count; i++, action_a++, action_b++) { + if (memcmp(action_a, action_b, sizeof *action_a)) { +- ds_put_format(&s, +- "\nAction %d mismatch:\n - Expected Action: ", +- i); +- ds_put_hex(&s, action_a, sizeof *action_a); +- ds_put_cstr(&s, "\n - Received Action: "); +- ds_put_hex(&s, action_b, sizeof *action_b); ++ ds_put_format(&s, "\nAction %d mismatch:\n" ++ " - Expected Action:\n", i); ++ ds_put_sparse_hex_dump(&s, action_a, sizeof *action_a, ++ 0, false); ++ ds_put_cstr(&s, " - Received Action:\n"); ++ ds_put_sparse_hex_dump(&s, action_b, sizeof *action_b, ++ 0, false); + } + } + } diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c index b092e9e04..f7f7b1279 100644 --- a/ofproto/connmgr.c @@ -562,6 +627,56 @@ index b092e9e04..f7f7b1279 100644 VLOG_INFO("%s: added %s controller \"%s\"", mgr->name, ofconn_type_to_string(ofservice->type), target); +diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c +index 04b583f81..292500f21 100644 +--- a/ofproto/ofproto-dpif-upcall.c ++++ b/ofproto/ofproto-dpif-upcall.c +@@ -988,7 +988,7 @@ udpif_revalidator(void *arg) + udpif->reval_exit = latch_is_set(&udpif->exit_latch); + + start_time = time_msec(); +- if (!udpif->reval_exit) { ++ if (!udpif->reval_exit && !udpif->pause) { + bool terse_dump; + + terse_dump = udpif_use_ufid(udpif); +@@ -998,10 +998,15 @@ udpif_revalidator(void *arg) + } + } + +- /* Wait for the leader to start the flow dump. */ ++ /* Wait for the leader to reach this point. */ + ovs_barrier_block(&udpif->reval_barrier); + if (udpif->pause) { + revalidator_pause(revalidator); ++ if (!udpif->reval_exit) { ++ /* The main thread resumed all validators, but the leader ++ * didn't start the dump, go to next iteration. */ ++ continue; ++ } + } + + if (udpif->reval_exit) { +@@ -3195,11 +3200,19 @@ upcall_unixctl_purge(struct unixctl_conn *conn, int argc OVS_UNUSED, + struct udpif *udpif; + + LIST_FOR_EACH (udpif, list_node, &all_udpifs) { ++ bool wake_up = false; + int n; + ++ if (!latch_is_set(&udpif->pause_latch)) { ++ udpif_pause_revalidators(udpif); ++ wake_up = true; ++ } + for (n = 0; n < udpif->n_revalidators; n++) { + revalidator_purge(&udpif->revalidators[n]); + } ++ if (wake_up) { ++ udpif_resume_revalidators(udpif); ++ } + } + unixctl_command_reply(conn, ""); + } diff --git a/ofproto/ofproto-dpif-xlate-cache.c b/ofproto/ofproto-dpif-xlate-cache.c index 9224ee2e6..2e1fcb3a6 100644 --- a/ofproto/ofproto-dpif-xlate-cache.c @@ -1195,6 +1310,19 @@ index 7c333a901..7bdaca9e7 100644 AT_CHECK([echo 'table=0,in_port=p1,ip,nw_dst=10.1.0.0/16 actions=p2' | dnl ovs-ofctl --bundle replace-flows br0 -]) +diff --git a/tests/system-offloads-traffic.at b/tests/system-offloads-traffic.at +index 7215e36e2..cf2a3c2e3 100644 +--- a/tests/system-offloads-traffic.at ++++ b/tests/system-offloads-traffic.at +@@ -799,8 +799,6 @@ AT_CHECK([test $(ovs-appctl dpctl/dump-flows | grep -c "eth_type(0x0800)") -eq 0 + + OVS_TRAFFIC_VSWITCHD_STOP(["/could not open network device ovs-p0/d + /on nonexistent port/d +-/failed to flow_get/d +-/Failed to acquire udpif_key/d + /No such device/d + /failed to offload flow/d + "]) diff --git a/tests/system-traffic.at b/tests/system-traffic.at index 808c492a2..418cd32fe 100644 --- a/tests/system-traffic.at diff --git a/SPECS/openvswitch3.2.spec b/SPECS/openvswitch3.2.spec index f2f868e..42eea73 100644 --- a/SPECS/openvswitch3.2.spec +++ b/SPECS/openvswitch3.2.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 3.2.0 -Release: 25%{?dist} +Release: 26%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -761,6 +761,14 @@ exit 0 %endif %changelog +* Fri Oct 20 2023 Open vSwitch CI - 3.2.0-26 +- Merging upstream branch-3.2 [RH git: 7ed9e7e0ff] + Commit list: + f344aa0b52 tc: Improve logging of mismatched actions. + 159e214c3e ofproto-dpif-upcall: Pause revalidators when purging. + 40b55d2e90 db-ctl-base: Fix memory leak of db commands. + + * Fri Oct 20 2023 Timothy Redaelli - 3.2.0-25 - README.rst: add git submodule update --init [RH git: 17107fb661]