From 2c635145d1ede1bfdcfdf491e225b1ef6428d6b0ed304ba8b70fb3915c952d68 Mon Sep 17 00:00:00 2001 From: James Fehlig Date: Tue, 14 Sep 2021 21:02:46 +0000 Subject: [PATCH] Accepting request 919013 from home:jfehlig:branches:Virtualization - libxl: Improve reporting of die_id in capabilities b75a16ae-libxl-improve-die-id.patch boo#1190493 - libxl: Fix driver reload 65fab900-libxl-fix-driver-reload.patch, 51eb680b-libxl-dont-autostart-on-reload.patch bsc#1190420 OBS-URL: https://build.opensuse.org/request/show/919013 OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=904 --- ...ibxl-add-support-for-BlockResize-API.patch | 4 +-- 51eb680b-libxl-dont-autostart-on-reload.patch | 28 +++++++++++++++ 65fab900-libxl-fix-driver-reload.patch | 32 +++++++++++++++++ b75a16ae-libxl-improve-die-id.patch | 35 +++++++++++++++++++ libvirt.changes | 11 ++++++ libvirt.spec | 3 ++ libxl-dom-reset.patch | 4 +-- libxl-set-migration-constraints.patch | 6 ++-- 8 files changed, 116 insertions(+), 7 deletions(-) create mode 100644 51eb680b-libxl-dont-autostart-on-reload.patch create mode 100644 65fab900-libxl-fix-driver-reload.patch create mode 100644 b75a16ae-libxl-improve-die-id.patch diff --git a/0001-libxl-add-support-for-BlockResize-API.patch b/0001-libxl-add-support-for-BlockResize-API.patch index ec98992..9a20d49 100644 --- a/0001-libxl-add-support-for-BlockResize-API.patch +++ b/0001-libxl-add-support-for-BlockResize-API.patch @@ -23,7 +23,7 @@ Index: libvirt-7.7.0/src/libxl/libxl_driver.c =================================================================== --- libvirt-7.7.0.orig/src/libxl/libxl_driver.c +++ libvirt-7.7.0/src/libxl/libxl_driver.c -@@ -5269,6 +5269,95 @@ libxlDomainMemoryStats(virDomainPtr dom, +@@ -5265,6 +5265,95 @@ libxlDomainMemoryStats(virDomainPtr dom, #undef LIBXL_SET_MEMSTAT @@ -119,7 +119,7 @@ Index: libvirt-7.7.0/src/libxl/libxl_driver.c static int libxlDomainGetJobInfo(virDomainPtr dom, virDomainJobInfoPtr info) -@@ -6567,6 +6656,7 @@ static virHypervisorDriver libxlHypervis +@@ -6563,6 +6652,7 @@ static virHypervisorDriver libxlHypervis .domainGetNumaParameters = libxlDomainGetNumaParameters, /* 1.1.1 */ .nodeGetFreeMemory = libxlNodeGetFreeMemory, /* 0.9.0 */ .nodeGetCellsFreeMemory = libxlNodeGetCellsFreeMemory, /* 1.1.1 */ diff --git a/51eb680b-libxl-dont-autostart-on-reload.patch b/51eb680b-libxl-dont-autostart-on-reload.patch new file mode 100644 index 0000000..b29d30c --- /dev/null +++ b/51eb680b-libxl-dont-autostart-on-reload.patch @@ -0,0 +1,28 @@ +commit 51eb680b2647a8c0520ec5da3bb32d711d59f81b +Author: Jim Fehlig +Date: Tue Sep 14 11:11:11 2021 -0600 + + libxl: Don't autostart domains on driver reload + + When libxlAutostartDomain was introduced with commit fb92307f0d, one hunk + mistakenly added a call site in libxlStateReload. Domains should not be + autostarted when reloading the driver, so remove the offending hunk. + + Signed-off-by: Jim Fehlig + Reviewed-by: Ján Tomko + +Index: libvirt-7.7.0/src/libxl/libxl_driver.c +=================================================================== +--- libvirt-7.7.0.orig/src/libxl/libxl_driver.c ++++ libvirt-7.7.0/src/libxl/libxl_driver.c +@@ -825,10 +825,6 @@ libxlStateReload(void) + libxl_driver->xmlopt, + NULL, libxl_driver); + +- virDomainObjListForEach(libxl_driver->domains, false, +- libxlAutostartDomain, +- libxl_driver); +- + virObjectUnref(cfg); + return 0; + } diff --git a/65fab900-libxl-fix-driver-reload.patch b/65fab900-libxl-fix-driver-reload.patch new file mode 100644 index 0000000..a4b7903 --- /dev/null +++ b/65fab900-libxl-fix-driver-reload.patch @@ -0,0 +1,32 @@ +commit 65fab900c5206700f728de5dec72886832b5328f +Author: Jim Fehlig +Date: Mon Sep 13 16:04:41 2021 -0600 + + libxl: Fix driver reload + + On reload, the libxl driver calls virDomainObjListLoadAllConfigs to load + all configs from /etc/libvirt/libxl/ but incorrectly passes 'true' for + the liveStatus parameter, resulting in error messages such as + + libvirtd[21053]: XML error: unexpected root element , expecting + libvirtd[21053]: Failed to load config for domain 'sles15sp3' + + Fix by not requesting live status when re-reading the persistent VM config + files. + + Signed-off-by: Jim Fehlig + Reviewed-by: Michal Privoznik + +Index: libvirt-7.7.0/src/libxl/libxl_driver.c +=================================================================== +--- libvirt-7.7.0.orig/src/libxl/libxl_driver.c ++++ libvirt-7.7.0/src/libxl/libxl_driver.c +@@ -821,7 +821,7 @@ libxlStateReload(void) + virDomainObjListLoadAllConfigs(libxl_driver->domains, + cfg->configDir, + cfg->autostartDir, +- true, ++ false, + libxl_driver->xmlopt, + NULL, libxl_driver); + diff --git a/b75a16ae-libxl-improve-die-id.patch b/b75a16ae-libxl-improve-die-id.patch new file mode 100644 index 0000000..d814c04 --- /dev/null +++ b/b75a16ae-libxl-improve-die-id.patch @@ -0,0 +1,35 @@ +commit b75a16ae5e8d9bc9d1b917e20a6d85db3cbc7b82 +Author: Jim Fehlig +Date: Fri Sep 10 14:34:09 2021 -0600 + + libxl: Improve reporting of die_id in capabilities + + On Xen, libvirt runs in a VM (typically dom0) and does not have an accurate + picture of numa and cpu topology of the underlying physical machine using + the "usual" mechanisms. numa info and cpu toplogy are retrieved from libxl + and used to populate the libvirt conterparts. Commit 7b79ee2f78b introduced + support for reporting die_id in capabilities, but did not account for + special handling of numa and cpu topology in libxl. + + Currently, Xen does not report die_id in the libxl_cputopology structure. + In the meantime, set die_id to 0, which was suggested by the Xen developers + and is slightly better than random garbage such as + + + + Signed-off-by: Jim Fehlig + Reviewed-by: Michal Privoznik + +Index: libvirt-7.7.0/src/libxl/libxl_capabilities.c +=================================================================== +--- libvirt-7.7.0.orig/src/libxl/libxl_capabilities.c ++++ libvirt-7.7.0/src/libxl/libxl_capabilities.c +@@ -292,6 +292,8 @@ libxlCapsInitNuma(libxl_ctx *ctx, virCap + cpus[node][nr_cpus_node[node]-1].id = i; + cpus[node][nr_cpus_node[node]-1].socket_id = cpu_topo[i].socket; + cpus[node][nr_cpus_node[node]-1].core_id = cpu_topo[i].core; ++ /* Until Xen reports die_id, 0 is better than random garbage */ ++ cpus[node][nr_cpus_node[node]-1].die_id = 0; + /* Allocate the siblings maps. We will be filling them later */ + cpus[node][nr_cpus_node[node]-1].siblings = virBitmapNew(nr_cpus); + } diff --git a/libvirt.changes b/libvirt.changes index dcfb863..02c9b0f 100644 --- a/libvirt.changes +++ b/libvirt.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Tue Sep 14 20:16:34 UTC 2021 - James Fehlig + +- libxl: Improve reporting of die_id in capabilities + b75a16ae-libxl-improve-die-id.patch + boo#1190493 +- libxl: Fix driver reload + 65fab900-libxl-fix-driver-reload.patch, + 51eb680b-libxl-dont-autostart-on-reload.patch + bsc#1190420 + ------------------------------------------------------------------- Wed Sep 1 14:21:30 UTC 2021 - James Fehlig diff --git a/libvirt.spec b/libvirt.spec index 38276d9..44ce5d8 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -285,6 +285,9 @@ Source6: libvirtd-relocation-server.xml Source99: baselibs.conf Source100: %{name}-rpmlintrc # Upstream patches +Patch0: b75a16ae-libxl-improve-die-id.patch +Patch1: 65fab900-libxl-fix-driver-reload.patch +Patch2: 51eb680b-libxl-dont-autostart-on-reload.patch # Patches pending upstream review Patch100: libxl-dom-reset.patch Patch101: network-don-t-use-dhcp-authoritative-on-static-netwo.patch diff --git a/libxl-dom-reset.patch b/libxl-dom-reset.patch index 2ff0293..2f8d360 100644 --- a/libxl-dom-reset.patch +++ b/libxl-dom-reset.patch @@ -12,7 +12,7 @@ Index: libvirt-7.7.0/src/libxl/libxl_driver.c =================================================================== --- libvirt-7.7.0.orig/src/libxl/libxl_driver.c +++ libvirt-7.7.0/src/libxl/libxl_driver.c -@@ -1347,6 +1347,63 @@ libxlDomainReboot(virDomainPtr dom, unsi +@@ -1343,6 +1343,63 @@ libxlDomainReboot(virDomainPtr dom, unsi } static int @@ -76,7 +76,7 @@ Index: libvirt-7.7.0/src/libxl/libxl_driver.c libxlDomainDestroyFlags(virDomainPtr dom, unsigned int flags) { -@@ -6445,6 +6502,7 @@ static virHypervisorDriver libxlHypervis +@@ -6441,6 +6498,7 @@ static virHypervisorDriver libxlHypervis .domainShutdown = libxlDomainShutdown, /* 0.9.0 */ .domainShutdownFlags = libxlDomainShutdownFlags, /* 0.9.10 */ .domainReboot = libxlDomainReboot, /* 0.9.0 */ diff --git a/libxl-set-migration-constraints.patch b/libxl-set-migration-constraints.patch index 8719c5c..9a95225 100644 --- a/libxl-set-migration-constraints.patch +++ b/libxl-set-migration-constraints.patch @@ -77,7 +77,7 @@ Index: libvirt-7.7.0/src/libxl/libxl_driver.c =================================================================== --- libvirt-7.7.0.orig/src/libxl/libxl_driver.c +++ libvirt-7.7.0/src/libxl/libxl_driver.c -@@ -6009,6 +6009,9 @@ libxlDomainMigratePerform3Params(virDoma +@@ -6005,6 +6005,9 @@ libxlDomainMigratePerform3Params(virDoma const char *dname = NULL; const char *uri = NULL; int ret = -1; @@ -87,7 +87,7 @@ Index: libvirt-7.7.0/src/libxl/libxl_driver.c #ifdef LIBXL_HAVE_NO_SUSPEND_RESUME virReportUnsupportedError(); -@@ -6025,6 +6028,15 @@ libxlDomainMigratePerform3Params(virDoma +@@ -6021,6 +6024,15 @@ libxlDomainMigratePerform3Params(virDoma virTypedParamsGetString(params, nparams, VIR_MIGRATE_PARAM_DEST_NAME, &dname) < 0 || @@ -103,7 +103,7 @@ Index: libvirt-7.7.0/src/libxl/libxl_driver.c virTypedParamsGetString(params, nparams, VIR_MIGRATE_PARAM_URI, &uri) < 0) -@@ -6039,11 +6051,11 @@ libxlDomainMigratePerform3Params(virDoma +@@ -6035,11 +6047,11 @@ libxlDomainMigratePerform3Params(virDoma if ((flags & (VIR_MIGRATE_TUNNELLED | VIR_MIGRATE_PEER2PEER))) { if (libxlDomainMigrationSrcPerformP2P(driver, vm, dom->conn, dom_xml,