diff --git a/libvirt-qemu-pre-create-the-dbus-directory-in-qemuStateIniti.patch b/libvirt-qemu-pre-create-the-dbus-directory-in-qemuStateIniti.patch new file mode 100644 index 0000000000000000000000000000000000000000..7c2dae6a4b937a3e4073c3e573ee8308c3dc3e92 --- /dev/null +++ b/libvirt-qemu-pre-create-the-dbus-directory-in-qemuStateIniti.patch @@ -0,0 +1,92 @@ +From 3ee423c363b69588e82e522ad1634193284c09a7 Mon Sep 17 00:00:00 2001 +From: Bihong Yu +Date: Tue, 14 Jul 2020 15:44:05 +0800 +Subject: [PATCH] qemu: pre-create the dbus directory in qemuStateInitialize +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +There are races condiction to make '/run/libvirt/qemu/dbus' directory in +virDirCreateNoFork() while concurrent start VMs, and get "failed to create +directory '/run/libvirt/qemu/dbus': File exists" error message. pre-create the +dbus directory in qemuStateInitialize. + +Signed-off-by: Bihong Yu +Reviewed-by: Ján Tomko +Signed-off-by: Ján Tomko +--- + src/qemu/qemu_dbus.c | 10 ---------- + src/qemu/qemu_dbus.h | 2 -- + src/qemu/qemu_driver.c | 7 +++++++ + src/qemu/qemu_process.c | 3 --- + 4 files changed, 7 insertions(+), 15 deletions(-) + +diff --git a/src/qemu/qemu_dbus.c b/src/qemu/qemu_dbus.c +index 51f6c94e3e..81042876fe 100644 +--- a/src/qemu/qemu_dbus.c ++++ b/src/qemu/qemu_dbus.c +@@ -33,16 +33,6 @@ + VIR_LOG_INIT("qemu.dbus"); + + +-int +-qemuDBusPrepareHost(virQEMUDriverPtr driver) +-{ +- g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); +- +- return virDirCreate(cfg->dbusStateDir, 0770, cfg->user, cfg->group, +- VIR_DIR_CREATE_ALLOW_EXIST); +-} +- +- + static char * + qemuDBusCreatePidFilename(virQEMUDriverConfigPtr cfg, + const char *shortName) +diff --git a/src/qemu/qemu_dbus.h b/src/qemu/qemu_dbus.h +index 474eb1058b..3c2145a223 100644 +--- a/src/qemu/qemu_dbus.h ++++ b/src/qemu/qemu_dbus.h +@@ -21,8 +21,6 @@ + #include "qemu_conf.h" + #include "qemu_domain.h" + +-int qemuDBusPrepareHost(virQEMUDriverPtr driver); +- + char *qemuDBusGetAddress(virQEMUDriverPtr driver, + virDomainObjPtr vm); + +diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c +index 8e81c30a93..53980d4d78 100644 +--- a/src/qemu/qemu_driver.c ++++ b/src/qemu/qemu_driver.c +@@ -743,6 +743,13 @@ qemuStateInitialize(bool privileged, + goto error; + } + ++ if (virDirCreate(cfg->dbusStateDir, 0770, cfg->user, cfg->group, ++ VIR_DIR_CREATE_ALLOW_EXIST) < 0) { ++ virReportSystemError(errno, _("Failed to create dbus state dir %s"), ++ cfg->dbusStateDir); ++ goto error; ++ } ++ + if ((qemu_driver->lockFD = + virPidFileAcquire(cfg->stateDir, "driver", false, getpid())) < 0) + goto error; +diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c +index e8b15ee3ca..1006f41614 100644 +--- a/src/qemu/qemu_process.c ++++ b/src/qemu/qemu_process.c +@@ -6466,9 +6466,6 @@ qemuProcessPrepareHost(virQEMUDriverPtr driver, + qemuDomainObjPrivatePtr priv = vm->privateData; + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); + +- if (qemuDBusPrepareHost(driver) < 0) +- return -1; +- + if (qemuPrepareNVRAM(cfg, vm) < 0) + return -1; + +-- +2.25.0.windows.1 + diff --git a/libvirt.spec b/libvirt.spec index 887a5117e04d14d51f37bfc554aa370067ddd201..8feb4efc743256c2b8cef2e5f2a00f5a354af83f 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -99,7 +99,7 @@ Summary: Library providing a simple virtualization API Name: libvirt Version: 6.2.0 -Release: 10 +Release: 11 License: LGPLv2+ URL: https://libvirt.org/ @@ -149,6 +149,7 @@ Patch0038: libvirt-conf-Increase-cpuset-length-limit-for-CPU-pinning.patch Patch0039: libvirt-virQEMUDriverConfigNew-Add-slash-to-cfg-defaultTLSx5.patch Patch0040: libvirt-qemuDomainSetNumaParamsLive-set-nodeset-for-root-cgr.patch Patch0041: libvirt-qemu-do-not-add-model-when-actual-iface-type-is-host.patch +Patch0042: libvirt-qemu-pre-create-the-dbus-directory-in-qemuStateIniti.patch Requires: libvirt-daemon = %{version}-%{release} Requires: libvirt-daemon-config-network = %{version}-%{release} @@ -1881,6 +1882,8 @@ exit 0 %changelog +* Tue Sep 22 2020 Zeyu Jin - 6.2.0-11 +- bugfix: backport an upstream patch to fix '/run/libvirt/qemu/dbus' racing bug. * Tue Sep 22 2020 Jin Yan - 6.2.0-10 - bugfix: cherry-pick some bugfix patches from opensource community * Wed Aug 5 2020 AlexChen - 6.2.0-9