mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 03:12:22 +00:00
network: don't even call networkRunHook if there is no network
networkAllocateActualDevice() is called for *all* interfaces, not just those with type='network'. In that case, it will jump down to its validate: label immediately, without allocating anything. After validation is done, two counters are potentially updated (one for the network, and one for any particular physical device that is chosen), and then networkRunHook() is called. This patch refactors that code a slight bit so that networkRunHook() doesn't get called if netdef is NULL (i.e. type != network) and to place the conditional increment of dev->connections inside the "if (netdef)" as well - dev can never be non-null if netdef is null (because "dev" is the pointer to a device in a network's pool of devices), so this doesn't have any functional effect, it just makes the code clearer.
This commit is contained in:
parent
969493f91d
commit
0700a3dac4
@ -3662,36 +3662,35 @@ validate:
|
||||
}
|
||||
}
|
||||
|
||||
if (dev) {
|
||||
/* mark the allocation */
|
||||
dev->connections++;
|
||||
if (actualType != VIR_DOMAIN_NET_TYPE_HOSTDEV) {
|
||||
VIR_DEBUG("Using physical device %s, %d connections",
|
||||
dev->device.dev, dev->connections);
|
||||
} else {
|
||||
VIR_DEBUG("Using physical device %04x:%02x:%02x.%x, connections %d",
|
||||
dev->device.pci.domain, dev->device.pci.bus,
|
||||
dev->device.pci.slot, dev->device.pci.function,
|
||||
dev->connections);
|
||||
}
|
||||
}
|
||||
|
||||
if (netdef) {
|
||||
netdef->connections++;
|
||||
VIR_DEBUG("Using network %s, %d connections",
|
||||
netdef->name, netdef->connections);
|
||||
}
|
||||
|
||||
/* finally we can call the 'plugged' hook script if any */
|
||||
if (networkRunHook(network, dom, iface,
|
||||
VIR_HOOK_NETWORK_OP_IFACE_PLUGGED,
|
||||
VIR_HOOK_SUBOP_BEGIN) < 0) {
|
||||
/* adjust for failure */
|
||||
if (dev)
|
||||
dev->connections--;
|
||||
if (netdef)
|
||||
if (dev) {
|
||||
/* mark the allocation */
|
||||
dev->connections++;
|
||||
if (actualType != VIR_DOMAIN_NET_TYPE_HOSTDEV) {
|
||||
VIR_DEBUG("Using physical device %s, %d connections",
|
||||
dev->device.dev, dev->connections);
|
||||
} else {
|
||||
VIR_DEBUG("Using physical device %04x:%02x:%02x.%x, connections %d",
|
||||
dev->device.pci.domain, dev->device.pci.bus,
|
||||
dev->device.pci.slot, dev->device.pci.function,
|
||||
dev->connections);
|
||||
}
|
||||
}
|
||||
|
||||
/* finally we can call the 'plugged' hook script if any */
|
||||
if (networkRunHook(network, dom, iface,
|
||||
VIR_HOOK_NETWORK_OP_IFACE_PLUGGED,
|
||||
VIR_HOOK_SUBOP_BEGIN) < 0) {
|
||||
/* adjust for failure */
|
||||
netdef->connections--;
|
||||
goto error;
|
||||
if (dev)
|
||||
dev->connections--;
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user