[ovs-dev] [PATCH] ovs-vswitchd: Notify db clients only when reconfiguration is really done.
Ethan Jackson
ethan at nicira.com
Tue Apr 24 21:03:16 UTC 2012
Just to be clear I think this patch is now obsolete so I don't intend
to review it.
Ethan
On Fri, Apr 20, 2012 at 10:38, Ben Pfaff <blp at nicira.com> wrote:
> The "cur_cfg" column in the database is supposed to reflect the latest
> complete (re)configuration of the system. For a long time, any call to
> bridge_reconfigure() always ensured this. However, commit c7e7bb21ff made
> it possible that bridge_reconfigure() only does part of the necessary work,
> but still made its caller always notify the client that reconfiguration was
> complete. This commit fixes the problem.
>
> This commit also moves a little bit of code out of bridge_reconfigure()
> into the caller. This is not necessary, but it seemed logical to group
> this together with updating "cur_cfg".
>
> CC: Ethan Jackson <ethan at nicira.com>
> Reported-by: Pravin B Shelar <pshelar at nicira.com>
> Signed-off-by: Ben Pfaff <blp at nicira.com>
> ---
> vswitchd/bridge.c | 15 ++++++++-------
> 1 files changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
> index f4a10e6..e4a7fa8 100644
> --- a/vswitchd/bridge.c
> +++ b/vswitchd/bridge.c
> @@ -497,12 +497,6 @@ bridge_reconfigure(const struct ovsrec_open_vswitch *ovs_cfg)
> bridge_configure_tables(br);
> }
> free(managers);
> -
> - if (!need_reconfigure) {
> - /* ovs-vswitchd has completed initialization, so allow the process that
> - * forked us to exit successfully. */
> - daemonize_complete();
> - }
> }
>
> /* Iterate over all ofprotos and delete any of them that do not have a
> @@ -1990,8 +1984,15 @@ bridge_run(void)
> struct ovsdb_idl_txn *txn = ovsdb_idl_txn_create(idl);
>
> bridge_reconfigure(cfg);
> + if (!need_reconfigure) {
> + /* Notify database clients that reconfiguration is complete. */
> + ovsrec_open_vswitch_set_cur_cfg(cfg, cfg->next_cfg);
> +
> + /* ovs-vswitchd has completed initialization, so allow the
> + * process that forked us to exit successfully. */
> + daemonize_complete();
> + }
>
> - ovsrec_open_vswitch_set_cur_cfg(cfg, cfg->next_cfg);
> ovsdb_idl_txn_commit(txn);
> ovsdb_idl_txn_destroy(txn); /* XXX */
> } else {
> --
> 1.7.2.5
>
More information about the dev
mailing list