From a09a8b6fc24f41d7c5b83db04ac778a7b69515df Mon Sep 17 00:00:00 2001
From: Ethan Jackson <ethan@nicira.com>
Date: Wed, 29 Feb 2012 18:54:05 -0800
Subject: [PATCH] xenserver: Restart ovs-xapi-sync on kmod reload.

Some users never restart OVS, they just reload the kernel module on
each new version. Since ovs-xapi-sync is a daemon, a restart is
required to use the new code.  Therefore, without this patch, users
could unwittingly use stale versions of ovs-xapi-sync.

Bug #9919.
Signed-off-by: Ethan Jackson <ethan@nicira.com>
Diagnosed-by: Ben Pfaff <blp@nicira.com>
---
 xenserver/etc_init.d_openvswitch | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/xenserver/etc_init.d_openvswitch b/xenserver/etc_init.d_openvswitch
index c7d0736aa..29f2cf605 100755
--- a/xenserver/etc_init.d_openvswitch
+++ b/xenserver/etc_init.d_openvswitch
@@ -43,6 +43,16 @@ case `cat /etc/xensource/network.conf` in
         ;;
 esac
 
+start_ovs_xapi_sync () {
+    if daemon_is_running ovs-xapi-sync; then
+	log_success_msg "ovs-xapi-sync is already running"
+    else
+	PYTHONPATH=/usr/share/openvswitch/python \
+            /usr/share/openvswitch/scripts/ovs-xapi-sync \
+            --log-file --pidfile --detach --monitor unix:/var/run/openvswitch/db.sock
+    fi
+}
+
 start () {
     set $ovs_ctl ${1-start}
     set "$@" --system-id="$INSTALLATION_UUID"
@@ -68,13 +78,7 @@ start () {
     fi
     "$@"
 
-    if daemon_is_running ovs-xapi-sync; then
-	log_success_msg "ovs-xapi-sync is already running"
-    else
-	PYTHONPATH=/usr/share/openvswitch/python \
-            /usr/share/openvswitch/scripts/ovs-xapi-sync \
-            --log-file --pidfile --detach --monitor unix:/var/run/openvswitch/db.sock
-    fi
+    start_ovs_xapi_sync
 
     $ovs_ctl --protocol=gre enable-protocol
 
@@ -91,6 +95,9 @@ force_reload_kmod () {
 	action "Stopping HA daemon" ha_stop_daemon
 	action "Starting HA daemon" ha_start_daemon
     fi
+
+    action "Stopping ovs-xapi-sync" stop_daemon ovs-xapi-sync
+    action "Starting ovs-xapi-sync" start_ovs_xapi_sync
 }
 
 stop () {
-- 
2.47.0