mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 06:05:27 +00:00
qemu_hotplug: Allow QoS update in qemuDomainChangeNet
The qemuDomainChangeNet() is called when 'virsh update-device' is invoked on a NIC. Currently, we fail to update the QoS even though we have routines for that. Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
ee02fbc8e4
commit
9fa10d3901
@ -1799,6 +1799,7 @@ qemuDomainChangeNet(virQEMUDriverPtr driver,
|
||||
bool needFilterChange = false;
|
||||
bool needLinkStateChange = false;
|
||||
bool needReplaceDevDef = false;
|
||||
bool needBandwidthSet = false;
|
||||
int ret = -1;
|
||||
|
||||
if (!devslot || !(olddev = *devslot)) {
|
||||
@ -2062,8 +2063,6 @@ qemuDomainChangeNet(virQEMUDriverPtr driver,
|
||||
virDomainNetGetActualDirectMode(olddev) != virDomainNetGetActualDirectMode(olddev) ||
|
||||
!virNetDevVPortProfileEqual(virDomainNetGetActualVirtPortProfile(olddev),
|
||||
virDomainNetGetActualVirtPortProfile(newdev)) ||
|
||||
!virNetDevBandwidthEqual(virDomainNetGetActualBandwidth(olddev),
|
||||
virDomainNetGetActualBandwidth(newdev)) ||
|
||||
!virNetDevVlanEqual(virDomainNetGetActualVlan(olddev),
|
||||
virDomainNetGetActualVlan(newdev))) {
|
||||
needReconnect = true;
|
||||
@ -2072,6 +2071,10 @@ qemuDomainChangeNet(virQEMUDriverPtr driver,
|
||||
if (olddev->linkstate != newdev->linkstate)
|
||||
needLinkStateChange = true;
|
||||
|
||||
if (!virNetDevBandwidthEqual(virDomainNetGetActualBandwidth(olddev),
|
||||
virDomainNetGetActualBandwidth(newdev)))
|
||||
needBandwidthSet = true;
|
||||
|
||||
/* FINALLY - actually perform the required actions */
|
||||
|
||||
if (needReconnect) {
|
||||
@ -2081,6 +2084,18 @@ qemuDomainChangeNet(virQEMUDriverPtr driver,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (needBandwidthSet) {
|
||||
if (virNetDevBandwidthSet(newdev->ifname,
|
||||
virDomainNetGetActualBandwidth(newdev),
|
||||
false) < 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("cannot set bandwidth limits on %s"),
|
||||
newdev->ifname);
|
||||
goto cleanup;
|
||||
}
|
||||
needReplaceDevDef = true;
|
||||
}
|
||||
|
||||
if (needBridgeChange) {
|
||||
if (qemuDomainChangeNetBridge(dom->conn, vm, olddev, newdev) < 0)
|
||||
goto cleanup;
|
||||
|
Loading…
Reference in New Issue
Block a user