Accepting request 811206 from home:jfehlig:branches:Virtualization
- libxl: Normalize MAC address in device conf on netdev hotplug ec07aad8-libxl-normalize-mac-addr.patch bsc#1172052 OBS-URL: https://build.opensuse.org/request/show/811206 OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=830
This commit is contained in:
parent
f962f3653a
commit
04185dab96
@ -23,7 +23,7 @@ Index: libvirt-6.4.0/src/libxl/libxl_driver.c
|
||||
===================================================================
|
||||
--- libvirt-6.4.0.orig/src/libxl/libxl_driver.c
|
||||
+++ libvirt-6.4.0/src/libxl/libxl_driver.c
|
||||
@@ -5287,6 +5287,96 @@ libxlDomainMemoryStats(virDomainPtr dom,
|
||||
@@ -5323,6 +5323,96 @@ libxlDomainMemoryStats(virDomainPtr dom,
|
||||
|
||||
#undef LIBXL_SET_MEMSTAT
|
||||
|
||||
@ -120,7 +120,7 @@ Index: libvirt-6.4.0/src/libxl/libxl_driver.c
|
||||
static int
|
||||
libxlDomainGetJobInfo(virDomainPtr dom,
|
||||
virDomainJobInfoPtr info)
|
||||
@@ -6756,6 +6846,7 @@ static virHypervisorDriver libxlHypervis
|
||||
@@ -6792,6 +6882,7 @@ static virHypervisorDriver libxlHypervis
|
||||
#endif
|
||||
.nodeGetFreeMemory = libxlNodeGetFreeMemory, /* 0.9.0 */
|
||||
.nodeGetCellsFreeMemory = libxlNodeGetCellsFreeMemory, /* 1.1.1 */
|
||||
|
117
ec07aad8-libxl-normalize-mac-addr.patch
Normal file
117
ec07aad8-libxl-normalize-mac-addr.patch
Normal file
@ -0,0 +1,117 @@
|
||||
commit ec07aad8f8a6ead8e9363c8deec4845edb5bf112
|
||||
Author: Jim Fehlig <jfehlig@suse.com>
|
||||
Date: Wed May 27 17:29:33 2020 -0600
|
||||
|
||||
libxl: Normalize MAC address in device conf when hotplugging a netdev
|
||||
|
||||
Similar to commits 55ce6564634 and 6c17606b7cc in the qemu driver, make
|
||||
separate copies of persistent and live device config and normalize the MAC
|
||||
address between the two. This avoids having different MAC address for the
|
||||
persistent and live config, ensuring the device has the same address when
|
||||
the persistent config takes affect after a VM restart.
|
||||
|
||||
Signed-off-by: Jim Fehlig <jfehlig@suse.com>
|
||||
Reviewed-by: Laine Stump <laine@redhat.com>
|
||||
|
||||
Index: libvirt-6.4.0/src/libxl/libxl_driver.c
|
||||
===================================================================
|
||||
--- libvirt-6.4.0.orig/src/libxl/libxl_driver.c
|
||||
+++ libvirt-6.4.0/src/libxl/libxl_driver.c
|
||||
@@ -4096,6 +4096,31 @@ libxlDomainUpdateDeviceConfig(virDomainD
|
||||
}
|
||||
|
||||
|
||||
+static void
|
||||
+libxlDomainAttachDeviceNormalize(const virDomainDeviceDef *devConf,
|
||||
+ virDomainDeviceDefPtr devLive)
|
||||
+{
|
||||
+ /*
|
||||
+ * Fixup anything that needs to be identical in the live and
|
||||
+ * config versions of DeviceDef, but might not be. Do this by
|
||||
+ * changing the contents of devLive. This is done after all
|
||||
+ * post-parse tweaks and validation, so be very careful about what
|
||||
+ * changes are made.
|
||||
+ */
|
||||
+
|
||||
+ /* MAC address should be identical in both DeviceDefs, but if it
|
||||
+ * wasn't specified in the XML, and was instead autogenerated, it
|
||||
+ * will be different for the two since they are each the result of
|
||||
+ * a separate parser call. If it *was* specified, it will already
|
||||
+ * be the same, so copying does no harm.
|
||||
+ */
|
||||
+
|
||||
+ if (devConf->type == VIR_DOMAIN_DEVICE_NET)
|
||||
+ virMacAddrSet(&devLive->data.net->mac, &devConf->data.net->mac);
|
||||
+
|
||||
+}
|
||||
+
|
||||
+
|
||||
static int
|
||||
libxlDomainAttachDeviceFlags(virDomainPtr dom, const char *xml,
|
||||
unsigned int flags)
|
||||
@@ -4104,7 +4129,9 @@ libxlDomainAttachDeviceFlags(virDomainPt
|
||||
libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
|
||||
virDomainObjPtr vm = NULL;
|
||||
virDomainDefPtr vmdef = NULL;
|
||||
- virDomainDeviceDefPtr dev = NULL;
|
||||
+ virDomainDeviceDefPtr devConf = NULL;
|
||||
+ virDomainDeviceDef devConfSave = { 0 };
|
||||
+ virDomainDeviceDefPtr devLive = NULL;
|
||||
int ret = -1;
|
||||
|
||||
virCheckFlags(VIR_DOMAIN_DEVICE_MODIFY_LIVE |
|
||||
@@ -4123,28 +4150,36 @@ libxlDomainAttachDeviceFlags(virDomainPt
|
||||
goto endjob;
|
||||
|
||||
if (flags & VIR_DOMAIN_DEVICE_MODIFY_CONFIG) {
|
||||
- if (!(dev = virDomainDeviceDefParse(xml, vm->def,
|
||||
- driver->xmlopt, NULL,
|
||||
- VIR_DOMAIN_DEF_PARSE_INACTIVE)))
|
||||
+ if (!(devConf = virDomainDeviceDefParse(xml, vm->def,
|
||||
+ driver->xmlopt, NULL,
|
||||
+ VIR_DOMAIN_DEF_PARSE_INACTIVE)))
|
||||
goto endjob;
|
||||
|
||||
/* Make a copy for updated domain. */
|
||||
if (!(vmdef = virDomainObjCopyPersistentDef(vm, driver->xmlopt, NULL)))
|
||||
goto endjob;
|
||||
|
||||
- if (libxlDomainAttachDeviceConfig(vmdef, dev) < 0)
|
||||
+ /*
|
||||
+ * devConf will be NULLed out by
|
||||
+ * libxlDomainAttachDeviceConfig(), so save it for later use by
|
||||
+ * libxlDomainAttachDeviceNormalize()
|
||||
+ */
|
||||
+ devConfSave = *devConf;
|
||||
+
|
||||
+ if (libxlDomainAttachDeviceConfig(vmdef, devConf) < 0)
|
||||
goto endjob;
|
||||
}
|
||||
|
||||
if (flags & VIR_DOMAIN_DEVICE_MODIFY_LIVE) {
|
||||
- /* If dev exists it was created to modify the domain config. Free it. */
|
||||
- virDomainDeviceDefFree(dev);
|
||||
- if (!(dev = virDomainDeviceDefParse(xml, vm->def,
|
||||
+ if (!(devLive = virDomainDeviceDefParse(xml, vm->def,
|
||||
driver->xmlopt, NULL,
|
||||
VIR_DOMAIN_DEF_PARSE_INACTIVE)))
|
||||
goto endjob;
|
||||
|
||||
- if (libxlDomainAttachDeviceLive(driver, vm, dev) < 0)
|
||||
+ if (flags & VIR_DOMAIN_AFFECT_CONFIG)
|
||||
+ libxlDomainAttachDeviceNormalize(&devConfSave, devLive);
|
||||
+
|
||||
+ if (libxlDomainAttachDeviceLive(driver, vm, devLive) < 0)
|
||||
goto endjob;
|
||||
|
||||
/*
|
||||
@@ -4171,7 +4206,8 @@ libxlDomainAttachDeviceFlags(virDomainPt
|
||||
|
||||
cleanup:
|
||||
virDomainDefFree(vmdef);
|
||||
- virDomainDeviceDefFree(dev);
|
||||
+ virDomainDeviceDefFree(devConf);
|
||||
+ virDomainDeviceDefFree(devLive);
|
||||
virDomainObjEndAPI(&vm);
|
||||
virObjectUnref(cfg);
|
||||
return ret;
|
@ -1,3 +1,10 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Jun 3 16:38:09 UTC 2020 - James Fehlig <jfehlig@suse.com>
|
||||
|
||||
- libxl: Normalize MAC address in device conf on netdev hotplug
|
||||
ec07aad8-libxl-normalize-mac-addr.patch
|
||||
bsc#1172052
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jun 2 15:16:15 UTC 2020 - James Fehlig <jfehlig@suse.com>
|
||||
|
||||
|
@ -338,6 +338,7 @@ Source6: libvirtd-relocation-server.xml
|
||||
Source99: baselibs.conf
|
||||
Source100: %{name}-rpmlintrc
|
||||
# Upstream patches
|
||||
Patch0: ec07aad8-libxl-normalize-mac-addr.patch
|
||||
# Patches pending upstream review
|
||||
Patch100: libxl-dom-reset.patch
|
||||
Patch101: network-don-t-use-dhcp-authoritative-on-static-netwo.patch
|
||||
@ -873,6 +874,7 @@ libvirt plugin for NSS for translating domain names into IP addresses.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
%patch100 -p1
|
||||
%patch101 -p1
|
||||
%patch150 -p1
|
||||
|
@ -74,7 +74,7 @@ Index: libvirt-6.4.0/src/libxl/libxl_driver.c
|
||||
libxlDomainDestroyFlags(virDomainPtr dom,
|
||||
unsigned int flags)
|
||||
{
|
||||
@@ -6631,6 +6686,7 @@ static virHypervisorDriver libxlHypervis
|
||||
@@ -6667,6 +6722,7 @@ static virHypervisorDriver libxlHypervis
|
||||
.domainShutdown = libxlDomainShutdown, /* 0.9.0 */
|
||||
.domainShutdownFlags = libxlDomainShutdownFlags, /* 0.9.10 */
|
||||
.domainReboot = libxlDomainReboot, /* 0.9.0 */
|
||||
|
@ -56,7 +56,7 @@ Index: libvirt-6.4.0/src/libxl/libxl_driver.c
|
||||
===================================================================
|
||||
--- libvirt-6.4.0.orig/src/libxl/libxl_driver.c
|
||||
+++ libvirt-6.4.0/src/libxl/libxl_driver.c
|
||||
@@ -6196,6 +6196,9 @@ libxlDomainMigratePerform3Params(virDoma
|
||||
@@ -6232,6 +6232,9 @@ libxlDomainMigratePerform3Params(virDoma
|
||||
const char *dname = NULL;
|
||||
const char *uri = NULL;
|
||||
int ret = -1;
|
||||
@ -66,7 +66,7 @@ Index: libvirt-6.4.0/src/libxl/libxl_driver.c
|
||||
|
||||
#ifdef LIBXL_HAVE_NO_SUSPEND_RESUME
|
||||
virReportUnsupportedError();
|
||||
@@ -6212,6 +6215,18 @@ libxlDomainMigratePerform3Params(virDoma
|
||||
@@ -6248,6 +6251,18 @@ libxlDomainMigratePerform3Params(virDoma
|
||||
virTypedParamsGetString(params, nparams,
|
||||
VIR_MIGRATE_PARAM_DEST_NAME,
|
||||
&dname) < 0 ||
|
||||
@ -85,7 +85,7 @@ Index: libvirt-6.4.0/src/libxl/libxl_driver.c
|
||||
virTypedParamsGetString(params, nparams,
|
||||
VIR_MIGRATE_PARAM_URI,
|
||||
&uri) < 0)
|
||||
@@ -6226,11 +6241,11 @@ libxlDomainMigratePerform3Params(virDoma
|
||||
@@ -6262,11 +6277,11 @@ libxlDomainMigratePerform3Params(virDoma
|
||||
|
||||
if ((flags & (VIR_MIGRATE_TUNNELLED | VIR_MIGRATE_PEER2PEER))) {
|
||||
if (libxlDomainMigrationSrcPerformP2P(driver, vm, dom->conn, dom_xml,
|
||||
|
Loading…
Reference in New Issue
Block a user