On 7/1/21 10:42 AM, zhangjl02 wrote:
From: zhangjl02 <zhangjl02(a)inspur.com>
When qos is set or delete, we have to check if the port is an ovs managed
port. If true, call the virNetDevOpenvswitchInterfaceSetQos function when qos
is set, and call the virNetDevOpenvswitchInterfaceClearQos function when
the interface is to be destroyed.
---
src/qemu/qemu_command.c | 10 ++++++++--
src/qemu/qemu_driver.c | 22 +++++++++++++++++++++-
src/qemu/qemu_hotplug.c | 39 ++++++++++++++++++++++++++++-----------
src/qemu/qemu_process.c | 10 ++++++++--
4 files changed, 65 insertions(+), 16 deletions(-)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index ea513693f7..1e9ed592e1 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -8610,8 +8610,14 @@ qemuBuildInterfaceCommandLine(virQEMUDriver *driver,
actualBandwidth = virDomainNetGetActualBandwidth(net);
if (actualBandwidth) {
if (virNetDevSupportsBandwidth(actualType)) {
- if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false,
- !virDomainNetTypeSharesHostView(net)) < 0)
+ if (virDomainNetDefIsOvsport(net, actualType)) {
+ if (virNetDevOpenvswitchInterfaceSetQos(net->ifname,
actualBandwidth,
+ def->uuid,
+
!virDomainNetTypeSharesHostView(net)) < 0)
+ goto cleanup;
+ }
+ else if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false,
+ !virDomainNetTypeSharesHostView(net)) <
0)
goto cleanup;
Again, we use slightly different style for if-else and curly braces. I'll just paste
what I think should be squashed in:
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 1e9ed592e1..522394bb74 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -8610,15 +8610,15 @@ qemuBuildInterfaceCommandLine(virQEMUDriver *driver,
actualBandwidth = virDomainNetGetActualBandwidth(net);
if (actualBandwidth) {
if (virNetDevSupportsBandwidth(actualType)) {
- if (virDomainNetDefIsOvsport(net, actualType)) {
+ if (virDomainNetDefIsOvsport(net)) {
if (virNetDevOpenvswitchInterfaceSetQos(net->ifname, actualBandwidth,
def->uuid,
!virDomainNetTypeSharesHostView(net)) < 0)
goto cleanup;
- }
- else if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false,
- !virDomainNetTypeSharesHostView(net)) < 0)
+ } else if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false,
+ !virDomainNetTypeSharesHostView(net)) <
0) {
goto cleanup;
+ }
} else {
VIR_WARN("setting bandwidth on interfaces of "
"type '%s' is not implemented yet",
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index a6212fed6a..72f550bf8d 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -10278,7 +10278,7 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
if (net) {
actualType = virDomainNetGetActualType(net);
qosSupported = virNetDevSupportsBandwidth(actualType);
- ovsType = virDomainNetDefIsOvsport(net, actualType);
+ ovsType = virDomainNetDefIsOvsport(net);
}
if (qosSupported && persistentNet) {
@@ -10368,10 +10368,10 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
}
}
- if (ovsType){
+ if (ovsType) {
if (virNetDevOpenvswitchInterfaceSetQos(net->ifname, newBandwidth,
vm->def->uuid,
- !virDomainNetTypeSharesHostView(net))
< 0){
+ !virDomainNetTypeSharesHostView(net))
< 0) {
virErrorPtr orig_err;
virErrorPreserveLast(&orig_err);
@@ -10385,9 +10385,8 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom,
virErrorRestore(&orig_err);
goto endjob;
}
- }
- else if (virNetDevBandwidthSet(net->ifname, newBandwidth, false,
- !virDomainNetTypeSharesHostView(net)) < 0) {
+ } else if (virNetDevBandwidthSet(net->ifname, newBandwidth, false,
+ !virDomainNetTypeSharesHostView(net)) < 0) {
virErrorPtr orig_err;
virErrorPreserveLast(&orig_err);
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index e900834e3e..cb6a4e4ea5 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -1409,15 +1409,15 @@ qemuDomainAttachNetDevice(virQEMUDriver *driver,
actualBandwidth = virDomainNetGetActualBandwidth(net);
if (actualBandwidth) {
if (virNetDevSupportsBandwidth(actualType)) {
- if (virDomainNetDefIsOvsport(net, actualType)) {
+ if (virDomainNetDefIsOvsport(net)) {
if (virNetDevOpenvswitchInterfaceSetQos(net->ifname, actualBandwidth,
vm->def->uuid,
!virDomainNetTypeSharesHostView(net)) < 0)
goto cleanup;
+ } else if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false,
+ !virDomainNetTypeSharesHostView(net)) <
0) {
+ goto cleanup;
}
- else if (virNetDevBandwidthSet(net->ifname, actualBandwidth, false,
- !virDomainNetTypeSharesHostView(net)) < 0)
- goto cleanup;
} else {
VIR_WARN("setting bandwidth on interfaces of "
"type '%s' is not implemented yet",
@@ -3920,15 +3920,15 @@ qemuDomainChangeNet(virQEMUDriver *driver,
const virNetDevBandwidth *newb = virDomainNetGetActualBandwidth(newdev);
if (newb) {
- if (virDomainNetDefIsOvsport(newdev, newType)) {
+ if (virDomainNetDefIsOvsport(newdev)) {
if (virNetDevOpenvswitchInterfaceSetQos(newdev->ifname, newb,
vm->def->uuid,
!virDomainNetTypeSharesHostView(newdev)) < 0)
goto cleanup;
+ } else if (virNetDevBandwidthSet(newdev->ifname, newb, false,
+ !virDomainNetTypeSharesHostView(newdev))
< 0) {
+ goto cleanup;
}
- else if (virNetDevBandwidthSet(newdev->ifname, newb, false,
- !virDomainNetTypeSharesHostView(newdev)) < 0)
- goto cleanup;
} else {
/*
* virNetDevBandwidthSet() doesn't clear any existing
@@ -4677,15 +4677,15 @@ qemuDomainRemoveNetDevice(virQEMUDriver *driver,
if (!(charDevAlias = qemuAliasChardevFromDevAlias(net->info.alias)))
return -1;
- if (virNetDevSupportsBandwidth(virDomainNetGetActualType(net))){
- if (virDomainNetDefIsOvsport(net, actualType)) {
+ if (virNetDevSupportsBandwidth(virDomainNetGetActualType(net))) {
+ if (virDomainNetDefIsOvsport(net)) {
if (virNetDevOpenvswitchInterfaceClearQos(net->ifname,
vm->def->uuid) < 0)
VIR_WARN("cannot clear bandwidth setting for ovs device : %s",
net->ifname);
- }
- else if (virNetDevBandwidthClear(net->ifname) < 0)
+ } else if (virNetDevBandwidthClear(net->ifname) < 0) {
VIR_WARN("cannot clear bandwidth setting for device : %s",
net->ifname);
+ }
}
/* deactivate the tap/macvtap device on the host, which could also
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 95cdf232ef..3693796b06 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -7818,7 +7818,6 @@ void qemuProcessStop(virQEMUDriver *driver,
g_autofree char *timestamp = NULL;
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
g_autoptr(virConnect) conn = NULL;
- int actualType;
VIR_DEBUG("Shutting down vm=%p name=%s id=%d pid=%lld, "
"reason=%s, asyncJob=%s, flags=0x%x",
@@ -7967,8 +7966,7 @@ void qemuProcessStop(virQEMUDriver *driver,
for (i = 0; i < def->nnets; i++) {
virDomainNetDef *net = def->nets[i];
vport = virDomainNetGetActualVirtPortProfile(net);
- actualType = virDomainNetGetActualType(net);
- switch (actualType) {
+ switch (virDomainNetGetActualType(net)) {
case VIR_DOMAIN_NET_TYPE_DIRECT:
ignore_value(virNetDevMacVLanDeleteWithVPortProfile(
net->ifname, &net->mac,
@@ -8024,10 +8022,11 @@ void qemuProcessStop(virQEMUDriver *driver,
else
VIR_WARN("Unable to release network device '%s'",
NULLSTR(net->ifname));
}
- if (virDomainNetDefIsOvsport(net, actualType)) {
- if (virNetDevOpenvswitchInterfaceClearQos(net->ifname,
vm->def->uuid) < 0)
- VIR_WARN("cannot clear bandwidth setting for ovs device : %s",
- net->ifname);
+
+ if (virDomainNetDefIsOvsport(net) &&
+ virNetDevOpenvswitchInterfaceClearQos(net->ifname, vm->def->uuid)
< 0) {
+ VIR_WARN("cannot clear bandwidth setting for ovs device : %s",
+ net->ifname);
}
}
Michal