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.orig/src/libxl/libxl_driver.c
|
||||||
+++ libvirt-6.4.0/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
|
#undef LIBXL_SET_MEMSTAT
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ Index: libvirt-6.4.0/src/libxl/libxl_driver.c
|
|||||||
static int
|
static int
|
||||||
libxlDomainGetJobInfo(virDomainPtr dom,
|
libxlDomainGetJobInfo(virDomainPtr dom,
|
||||||
virDomainJobInfoPtr info)
|
virDomainJobInfoPtr info)
|
||||||
@@ -6756,6 +6846,7 @@ static virHypervisorDriver libxlHypervis
|
@@ -6792,6 +6882,7 @@ static virHypervisorDriver libxlHypervis
|
||||||
#endif
|
#endif
|
||||||
.nodeGetFreeMemory = libxlNodeGetFreeMemory, /* 0.9.0 */
|
.nodeGetFreeMemory = libxlNodeGetFreeMemory, /* 0.9.0 */
|
||||||
.nodeGetCellsFreeMemory = libxlNodeGetCellsFreeMemory, /* 1.1.1 */
|
.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>
|
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
|
Source99: baselibs.conf
|
||||||
Source100: %{name}-rpmlintrc
|
Source100: %{name}-rpmlintrc
|
||||||
# Upstream patches
|
# Upstream patches
|
||||||
|
Patch0: ec07aad8-libxl-normalize-mac-addr.patch
|
||||||
# Patches pending upstream review
|
# Patches pending upstream review
|
||||||
Patch100: libxl-dom-reset.patch
|
Patch100: libxl-dom-reset.patch
|
||||||
Patch101: network-don-t-use-dhcp-authoritative-on-static-netwo.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
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
%patch0 -p1
|
||||||
%patch100 -p1
|
%patch100 -p1
|
||||||
%patch101 -p1
|
%patch101 -p1
|
||||||
%patch150 -p1
|
%patch150 -p1
|
||||||
|
@ -74,7 +74,7 @@ Index: libvirt-6.4.0/src/libxl/libxl_driver.c
|
|||||||
libxlDomainDestroyFlags(virDomainPtr dom,
|
libxlDomainDestroyFlags(virDomainPtr dom,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
{
|
{
|
||||||
@@ -6631,6 +6686,7 @@ static virHypervisorDriver libxlHypervis
|
@@ -6667,6 +6722,7 @@ static virHypervisorDriver libxlHypervis
|
||||||
.domainShutdown = libxlDomainShutdown, /* 0.9.0 */
|
.domainShutdown = libxlDomainShutdown, /* 0.9.0 */
|
||||||
.domainShutdownFlags = libxlDomainShutdownFlags, /* 0.9.10 */
|
.domainShutdownFlags = libxlDomainShutdownFlags, /* 0.9.10 */
|
||||||
.domainReboot = libxlDomainReboot, /* 0.9.0 */
|
.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.orig/src/libxl/libxl_driver.c
|
||||||
+++ libvirt-6.4.0/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 *dname = NULL;
|
||||||
const char *uri = NULL;
|
const char *uri = NULL;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
@ -66,7 +66,7 @@ Index: libvirt-6.4.0/src/libxl/libxl_driver.c
|
|||||||
|
|
||||||
#ifdef LIBXL_HAVE_NO_SUSPEND_RESUME
|
#ifdef LIBXL_HAVE_NO_SUSPEND_RESUME
|
||||||
virReportUnsupportedError();
|
virReportUnsupportedError();
|
||||||
@@ -6212,6 +6215,18 @@ libxlDomainMigratePerform3Params(virDoma
|
@@ -6248,6 +6251,18 @@ libxlDomainMigratePerform3Params(virDoma
|
||||||
virTypedParamsGetString(params, nparams,
|
virTypedParamsGetString(params, nparams,
|
||||||
VIR_MIGRATE_PARAM_DEST_NAME,
|
VIR_MIGRATE_PARAM_DEST_NAME,
|
||||||
&dname) < 0 ||
|
&dname) < 0 ||
|
||||||
@ -85,7 +85,7 @@ Index: libvirt-6.4.0/src/libxl/libxl_driver.c
|
|||||||
virTypedParamsGetString(params, nparams,
|
virTypedParamsGetString(params, nparams,
|
||||||
VIR_MIGRATE_PARAM_URI,
|
VIR_MIGRATE_PARAM_URI,
|
||||||
&uri) < 0)
|
&uri) < 0)
|
||||||
@@ -6226,11 +6241,11 @@ libxlDomainMigratePerform3Params(virDoma
|
@@ -6262,11 +6277,11 @@ libxlDomainMigratePerform3Params(virDoma
|
||||||
|
|
||||||
if ((flags & (VIR_MIGRATE_TUNNELLED | VIR_MIGRATE_PEER2PEER))) {
|
if ((flags & (VIR_MIGRATE_TUNNELLED | VIR_MIGRATE_PEER2PEER))) {
|
||||||
if (libxlDomainMigrationSrcPerformP2P(driver, vm, dom->conn, dom_xml,
|
if (libxlDomainMigrationSrcPerformP2P(driver, vm, dom->conn, dom_xml,
|
||||||
|
Loading…
Reference in New Issue
Block a user