* Thu Jul 30 2009 Mark McLoughlin <markmc@redhat.com> - 0.7.0-0.8.gite195b43
- Add patch from upstream to fix qemu pidfile perms problem
This commit is contained in:
parent
7f58f3aa54
commit
b20a5c6d3b
71
libvirt-fix-permissions-problem-starting-qemu.patch
Normal file
71
libvirt-fix-permissions-problem-starting-qemu.patch
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
From: "Daniel P. Berrange" <berrange@redhat.com>
|
||||||
|
Subject: PATCH: Fix permissions problem starting QEMU
|
||||||
|
|
||||||
|
There is a minor bug when running QEMU non-root, and having
|
||||||
|
capng enabled. libvirt is unable to write the PID file in
|
||||||
|
/var/run/libvirt/qemu, since its now owned by 'qemu', but
|
||||||
|
libvirtd has dropped all capabilties at this point. The fix
|
||||||
|
is to delay dropping capabilities until after the PID file
|
||||||
|
has been created. We should also be sure to kill the child
|
||||||
|
if writing the PID file fails
|
||||||
|
|
||||||
|
* src/util.c: Don't drop capabilities until after the PID file has
|
||||||
|
been written. Kill off child if writing the PID file fails
|
||||||
|
|
||||||
|
* src/qemu_driver.c: Remove bogus trailing '/' in state dir
|
||||||
|
|
||||||
|
diff --git a/src/qemu_driver.c b/src/qemu_driver.c
|
||||||
|
index 9fb8506..26897d3 100644
|
||||||
|
--- a/src/qemu_driver.c
|
||||||
|
+++ b/src/qemu_driver.c
|
||||||
|
@@ -468,7 +468,7 @@ qemudStartup(int privileged) {
|
||||||
|
goto out_of_memory;
|
||||||
|
|
||||||
|
if (virAsprintf(&qemu_driver->stateDir,
|
||||||
|
- "%s/run/libvirt/qemu/", LOCAL_STATE_DIR) == -1)
|
||||||
|
+ "%s/run/libvirt/qemu", LOCAL_STATE_DIR) == -1)
|
||||||
|
goto out_of_memory;
|
||||||
|
} else {
|
||||||
|
uid_t uid = geteuid();
|
||||||
|
diff --git a/src/util.c b/src/util.c
|
||||||
|
index ee64b28..39aae24 100644
|
||||||
|
--- a/src/util.c
|
||||||
|
+++ b/src/util.c
|
||||||
|
@@ -513,12 +513,6 @@ __virExec(virConnectPtr conn,
|
||||||
|
if ((hook)(data) != 0)
|
||||||
|
_exit(1);
|
||||||
|
|
||||||
|
- /* The hook above may need todo something privileged, so
|
||||||
|
- * we delay clearing capabilities until now */
|
||||||
|
- if ((flags & VIR_EXEC_CLEAR_CAPS) &&
|
||||||
|
- virClearCapabilities() < 0)
|
||||||
|
- _exit(1);
|
||||||
|
-
|
||||||
|
/* Daemonize as late as possible, so the parent process can detect
|
||||||
|
* the above errors with wait* */
|
||||||
|
if (flags & VIR_EXEC_DAEMON) {
|
||||||
|
@@ -543,6 +537,9 @@ __virExec(virConnectPtr conn,
|
||||||
|
|
||||||
|
if (pid > 0) {
|
||||||
|
if (pidfile && virFileWritePidPath(pidfile,pid)) {
|
||||||
|
+ kill(pid, SIGTERM);
|
||||||
|
+ usleep(500*1000);
|
||||||
|
+ kill(pid, SIGTERM);
|
||||||
|
virReportSystemError(conn, errno,
|
||||||
|
"%s", _("could not write pidfile"));
|
||||||
|
_exit(1);
|
||||||
|
@@ -551,6 +548,12 @@ __virExec(virConnectPtr conn,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* The steps above may need todo something privileged, so
|
||||||
|
+ * we delay clearing capabilities until the last minute */
|
||||||
|
+ if ((flags & VIR_EXEC_CLEAR_CAPS) &&
|
||||||
|
+ virClearCapabilities() < 0)
|
||||||
|
+ _exit(1);
|
||||||
|
+
|
||||||
|
if (envp)
|
||||||
|
execve(argv[0], (char **) argv, (char**)envp);
|
||||||
|
else
|
||||||
|
|
||||||
|
|
10
libvirt.spec
10
libvirt.spec
@ -78,11 +78,14 @@
|
|||||||
Summary: Library providing a simple API virtualization
|
Summary: Library providing a simple API virtualization
|
||||||
Name: libvirt
|
Name: libvirt
|
||||||
Version: 0.7.0
|
Version: 0.7.0
|
||||||
Release: 0.7.gite195b43%{?dist}%{?extra_release}
|
Release: 0.8.gite195b43%{?dist}%{?extra_release}
|
||||||
License: LGPLv2+
|
License: LGPLv2+
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
Source: libvirt-0.7.0-0.6.gite195b43.tar.gz
|
Source: libvirt-0.7.0-0.6.gite195b43.tar.gz
|
||||||
|
|
||||||
|
# Should be in 0.7.0
|
||||||
|
Patch01: libvirt-fix-permissions-problem-starting-qemu.patch
|
||||||
|
|
||||||
# Temporary hack till PulseAudio autostart problems are sorted
|
# Temporary hack till PulseAudio autostart problems are sorted
|
||||||
# out when SELinux enforcing (bz 486112)
|
# out when SELinux enforcing (bz 486112)
|
||||||
Patch200: libvirt-0.6.4-svirt-sound.patch
|
Patch200: libvirt-0.6.4-svirt-sound.patch
|
||||||
@ -252,6 +255,8 @@ of recent versions of Linux (and other OSes).
|
|||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
|
|
||||||
|
%patch01 -p1
|
||||||
|
|
||||||
%patch200 -p0
|
%patch200 -p0
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@ -612,6 +617,9 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jul 30 2009 Mark McLoughlin <markmc@redhat.com> - 0.7.0-0.8.gite195b43
|
||||||
|
- Add patch from upstream to fix qemu pidfile perms problem
|
||||||
|
|
||||||
* Thu Jul 30 2009 Daniel P. Berrange <berrange@redhat.com> - 0.7.0-0.7.gite195b43
|
* Thu Jul 30 2009 Daniel P. Berrange <berrange@redhat.com> - 0.7.0-0.7.gite195b43
|
||||||
- Create qemu/kvm user & group to fix upgrades
|
- Create qemu/kvm user & group to fix upgrades
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user