On Wed, Apr 01, 2015 at 04:52:24PM -0700, Alex Wang wrote:
> During upgrade of ovs-vswitchd, we do not want to recreate the kernel
> interfaces.  Especially when IP address is assigned to the internal port,
> the recreation will cause the lost of connection.  Therefore, ovs-vswitchd
> should read current ovsdb content first and then reuse the existing kernel
> interfaces that are configured in ovsdb.  In terms of the code language,
> ovs-vswitchd should only execute bridge_run() after it finishes reading
> the ovsdb content.
> 
> However, this expected behavior is broken by the recent commit d18e52e
> (ovsdb-idl: Tolerate missing tables and columns.) which causes the
> execution of bridge_run() before getting the hint of configured interfaces
> from ovsdb.
> 
> To fix the issue, this commit makes sure that the execution of bridge_run()
> happens only after retrieving the ovsdb contents.
> 
> VMware-BZ: #1424342
> 
> Signed-off-by: Alex Wang <al...@nicira.com>

Acked-by: Ben Pfaff <b...@nicira.com>

The new code seems fine but I don't like having a blank line and a
comment in the middle of an "if".  It's likely to confuse
people. Maybe the comment could be inside the {} block instead of
above it?
> -    } else if (!ovsdb_idl_has_lock(idl)) {
> +
> +    /* Only proceeds when holding the lock and done retrieving db
> +     * contents. */
> +    } else if (!ovsdb_idl_has_lock(idl)
> +               || !ovsdb_idl_has_ever_connected(idl)) {
>          return;
>      }
>      cfg = ovsrec_open_vswitch_first(idl);
> -- 
> 1.7.9.5
> 
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to