If the ovs service stop abnormal, or host cold reboot, vm is destroyed after ovs service
stop. The ovs port which connect to interface of vm will not be clear. When the ovs
service restart, recover configuration from db, but the interface is no exist, port
recovery failed, and then vm restart on the same host, libvirt add port again, but the
port configuration is same as before, ovs will not connect the interface, only store the
configuration in db. Below will trigger this problem,
virsh start vm
service openvswitch-switch stop
virsh destroy vm
service openvswitch-switch start
virsh start vm
Signed-off-by: Chunhe Li <lichunhe(a)huawei.com>
---
src/util/virnetdevopenvswitch.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/util/virnetdevopenvswitch.c b/src/util/virnetdevopenvswitch.c
index 9bcbfb1..2c414ad 100644
--- a/src/util/virnetdevopenvswitch.c
+++ b/src/util/virnetdevopenvswitch.c
@@ -84,8 +84,8 @@ int virNetDevOpenvswitchAddPort(const char *brname, const char *ifname,
cmd = virCommandNew(OVSVSCTL);
- virCommandAddArgList(cmd, "--timeout=5", "--",
"--may-exist", "add-port",
- brname, ifname, NULL);
+ virCommandAddArgList(cmd, "--timeout=5", "--",
"--if-exists", "del-port",
+ ifname, "--", "add-port", brname, ifname,
NULL);
if (virtVlan && virtVlan->nTags > 0) {
--
1.9.2.msysgit.0