mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
bandwidth: Require network QoS if interface uses 'floor'
By current implementation, network inbound is required in order to use 'floor' for guaranteeing minimal throughput. This is so, because we want user to tell us the maximal throughput of the network instead of finding out ourselves (and detect bogus values in case of virtual interfaces). However, we are nowadays requiring this only on documentation level. So if user starts a domain with 'floor' set on one its interfaces, we silently ignore the setting. We should error out instead.
This commit is contained in:
parent
38cc07b7bc
commit
f3fb916de9
@ -4535,12 +4535,23 @@ networkCheckBandwidth(virNetworkObjPtr net,
|
||||
unsigned long long tmp_new_rate = 0;
|
||||
char ifmac[VIR_MAC_STRING_BUFLEN];
|
||||
|
||||
if (!ifaceBand || !ifaceBand->in || !ifaceBand->in->floor ||
|
||||
!netBand || !netBand->in)
|
||||
return 1;
|
||||
|
||||
virMacAddrFormat(&iface->mac, ifmac);
|
||||
|
||||
if (ifaceBand && ifaceBand->in && ifaceBand->in->floor &&
|
||||
!(netBand && netBand->in)) {
|
||||
virReportError(VIR_ERR_OPERATION_UNSUPPORTED,
|
||||
_("Invalid use of 'floor' on interface with MAC "
|
||||
"address %s - network '%s' has no inbound QoS set"),
|
||||
ifmac, net->def->name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!ifaceBand || !ifaceBand->in || !ifaceBand->in->floor ||
|
||||
!netBand || !netBand->in) {
|
||||
/* no QoS required, claim success */
|
||||
return 1;
|
||||
}
|
||||
|
||||
tmp_new_rate = netBand->in->average;
|
||||
tmp_floor_sum += ifaceBand->in->floor;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user