ovn-northd: create patch ports when necessary. If the logical router ports without 'peer' or the port named peer is not created, it is unnecessary to insert the ports into the southbound Port_Binding table.
Similarly, if logical switch ports of type 'router' don't contain 'router-port' value, these ports will not be inserted. This patch may optimize the process of 'build_ports'. Signed-off-by: nickcooper-zhangtonghao <nickcooper-zhangtong...@opencloud.tech> --- ovn/northd/ovn-northd.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c index efc915c..f85eb2e 100644 --- a/ovn/northd/ovn-northd.c +++ b/ovn/northd/ovn-northd.c @@ -770,6 +770,22 @@ join_logical_ports(struct northd_context *ctx, } } +static bool +ovn_port_is_insert(const struct ovn_port *op) +{ + if (op->nbsp) { + /* The logical switch port is connected to router*/ + if (!strcmp(op->nbsp->type, "router")) { + const char *router_port = smap_get(&op->nbsp->options, + "router-port"); + return router_port ? true : false; + } + return true; + } + /* Check the peer of the logical router port*/ + return op->peer ? true : false; +} + static void ovn_port_update_sbrec(const struct ovn_port *op) { @@ -869,11 +885,19 @@ build_ports(struct northd_context *ctx, struct hmap *datapaths, continue; } - op->sb = sbrec_port_binding_insert(ctx->ovnsb_txn); - ovn_port_update_sbrec(op); + /* If the logical router ports without 'peer' or the port named peer + * is not created, it is unnecessary to insert the ports into the + * southbound Port_Binding table. + * + * Similarly, if logical switch ports of type 'router' lack 'router-port' + * value, these ports will not be inserted. */ + if (ovn_port_is_insert(op)) { + op->sb = sbrec_port_binding_insert(ctx->ovnsb_txn); + ovn_port_update_sbrec(op); - sbrec_port_binding_set_logical_port(op->sb, op->key); - sbrec_port_binding_set_tunnel_key(op->sb, tunnel_key); + sbrec_port_binding_set_logical_port(op->sb, op->key); + sbrec_port_binding_set_tunnel_key(op->sb, tunnel_key); + } } /* Delete southbound records without northbound matches. */ -- 1.8.3.1 > On Jul 25, 2016, at 1:38 AM, Ben Pfaff <b...@ovn.org> wrote: > > On Sun, Jul 24, 2016 at 07:58:19AM -0700, nickcooper-zhangtonghao wrote: >> It is not necessary to create the logical patch port whose peer named >> "<error>". >> >> Signed-off-by: nickcooper-zhangtonghao >> <nickcooper-zhangtong...@opencloud.tech> > > It seems to me that this fix is in the wrong place. If any change is > needed, I would suggest that it should be to make ovn-northd not create > ports named <error>. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev