diff --git a/libvirt-0.7.0-chown-kernel-initrd-before-spawning-qemu.patch b/libvirt-0.7.0-chown-kernel-initrd-before-spawning-qemu.patch new file mode 100644 index 0000000..203f201 --- /dev/null +++ b/libvirt-0.7.0-chown-kernel-initrd-before-spawning-qemu.patch @@ -0,0 +1,73 @@ +From: Mark McLoughlin +Subject: [PATCH] chown kernel/initrd before spawning qemu + +If we're running qemu unprivileged, we need to chown any supplied kernel +or initrd before spawning it. + +* src/qemu_driver.c: rename qemuDomainSetDiskOwnership() to + qemuDomainSetFileOwnership(), pass it a path string instead of a disk + definition and use it for chowning the kernel/initrd in + qemuDomainSetAllDeviceOwnership() +--- + src/qemu_driver.c | 20 ++++++++++++-------- + 1 files changed, 12 insertions(+), 8 deletions(-) + +diff --git a/src/qemu_driver.c b/src/qemu_driver.c +index 412b68d..bd58435 100644 +--- a/src/qemu_driver.c ++++ b/src/qemu_driver.c +@@ -1684,18 +1684,18 @@ static int qemuDomainSetHostdevOwnership(virConnectPtr conn, + + } + +-static int qemuDomainSetDiskOwnership(virConnectPtr conn, +- virDomainDiskDefPtr def, ++static int qemuDomainSetFileOwnership(virConnectPtr conn, ++ const char *path, + uid_t uid, gid_t gid) + { + +- if (!def->src) ++ if (!path) + return 0; + +- VIR_DEBUG("Setting ownership on %s to %d:%d", def->src, uid, gid); +- if (chown(def->src, uid, gid) < 0) { ++ VIR_DEBUG("Setting ownership on %s to %d:%d", path, uid, gid); ++ if (chown(path, uid, gid) < 0) { + virReportSystemError(conn, errno, _("cannot set ownership on %s"), +- def->src); ++ path); + return -1; + } + return 0; +@@ -1725,7 +1725,7 @@ static int qemuDomainSetDeviceOwnership(virConnectPtr conn, + (def->data.disk->readonly || def->data.disk->shared)) + return 0; + +- return qemuDomainSetDiskOwnership(conn, def->data.disk, uid, gid); ++ return qemuDomainSetFileOwnership(conn, def->data.disk->src, uid, gid); + + case VIR_DOMAIN_DEVICE_HOSTDEV: + return qemuDomainSetHostdevOwnership(conn, def->data.hostdev, uid, gid); +@@ -1753,12 +1753,16 @@ static int qemuDomainSetAllDeviceOwnership(virConnectPtr conn, + uid = restore ? 0 : driver->user; + gid = restore ? 0 : driver->group; + ++ if (qemuDomainSetFileOwnership(conn, def->os.kernel, uid, gid) < 0 || ++ qemuDomainSetFileOwnership(conn, def->os.initrd, uid, gid) < 0) ++ return -1; ++ + for (i = 0 ; i < def->ndisks ; i++) { + if (restore && + (def->disks[i]->readonly || def->disks[i]->shared)) + continue; + +- if (qemuDomainSetDiskOwnership(conn, def->disks[i], uid, gid) < 0) ++ if (qemuDomainSetFileOwnership(conn, def->disks[i]->src, uid, gid) < 0) + return -1; + } + +-- +1.6.2.5 + diff --git a/libvirt.spec b/libvirt.spec index c93cd32..7a8da9b 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -78,11 +78,14 @@ Summary: Library providing a simple API virtualization Name: libvirt Version: 0.7.0 -Release: 1%{?dist}%{?extra_release} +Release: 2%{?dist}%{?extra_release} License: LGPLv2+ Group: Development/Libraries Source: libvirt-%{version}.tar.gz +# Make sure qemu can access kernel/initrd (bug #516034) +Patch01: libvirt-0.7.0-chown-kernel-initrd-before-spawning-qemu.patch + # Temporary hack till PulseAudio autostart problems are sorted # out when SELinux enforcing (bz 486112) Patch200: libvirt-0.6.4-svirt-sound.patch @@ -252,6 +255,8 @@ of recent versions of Linux (and other OSes). %prep %setup -q +%patch01 -p1 + %patch200 -p0 %build @@ -497,7 +502,7 @@ fi %dir %{_localstatedir}/lib/libvirt/ %dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/images/ -%dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/boot/ +%dir %attr(0711, root, root) %{_localstatedir}/lib/libvirt/boot/ %dir %attr(0700, root, root) %{_localstatedir}/cache/libvirt/ %if %{with_qemu} @@ -612,7 +617,11 @@ fi %endif %changelog -* Wed Aug 5 2009 Daniel Veillard - 0.7.0-1.fc12 +* Thu Aug 6 2009 Mark McLoughlin - 0.7.0-2 +- Make sure qemu can access kernel/initrd (bug #516034) +- Set perms on /var/lib/libvirt/boot to 0711 (bug #516034) + +* Wed Aug 5 2009 Daniel Veillard - 0.7.0-1 - Upstream release of 0.7.0 - ESX, VBox3, Power Hypervisor drivers - new net filesystem glusterfs