From 91cf6052ded0db1d322ce4e06921fefdca94528a Mon Sep 17 00:00:00 2001 From: Michal Privoznik Date: Tue, 3 Mar 2015 11:51:19 +0100 Subject: [PATCH] qemuProcessReconnect: Fill in pid file path https://bugzilla.redhat.com/show_bug.cgi?id=1197600 So, libvirt uses pid file to track pid of started qemus. Whenever a domain is started, its pid is put into corresponding pid file. The pid file path is generated based on domain name and stored into domain object internals. However, it's not stored in the status XML and therefore lost on daemon restarts. Hence, later, when domain is being shut down, the daemon does not know which pid file to unlink, and the correct pid file is left behind. To avoid this, lets generate the pid file path again in qemuProcessReconnect(). Reported-by: Luyao Huang Signed-off-by: Michal Privoznik (cherry picked from commit 63889e0c775010d8d70b71d25340bab995aa83ce) --- src/qemu/qemu_process.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 846eba99e2..cd71741ab1 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3762,6 +3762,11 @@ qemuProcessReconnect(void *opaque) cfg = virQEMUDriverGetConfig(driver); priv = obj->privateData; + /* XXX If we ever gonna change pid file pattern, come up with + * some intelligence here to deal with old paths. */ + if (!(priv->pidfile = virPidFileBuildPath(cfg->stateDir, obj->def->name))) + goto killvm; + if (qemuDomainObjBeginJob(driver, obj, QEMU_JOB_MODIFY) < 0) goto killvm;