From 86af401d07c5e2b9ca4b66a7a28606c146659f49 Mon Sep 17 00:00:00 2001 From: Jiri Denemark Date: Wed, 25 Jan 2023 10:13:33 +0100 Subject: [PATCH] libvirt-9.0.0-2.el9 - vircgroupv2: fix cpu.weight limits check (rhbz#2037998) - domain_validate: drop cpu.shares cgroup check (rhbz#2037998) - docs: document correct cpu shares limits with both cgroups v1 and v2 (rhbz#2037998) - qemu_interface: Fix managed='no' case when creating an ethernet interface (rhbz#2144738) - conf: clarify some external TPM error messages (rhbz#2063723) - qemu: hotplug: Remove legacy quirk for 'dimm' address generation (rhbz#2158701) - qemu: alias: Remove 'oldAlias' argument of qemuAssignDeviceMemoryAlias (rhbz#2158701) - qemu: Remove 'memAliasOrderMismatch' field from VM private data (rhbz#2158701) - rpc: Fix error message in virNetServerSetClientLimits (rhbz#2033879) Resolves: rhbz#2033879, rhbz#2037998, rhbz#2063723, rhbz#2144738, rhbz#2158701 --- ...ify-some-external-TPM-error-messages.patch | 63 ++++++++++ ...s-limits-with-both-cgroups-v1-and-v2.patch | 53 +++++++++ ...alidate-drop-cpu.shares-cgroup-check.patch | 50 ++++++++ ...rMismatch-field-from-VM-private-data.patch | 77 +++++++++++++ ...ument-of-qemuAssignDeviceMemoryAlias.patch | 108 ++++++++++++++++++ ...cy-quirk-for-dimm-address-generation.patch | 51 +++++++++ ...-when-creating-an-ethernet-interface.patch | 56 +++++++++ ...ssage-in-virNetServerSetClientLimits.patch | 43 +++++++ ...cgroupv2-fix-cpu.weight-limits-check.patch | 59 ++++++++++ libvirt.spec | 23 +++- 10 files changed, 582 insertions(+), 1 deletion(-) create mode 100644 libvirt-conf-clarify-some-external-TPM-error-messages.patch create mode 100644 libvirt-docs-document-correct-cpu-shares-limits-with-both-cgroups-v1-and-v2.patch create mode 100644 libvirt-domain_validate-drop-cpu.shares-cgroup-check.patch create mode 100644 libvirt-qemu-Remove-memAliasOrderMismatch-field-from-VM-private-data.patch create mode 100644 libvirt-qemu-alias-Remove-oldAlias-argument-of-qemuAssignDeviceMemoryAlias.patch create mode 100644 libvirt-qemu-hotplug-Remove-legacy-quirk-for-dimm-address-generation.patch create mode 100644 libvirt-qemu_interface-Fix-managed-no-case-when-creating-an-ethernet-interface.patch create mode 100644 libvirt-rpc-Fix-error-message-in-virNetServerSetClientLimits.patch create mode 100644 libvirt-vircgroupv2-fix-cpu.weight-limits-check.patch diff --git a/libvirt-conf-clarify-some-external-TPM-error-messages.patch b/libvirt-conf-clarify-some-external-TPM-error-messages.patch new file mode 100644 index 0000000..d6a5a99 --- /dev/null +++ b/libvirt-conf-clarify-some-external-TPM-error-messages.patch @@ -0,0 +1,63 @@ +From 0c35c1c0495a953268719ad83cf2f368ab53018b Mon Sep 17 00:00:00 2001 +Message-Id: <0c35c1c0495a953268719ad83cf2f368ab53018b@dist-git> +From: =?UTF-8?q?J=C3=A1n=20Tomko?= +Date: Fri, 20 Jan 2023 12:56:48 +0100 +Subject: [PATCH] conf: clarify some external TPM error messages +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Two of the messages referred to 'backend type' when dealing +with the source type and one mentioned the 'client' attribute +from an earlier iteration of the patches, even though the attribute +was later changed to 'connect'. + +https://bugzilla.redhat.com/show_bug.cgi?id=2063723 + +Signed-off-by: Ján Tomko +Reviewed-by: Martin Kletzander +(cherry picked from commit 1c7476c8797b7f0d6e8d607f6a42c5bf43441677) +Signed-off-by: Ján Tomko +--- + src/conf/domain_conf.c | 4 ++-- + src/conf/domain_validate.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c +index 45965fa0fa..733399e6da 100644 +--- a/src/conf/domain_conf.c ++++ b/src/conf/domain_conf.c +@@ -10545,7 +10545,7 @@ virDomainTPMDefParseXML(virDomainXMLOption *xmlopt, + case VIR_DOMAIN_TPM_TYPE_EXTERNAL: + if (!(type = virXPathString("string(./backend/source/@type)", ctxt))) { + virReportError(VIR_ERR_XML_ERROR, "%s", +- _("missing external TPM backend type")); ++ _("missing external TPM backend source type")); + goto error; + } + +@@ -10555,7 +10555,7 @@ virDomainTPMDefParseXML(virDomainXMLOption *xmlopt, + def->data.external.source->type = virDomainChrTypeFromString(type); + if (def->data.external.source->type < 0) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, +- _("unknown backend type '%s' for external TPM"), ++ _("unknown backend source type '%s' for external TPM"), + type); + goto error; + } +diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c +index 39d924d4ed..1c13929281 100644 +--- a/src/conf/domain_validate.c ++++ b/src/conf/domain_validate.c +@@ -2757,7 +2757,7 @@ virDomainTPMDevValidate(const virDomainTPMDef *tpm) + } + if (tpm->data.external.source->data.nix.listen) { + virReportError(VIR_ERR_XML_ERROR, "%s", +- _("only 'client' mode is supported for external TPM device")); ++ _("only 'connect' mode is supported for external TPM device")); + return -1; + } + if (tpm->data.external.source->data.nix.path == NULL) { +-- +2.39.1 + diff --git a/libvirt-docs-document-correct-cpu-shares-limits-with-both-cgroups-v1-and-v2.patch b/libvirt-docs-document-correct-cpu-shares-limits-with-both-cgroups-v1-and-v2.patch new file mode 100644 index 0000000..1b35f96 --- /dev/null +++ b/libvirt-docs-document-correct-cpu-shares-limits-with-both-cgroups-v1-and-v2.patch @@ -0,0 +1,53 @@ +From 31f2edcd7f42cda4173eabad879bfc318c202c9e Mon Sep 17 00:00:00 2001 +Message-Id: <31f2edcd7f42cda4173eabad879bfc318c202c9e@dist-git> +From: Pavel Hrdina +Date: Tue, 17 Jan 2023 10:33:22 +0100 +Subject: [PATCH] docs: document correct cpu shares limits with both cgroups v1 + and v2 + +The limits are different with cgroups v1 and v2 but our XML +documentation and virsh manpage mentioned only cgroups v1 limits without +explicitly saying it only applies to cgroups v1. + +Signed-off-by: Pavel Hrdina +Reviewed-by: Martin Kletzander +(cherry picked from commit ead6e1b00285cbd98e0f0727efb8adcb29ebc1ba) + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2037998 + +Signed-off-by: Pavel Hrdina +--- + docs/formatdomain.rst | 2 +- + docs/manpages/virsh.rst | 3 ++- + 2 files changed, 3 insertions(+), 2 deletions(-) + +diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst +index 490a954745..8fc8aeb928 100644 +--- a/docs/formatdomain.rst ++++ b/docs/formatdomain.rst +@@ -849,7 +849,7 @@ CPU Tuning + There is no unit for the value, it's a relative measure based on the setting + of other VM, e.g. A VM configured with value 2048 will get twice as much CPU + time as a VM configured with value 1024. The value should be in range +- [2, 262144]. :since:`Since 0.9.0` ++ [2, 262144] using cgroups v1, [1, 10000] using cgroups v2. :since:`Since 0.9.0` + ``period`` + The optional ``period`` element specifies the enforcement interval (unit: + microseconds). Within ``period``, each vCPU of the domain will not be allowed +diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst +index 88b7fa1da8..d5b614dc03 100644 +--- a/docs/manpages/virsh.rst ++++ b/docs/manpages/virsh.rst +@@ -4054,7 +4054,8 @@ If *--config* is specified, affect the next start of a persistent guest. + If *--current* is specified, it is equivalent to either *--live* or + *--config*, depending on the current state of the guest. + +-``Note``: The cpu_shares parameter has a valid value range of 2-262144. ++``Note``: The cpu_shares parameter has a valid value range of 2-262144 ++with cgroups v1, 1-10000 with cgroups v2. + + ``Note``: The weight and cap parameters are defined only for the + XEN_CREDIT scheduler. +-- +2.39.1 + diff --git a/libvirt-domain_validate-drop-cpu.shares-cgroup-check.patch b/libvirt-domain_validate-drop-cpu.shares-cgroup-check.patch new file mode 100644 index 0000000..eaa0742 --- /dev/null +++ b/libvirt-domain_validate-drop-cpu.shares-cgroup-check.patch @@ -0,0 +1,50 @@ +From fbf5f9bce43e19f8827e5cdef0e456b74ccc2f7d Mon Sep 17 00:00:00 2001 +Message-Id: +From: Pavel Hrdina +Date: Tue, 17 Jan 2023 10:08:08 +0100 +Subject: [PATCH] domain_validate: drop cpu.shares cgroup check + +This check is done when VM is defined but doesn't take into account what +cgroups version is currently used on the host system so it doesn't work +correctly. + +To make proper check at this point we would have to figure out cgroups +version while defining a VM but that will still not guarantee that the +VM will start correctly in the future as the host may be rebooted with +different cgroups version. + +Signed-off-by: Pavel Hrdina +Reviewed-by: Martin Kletzander +(cherry picked from commit 38af6497610075e5fe386734b87186731d4c17ac) + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2037998 + +Signed-off-by: Pavel Hrdina +--- + src/conf/domain_validate.c | 10 ---------- + 1 file changed, 10 deletions(-) + +diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c +index 5a9bf20d3f..39d924d4ed 100644 +--- a/src/conf/domain_validate.c ++++ b/src/conf/domain_validate.c +@@ -1725,16 +1725,6 @@ virDomainDefOSValidate(const virDomainDef *def, + static int + virDomainDefCputuneValidate(const virDomainDef *def) + { +- if (def->cputune.shares > 0 && +- (def->cputune.shares < VIR_CGROUP_CPU_SHARES_MIN || +- def->cputune.shares > VIR_CGROUP_CPU_SHARES_MAX)) { +- virReportError(VIR_ERR_CONFIG_UNSUPPORTED, +- _("Value of cputune 'shares' must be in range [%llu, %llu]"), +- VIR_CGROUP_CPU_SHARES_MIN, +- VIR_CGROUP_CPU_SHARES_MAX); +- return -1; +- } +- + CPUTUNE_VALIDATE_PERIOD(period); + CPUTUNE_VALIDATE_PERIOD(global_period); + CPUTUNE_VALIDATE_PERIOD(emulator_period); +-- +2.39.1 + diff --git a/libvirt-qemu-Remove-memAliasOrderMismatch-field-from-VM-private-data.patch b/libvirt-qemu-Remove-memAliasOrderMismatch-field-from-VM-private-data.patch new file mode 100644 index 0000000..63667a3 --- /dev/null +++ b/libvirt-qemu-Remove-memAliasOrderMismatch-field-from-VM-private-data.patch @@ -0,0 +1,77 @@ +From e0e6c7375855e09c45591d0b5ab23cddaa230ad8 Mon Sep 17 00:00:00 2001 +Message-Id: +From: Peter Krempa +Date: Thu, 19 Jan 2023 15:18:45 +0100 +Subject: [PATCH] qemu: Remove 'memAliasOrderMismatch' field from VM private + data + +The field is no longer used so we can remove it and the code filling it. + +Signed-off-by: Peter Krempa +Reviewed-by: Martin Kletzander +(cherry picked from commit 5764930463eb8f450e45fa982651ef6b7a7afd7c) +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2158701 +--- + src/qemu/qemu_domain.h | 3 --- + src/qemu/qemu_process.c | 24 ------------------------ + 2 files changed, 27 deletions(-) + +diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h +index 08430b67b9..eca5404cdc 100644 +--- a/src/qemu/qemu_domain.h ++++ b/src/qemu/qemu_domain.h +@@ -177,9 +177,6 @@ struct _qemuDomainObjPrivate { + uint8_t *masterKey; + size_t masterKeyLen; + +- /* note whether memory device alias does not correspond to slot number */ +- bool memAliasOrderMismatch; +- + /* for migrations using TLS with a secret (not to be saved in our */ + /* private XML). */ + qemuDomainSecretInfo *migSecinfo; +diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c +index ee9f0784d3..29716ecb19 100644 +--- a/src/qemu/qemu_process.c ++++ b/src/qemu/qemu_process.c +@@ -3896,28 +3896,6 @@ qemuDomainPerfRestart(virDomainObj *vm) + } + + +-static void +-qemuProcessReconnectCheckMemAliasOrderMismatch(virDomainObj *vm) +-{ +- size_t i; +- int aliasidx; +- virDomainDef *def = vm->def; +- qemuDomainObjPrivate *priv = vm->privateData; +- +- if (!virDomainDefHasMemoryHotplug(def) || def->nmems == 0) +- return; +- +- for (i = 0; i < def->nmems; i++) { +- aliasidx = qemuDomainDeviceAliasIndex(&def->mems[i]->info, "dimm"); +- +- if (def->mems[i]->info.addr.dimm.slot != aliasidx) { +- priv->memAliasOrderMismatch = true; +- break; +- } +- } +-} +- +- + static bool + qemuProcessDomainMemoryDefNeedHugepagesPath(const virDomainMemoryDef *mem, + const long system_pagesize) +@@ -9091,8 +9069,6 @@ qemuProcessReconnect(void *opaque) + if (qemuProcessRefreshFdsetIndex(obj) < 0) + goto error; + +- qemuProcessReconnectCheckMemAliasOrderMismatch(obj); +- + if (qemuConnectAgent(driver, obj) < 0) + goto error; + +-- +2.39.1 + diff --git a/libvirt-qemu-alias-Remove-oldAlias-argument-of-qemuAssignDeviceMemoryAlias.patch b/libvirt-qemu-alias-Remove-oldAlias-argument-of-qemuAssignDeviceMemoryAlias.patch new file mode 100644 index 0000000..2bd9312 --- /dev/null +++ b/libvirt-qemu-alias-Remove-oldAlias-argument-of-qemuAssignDeviceMemoryAlias.patch @@ -0,0 +1,108 @@ +From 9271efe525e9cfaf1aad931ffccf61d6d17e5273 Mon Sep 17 00:00:00 2001 +Message-Id: <9271efe525e9cfaf1aad931ffccf61d6d17e5273@dist-git> +From: Peter Krempa +Date: Thu, 19 Jan 2023 15:16:58 +0100 +Subject: [PATCH] qemu: alias: Remove 'oldAlias' argument of + qemuAssignDeviceMemoryAlias + +All callers pass 'false' so we no longer need it. + +Signed-off-by: Peter Krempa +Reviewed-by: Martin Kletzander +(cherry picked from commit 6d3f0b11b2b056313b123510c96f2924689341f9) +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2158701 +--- + src/qemu/qemu_alias.c | 13 ++++--------- + src/qemu/qemu_alias.h | 3 +-- + src/qemu/qemu_hotplug.c | 2 +- + 3 files changed, 6 insertions(+), 12 deletions(-) + +diff --git a/src/qemu/qemu_alias.c b/src/qemu/qemu_alias.c +index ef8e87ab58..0f1310a0e5 100644 +--- a/src/qemu/qemu_alias.c ++++ b/src/qemu/qemu_alias.c +@@ -454,7 +454,6 @@ qemuAssignDeviceRNGAlias(virDomainDef *def, + static int + qemuDeviceMemoryGetAliasID(virDomainDef *def, + virDomainMemoryDef *mem, +- bool oldAlias, + const char *prefix) + { + size_t i; +@@ -462,8 +461,7 @@ qemuDeviceMemoryGetAliasID(virDomainDef *def, + + /* virtio-pmem and virtio-mem go onto PCI bus and thus DIMM address is not + * valid */ +- if (!oldAlias && +- mem->model != VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM && ++ if (mem->model != VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM && + mem->model != VIR_DOMAIN_MEMORY_MODEL_VIRTIO_MEM && + mem->model != VIR_DOMAIN_MEMORY_MODEL_SGX_EPC) + return mem->info.addr.dimm.slot; +@@ -482,8 +480,6 @@ qemuDeviceMemoryGetAliasID(virDomainDef *def, + * qemuAssignDeviceMemoryAlias: + * @def: domain definition. Necessary only if @oldAlias is true. + * @mem: memory device definition +- * @oldAlias: Generate the alias according to the order of the device in @def +- * rather than according to the slot number for legacy reasons. + * + * Generates alias for a memory device according to slot number if @oldAlias is + * false or according to order in @def->mems otherwise. +@@ -492,8 +488,7 @@ qemuDeviceMemoryGetAliasID(virDomainDef *def, + */ + int + qemuAssignDeviceMemoryAlias(virDomainDef *def, +- virDomainMemoryDef *mem, +- bool oldAlias) ++ virDomainMemoryDef *mem) + { + const char *prefix = NULL; + int idx = 0; +@@ -525,7 +520,7 @@ qemuAssignDeviceMemoryAlias(virDomainDef *def, + break; + } + +- idx = qemuDeviceMemoryGetAliasID(def, mem, oldAlias, prefix); ++ idx = qemuDeviceMemoryGetAliasID(def, mem, prefix); + mem->info.alias = g_strdup_printf("%s%d", prefix, idx); + + return 0; +@@ -685,7 +680,7 @@ qemuAssignDeviceAliases(virDomainDef *def) + qemuAssignDeviceTPMAlias(def->tpms[i], i); + } + for (i = 0; i < def->nmems; i++) { +- if (qemuAssignDeviceMemoryAlias(def, def->mems[i], false) < 0) ++ if (qemuAssignDeviceMemoryAlias(def, def->mems[i]) < 0) + return -1; + } + if (def->vsock) { +diff --git a/src/qemu/qemu_alias.h b/src/qemu/qemu_alias.h +index 6433ae4cec..af9c3f62d3 100644 +--- a/src/qemu/qemu_alias.h ++++ b/src/qemu/qemu_alias.h +@@ -55,8 +55,7 @@ void qemuAssignDeviceRNGAlias(virDomainDef *def, + virDomainRNGDef *rng); + + int qemuAssignDeviceMemoryAlias(virDomainDef *def, +- virDomainMemoryDef *mems, +- bool oldAlias); ++ virDomainMemoryDef *mems); + + void qemuAssignDeviceShmemAlias(virDomainDef *def, + virDomainShmemDef *shmem, +diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c +index 5840504d13..2df59873db 100644 +--- a/src/qemu/qemu_hotplug.c ++++ b/src/qemu/qemu_hotplug.c +@@ -2275,7 +2275,7 @@ qemuDomainAttachMemory(virQEMUDriver *driver, + goto cleanup; + releaseaddr = true; + +- if (qemuAssignDeviceMemoryAlias(vm->def, mem, false) < 0) ++ if (qemuAssignDeviceMemoryAlias(vm->def, mem) < 0) + goto cleanup; + + objalias = g_strdup_printf("mem%s", mem->info.alias); +-- +2.39.1 + diff --git a/libvirt-qemu-hotplug-Remove-legacy-quirk-for-dimm-address-generation.patch b/libvirt-qemu-hotplug-Remove-legacy-quirk-for-dimm-address-generation.patch new file mode 100644 index 0000000..da12b0d --- /dev/null +++ b/libvirt-qemu-hotplug-Remove-legacy-quirk-for-dimm-address-generation.patch @@ -0,0 +1,51 @@ +From b6eb914119af7e724cbee27951cfba0a6afb3b97 Mon Sep 17 00:00:00 2001 +Message-Id: +From: Peter Krempa +Date: Thu, 19 Jan 2023 15:06:11 +0100 +Subject: [PATCH] qemu: hotplug: Remove legacy quirk for 'dimm' address + generation + +Commit b7798a07f93 (in fall of 2016) changed the way we generate aliases +for 'dimm' memory devices as the alias itself is part of the migration +stream section naming and thus must be treated as ABI. + +The code added compatibility layer for VMs with memory hotplug started +with the old scheme to prevent from generating wrong aliases. The +compatibility layer broke though later when 'nvdimm' and 'pmem' devices +were introduced as it wrongly detected them as old configuration. + +Now rather than attempting to fix the legacy compat layer to treat other +devices properly we'll be better off simply removing it as it's +extremely unlikely that somebody has a VM started in 2016 running with +today's libvirt and attempts to hotplug more memory. + +This fixes a corner case when a user hot-adds a 'dimm' into a VM with a +'dimm' and a 'nvdimm' after restart of libvirtd and then attempts to +migrate the VM. + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2158701 +Signed-off-by: Peter Krempa +Reviewed-by: Martin Kletzander +(cherry picked from commit 50ce3463d514950350143f03e8421c8c31889c5d) +--- + src/qemu/qemu_hotplug.c | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c +index 026e1ee5ad..5840504d13 100644 +--- a/src/qemu/qemu_hotplug.c ++++ b/src/qemu/qemu_hotplug.c +@@ -2275,9 +2275,7 @@ qemuDomainAttachMemory(virQEMUDriver *driver, + goto cleanup; + releaseaddr = true; + +- /* in cases where we are using a VM with aliases generated according to the +- * index of the memory device we need to keep continue using that scheme */ +- if (qemuAssignDeviceMemoryAlias(vm->def, mem, priv->memAliasOrderMismatch) < 0) ++ if (qemuAssignDeviceMemoryAlias(vm->def, mem, false) < 0) + goto cleanup; + + objalias = g_strdup_printf("mem%s", mem->info.alias); +-- +2.39.1 + diff --git a/libvirt-qemu_interface-Fix-managed-no-case-when-creating-an-ethernet-interface.patch b/libvirt-qemu_interface-Fix-managed-no-case-when-creating-an-ethernet-interface.patch new file mode 100644 index 0000000..3814a58 --- /dev/null +++ b/libvirt-qemu_interface-Fix-managed-no-case-when-creating-an-ethernet-interface.patch @@ -0,0 +1,56 @@ +From 25de0ead0194159a6d9a769f34ec5b092e9b718c Mon Sep 17 00:00:00 2001 +Message-Id: <25de0ead0194159a6d9a769f34ec5b092e9b718c@dist-git> +From: Michal Privoznik +Date: Mon, 23 Jan 2023 11:42:18 +0100 +Subject: [PATCH] qemu_interface: Fix managed='no' case when creating an + ethernet interface + +In a recent commit of v9.0.0-rc1~192 I've tried to forbid case +where a TAP device already exists, but at the same time it's +managed by Libvirt ( ). NB, if @managed +attribute is missing then it's assumed to be managed by Libvirt. + +Anyway, I've mistakenly put setting of +VIR_NETDEV_TAP_CREATE_ALLOW_EXISTING flag into managed='yes' +branch instead of managed='no' branch in +qemuInterfaceEthernetConnect(). + +Move the setting of the flag into the correct branch. + +Fixes: a2ae3d299cf9c5ada8aa42ec4271748eb479dc27 +Signed-off-by: Michal Privoznik +Reviewed-by: Martin Kletzander +(cherry picked from commit d6a8b9eef70887e01fa5fd292580e14ca5eab08c) +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2144738 +Signed-off-by: Michal Privoznik +--- + src/qemu/qemu_interface.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/src/qemu/qemu_interface.c b/src/qemu/qemu_interface.c +index b6895cedde..ed2c209167 100644 +--- a/src/qemu/qemu_interface.c ++++ b/src/qemu/qemu_interface.c +@@ -443,6 +443,9 @@ qemuInterfaceEthernetConnect(virDomainDef *def, + _("target managed='no' but specified dev doesn't exist")); + goto cleanup; + } ++ ++ tap_create_flags |= VIR_NETDEV_TAP_CREATE_ALLOW_EXISTING; ++ + if (virNetDevMacVLanIsMacvtap(net->ifname)) { + auditdev = net->ifname; + if (virNetDevMacVLanTapOpen(net->ifname, tapfd, tapfdSize) < 0) +@@ -461,8 +464,6 @@ qemuInterfaceEthernetConnect(virDomainDef *def, + if (!net->ifname) + template_ifname = true; + +- tap_create_flags |= VIR_NETDEV_TAP_CREATE_ALLOW_EXISTING; +- + if (virNetDevTapCreate(&net->ifname, tunpath, tapfd, tapfdSize, + tap_create_flags) < 0) { + goto cleanup; +-- +2.39.1 + diff --git a/libvirt-rpc-Fix-error-message-in-virNetServerSetClientLimits.patch b/libvirt-rpc-Fix-error-message-in-virNetServerSetClientLimits.patch new file mode 100644 index 0000000..b146789 --- /dev/null +++ b/libvirt-rpc-Fix-error-message-in-virNetServerSetClientLimits.patch @@ -0,0 +1,43 @@ +From f26e30ecb3d0e25d5cf648755e2b4e1db0476b52 Mon Sep 17 00:00:00 2001 +Message-Id: +From: Martin Kletzander +Date: Tue, 24 Jan 2023 13:45:09 +0100 +Subject: [PATCH] rpc: Fix error message in virNetServerSetClientLimits +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Commit f007940cb25a tried to change the error message so that it is unified +later in 35afa1d2d6c1, but various rewrites missed this particular error message +which does not make sense. Fix it so that it is the same as the other two +messages checking the same thing in this file. + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2033879 + +Signed-off-by: Martin Kletzander +Reviewed-by: Ján Tomko +(cherry picked from commit 1e2605c934b80c3e9c30e929834d38fee86f184e) +Signed-off-by: Martin Kletzander +--- + src/rpc/virnetserver.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/src/rpc/virnetserver.c b/src/rpc/virnetserver.c +index bf0fda04ee..e97dfe8136 100644 +--- a/src/rpc/virnetserver.c ++++ b/src/rpc/virnetserver.c +@@ -1127,9 +1127,8 @@ virNetServerSetClientLimits(virNetServer *srv, + + if (max < max_unauth) { + virReportError(VIR_ERR_INVALID_ARG, "%s", +- _("The overall maximum number of clients waiting " +- "for authentication must not be less than the overall " +- "maximum number of clients")); ++ _("The overall maximum number of clients must not be less " ++ "than the number of clients waiting for authentication")); + return -1; + } + +-- +2.39.1 + diff --git a/libvirt-vircgroupv2-fix-cpu.weight-limits-check.patch b/libvirt-vircgroupv2-fix-cpu.weight-limits-check.patch new file mode 100644 index 0000000..8e1a60c --- /dev/null +++ b/libvirt-vircgroupv2-fix-cpu.weight-limits-check.patch @@ -0,0 +1,59 @@ +From 28bd414db666463dca0a26bbb969fd6bc784ec8e Mon Sep 17 00:00:00 2001 +Message-Id: <28bd414db666463dca0a26bbb969fd6bc784ec8e@dist-git> +From: Pavel Hrdina +Date: Tue, 17 Jan 2023 10:02:07 +0100 +Subject: [PATCH] vircgroupv2: fix cpu.weight limits check + +The cgroup v2 cpu.weight limits are different than cgroup v1 cpu.shares +limits. + +Signed-off-by: Pavel Hrdina +Reviewed-by: Martin Kletzander +(cherry picked from commit cf3414a85b8383d71d6ae2a53daf63c331cc2230) + +Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2037998 + +Signed-off-by: Pavel Hrdina +--- + src/util/vircgroup.h | 2 ++ + src/util/vircgroupv2.c | 8 ++++---- + 2 files changed, 6 insertions(+), 4 deletions(-) + +diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h +index 690f09465c..adf3850b22 100644 +--- a/src/util/vircgroup.h ++++ b/src/util/vircgroup.h +@@ -235,6 +235,8 @@ int virCgroupGetCpuShares(virCgroup *group, unsigned long long *shares); + /* Based on kernel code ((1ULL << MAX_BW_BITS) - 1) where MAX_BW_BITS is + * (64 - BW_SHIFT) and BW_SHIFT is 20 */ + #define VIR_CGROUP_CPU_QUOTA_MAX 17592186044415LL ++#define VIR_CGROUPV2_WEIGHT_MIN 1LL ++#define VIR_CGROUPV2_WEIGHT_MAX 10000LL + + int virCgroupSetCpuCfsPeriod(virCgroup *group, unsigned long long cfs_period); + int virCgroupGetCpuCfsPeriod(virCgroup *group, unsigned long long *cfs_period); +diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c +index b1f562aa52..219b9c7f21 100644 +--- a/src/util/vircgroupv2.c ++++ b/src/util/vircgroupv2.c +@@ -1499,13 +1499,13 @@ static int + virCgroupV2SetCpuShares(virCgroup *group, + unsigned long long shares) + { +- if (shares < VIR_CGROUP_CPU_SHARES_MIN || +- shares > VIR_CGROUP_CPU_SHARES_MAX) { ++ if (shares < VIR_CGROUPV2_WEIGHT_MIN || ++ shares > VIR_CGROUPV2_WEIGHT_MAX) { + virReportError(VIR_ERR_INVALID_ARG, + _("shares '%llu' must be in range [%llu, %llu]"), + shares, +- VIR_CGROUP_CPU_SHARES_MIN, +- VIR_CGROUP_CPU_SHARES_MAX); ++ VIR_CGROUPV2_WEIGHT_MIN, ++ VIR_CGROUPV2_WEIGHT_MAX); + return -1; + } + +-- +2.39.1 + diff --git a/libvirt.spec b/libvirt.spec index 46320de..d710581 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -229,7 +229,7 @@ Summary: Library providing a simple virtualization API Name: libvirt Version: 9.0.0 -Release: 1%{?dist}%{?extra_release} +Release: 2%{?dist}%{?extra_release} License: LGPLv2+ URL: https://libvirt.org/ @@ -238,6 +238,16 @@ URL: https://libvirt.org/ %endif Source: https://libvirt.org/sources/%{?mainturl}libvirt-%{version}.tar.xz Source1: symlinks +Patch1: libvirt-vircgroupv2-fix-cpu.weight-limits-check.patch +Patch2: libvirt-domain_validate-drop-cpu.shares-cgroup-check.patch +Patch3: libvirt-docs-document-correct-cpu-shares-limits-with-both-cgroups-v1-and-v2.patch +Patch4: libvirt-qemu_interface-Fix-managed-no-case-when-creating-an-ethernet-interface.patch +Patch5: libvirt-conf-clarify-some-external-TPM-error-messages.patch +Patch6: libvirt-qemu-hotplug-Remove-legacy-quirk-for-dimm-address-generation.patch +Patch7: libvirt-qemu-alias-Remove-oldAlias-argument-of-qemuAssignDeviceMemoryAlias.patch +Patch8: libvirt-qemu-Remove-memAliasOrderMismatch-field-from-VM-private-data.patch +Patch9: libvirt-rpc-Fix-error-message-in-virNetServerSetClientLimits.patch + Requires: libvirt-daemon = %{version}-%{release} Requires: libvirt-daemon-config-network = %{version}-%{release} @@ -2327,6 +2337,17 @@ exit 0 %endif %changelog +* Wed Jan 25 2023 Jiri Denemark - 9.0.0-2 +- vircgroupv2: fix cpu.weight limits check (rhbz#2037998) +- domain_validate: drop cpu.shares cgroup check (rhbz#2037998) +- docs: document correct cpu shares limits with both cgroups v1 and v2 (rhbz#2037998) +- qemu_interface: Fix managed='no' case when creating an ethernet interface (rhbz#2144738) +- conf: clarify some external TPM error messages (rhbz#2063723) +- qemu: hotplug: Remove legacy quirk for 'dimm' address generation (rhbz#2158701) +- qemu: alias: Remove 'oldAlias' argument of qemuAssignDeviceMemoryAlias (rhbz#2158701) +- qemu: Remove 'memAliasOrderMismatch' field from VM private data (rhbz#2158701) +- rpc: Fix error message in virNetServerSetClientLimits (rhbz#2033879) + * Mon Jan 16 2023 Jiri Denemark - 9.0.0-1 - Rebased to libvirt-9.0.0 (rhbz#2124466) - The rebase also fixes the following bugs: