Compare commits
139 Commits
FC-5-split
...
libvirt-0_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c6d11b43c9 | ||
|
|
83091ff0dd | ||
|
|
4465a63872 | ||
|
|
3f397d9786 | ||
|
|
750aec5507 | ||
|
|
d7c1d3bbc0 | ||
|
|
fa0f21c263 | ||
|
|
afdaf5d354 | ||
|
|
26bba5aea9 | ||
|
|
1a4185bdcc | ||
|
|
6a73119e65 | ||
|
|
1e2f9fce0a | ||
|
|
f5edf79c95 | ||
|
|
b59e64bf44 | ||
|
|
a09fc2658a | ||
|
|
a008fcf27e | ||
|
|
511f6cd625 | ||
|
|
48b90fefc1 | ||
|
|
bc4bbabdf6 | ||
|
|
905627c8fd | ||
|
|
a16d752c10 | ||
|
|
29b1292019 | ||
|
|
f3546be64b | ||
|
|
fb9044931e | ||
|
|
03c5fec4d2 | ||
|
|
ce373a25b6 | ||
|
|
996d0e4709 | ||
|
|
8c01426c44 | ||
|
|
e859f7e59e | ||
|
|
25ea2f59bd | ||
|
|
c80b7f0d5a | ||
|
|
958f1c3dff | ||
|
|
4a8ca1017f | ||
|
|
1e122ee5dc | ||
|
|
6a6307bcdc | ||
|
|
6e8332946a | ||
|
|
982683e56f | ||
|
|
7244d1a339 | ||
|
|
2a3935580c | ||
|
|
28f7f11450 | ||
|
|
ca07bc4597 | ||
|
|
8e23194a2b | ||
|
|
fe09090e2d | ||
|
|
b5868cf8cf | ||
|
|
f294b40ba5 | ||
|
|
c0c1a7bb79 | ||
|
|
1b864048bd | ||
|
|
072c9c45ab | ||
|
|
af111679c3 | ||
|
|
dd9f21eaa2 | ||
|
|
f0e356df98 | ||
|
|
140bcf9ffc | ||
|
|
af69660412 | ||
|
|
6dc94c6252 | ||
|
|
eb34165670 | ||
|
|
7ce08f2148 | ||
|
|
049a8c79d9 | ||
|
|
f7a6d90012 | ||
|
|
67a2f29a89 | ||
|
|
82422fa1ff | ||
|
|
a73cf1d010 | ||
|
|
481419ebb6 | ||
|
|
1e65165c3a | ||
|
|
bca27d9111 | ||
|
|
08b9144b41 | ||
|
|
2063007248 | ||
|
|
81e46cb6da | ||
|
|
263e2f2021 | ||
|
|
2b9efc3de2 | ||
|
|
69f6239766 | ||
|
|
bf744f9872 | ||
|
|
45b0b2bfa6 | ||
|
|
f29ea218b7 | ||
|
|
7d193b7810 | ||
|
|
3182a4df5a | ||
|
|
4f667910e9 | ||
|
|
b395a39f7b | ||
|
|
fdd7e87fe3 | ||
|
|
f06c387ab5 | ||
|
|
5ad8bc8190 | ||
|
|
31802de821 | ||
|
|
cc39758e17 | ||
|
|
55fabd69c0 | ||
|
|
b2a1a0e9ba | ||
|
|
cbe377ed29 | ||
|
|
06a21e388f | ||
|
|
d1a886ab31 | ||
|
|
c70baa5133 | ||
|
|
52b4d91272 | ||
|
|
338630edc8 | ||
|
|
a05e64b718 | ||
|
|
c003690dfc | ||
|
|
2cac8ea133 | ||
|
|
deefad73a9 | ||
|
|
f6cef943a9 | ||
|
|
7a6f0752c1 | ||
|
|
36d558635e | ||
|
|
98bceee6b1 | ||
|
|
4e70e5049f | ||
|
|
e66ceb7f97 | ||
|
|
23d5b99123 | ||
|
|
df8a62cdc8 | ||
|
|
8e36286f00 | ||
|
|
cd0f44cfff | ||
|
|
dcd808aefc | ||
|
|
8713d4b7ef | ||
|
|
68efefa919 | ||
|
|
1c5afbb774 | ||
|
|
e61694fd1d | ||
|
|
608f915ea7 | ||
|
|
b28edd6eab | ||
|
|
327fe785ba | ||
|
|
5c1d884231 | ||
|
|
54c7c9997c | ||
|
|
dec47cc4eb | ||
|
|
ecaf0eb615 | ||
|
|
ea6b32b5e4 | ||
|
|
313e00f3ac | ||
|
|
b3a53e18a9 | ||
|
|
24467d1235 | ||
|
|
fdaa69f5e3 | ||
|
|
cf2cd869d9 | ||
|
|
f2572ab2b4 | ||
|
|
90a17a6e65 | ||
|
|
9f2e4f2b21 | ||
|
|
bc485ef21f | ||
|
|
0d3a7da407 | ||
|
|
f68d725fc4 | ||
|
|
044e9b5c7b | ||
|
|
96a9b8bc2e | ||
|
|
66a051f485 | ||
|
|
609ab7cda8 | ||
|
|
0caeb23111 | ||
|
|
7599107322 | ||
|
|
861e11f3e4 | ||
|
|
2ea97c32dc | ||
|
|
cb54686f58 | ||
|
|
bd474aff47 | ||
|
|
d55c7f267b |
13
.cvsignore
13
.cvsignore
@@ -1,4 +1,9 @@
|
|||||||
libvirt-0.0.3.tar.gz
|
.build*.log
|
||||||
libvirt-0.0.4.tar.gz
|
*.rpm
|
||||||
libvirt-0.0.5.tar.gz
|
i686
|
||||||
libvirt-0.0.6.tar.gz
|
x86_64
|
||||||
|
libvirt-*.tar.gz
|
||||||
|
libvirt-0.6.0.tar.gz
|
||||||
|
libvirt-0.6.1.tar.gz
|
||||||
|
libvirt-0.6.2.tar.gz
|
||||||
|
libvirt-0.6.3.tar.gz
|
||||||
|
|||||||
17
Makefile
17
Makefile
@@ -3,4 +3,19 @@
|
|||||||
NAME := libvirt
|
NAME := libvirt
|
||||||
SPECFILE = $(firstword $(wildcard *.spec))
|
SPECFILE = $(firstword $(wildcard *.spec))
|
||||||
|
|
||||||
include ../common/Makefile.common
|
define find-makefile-common
|
||||||
|
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
|
||||||
|
endef
|
||||||
|
|
||||||
|
MAKEFILE_COMMON := $(shell $(find-makefile-common))
|
||||||
|
|
||||||
|
ifeq ($(MAKEFILE_COMMON),)
|
||||||
|
# attempt a checkout
|
||||||
|
define checkout-makefile-common
|
||||||
|
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
|
||||||
|
endef
|
||||||
|
|
||||||
|
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(MAKEFILE_COMMON)
|
||||||
|
|||||||
13
libvirt-0.6.2-fix-nosource-label.patch
Normal file
13
libvirt-0.6.2-fix-nosource-label.patch
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
diff -rup libvirt-0.6.2/src/security_selinux.c new/src/security_selinux.c
|
||||||
|
--- libvirt-0.6.2/src/security_selinux.c 2009-05-10 22:04:25.000000000 -0400
|
||||||
|
+++ new/src/security_selinux.c 2009-05-10 22:06:09.000000000 -0400
|
||||||
|
@@ -338,6 +338,9 @@ SELinuxSetSecurityImageLabel(virConnectP
|
||||||
|
{
|
||||||
|
const virSecurityLabelDefPtr secdef = &vm->def->seclabel;
|
||||||
|
|
||||||
|
+ if (!disk->src)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
if (disk->shared) {
|
||||||
|
return SELinuxSetFilecon(conn, disk->src, default_image_context);
|
||||||
|
} else if (disk->readonly) {
|
||||||
45
libvirt-0.6.3-enable-qemu-0-10-migration.patch
Normal file
45
libvirt-0.6.3-enable-qemu-0-10-migration.patch
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
From: "Daniel P. Berrange" <berrange@redhat.com>
|
||||||
|
To: libvir-list@redhat.com
|
||||||
|
Date: Thu, 30 Apr 2009 15:09:05 +0100
|
||||||
|
Subject: [libvirt] PATCH: Enable migration with QEMU >= 0.10.0
|
||||||
|
|
||||||
|
The KVM migration code was added to QEMU for the 0.10.0 release, so we
|
||||||
|
should enable this in libvirt now.
|
||||||
|
|
||||||
|
Daniel
|
||||||
|
|
||||||
|
diff -r be7993675e07 src/qemu_conf.c
|
||||||
|
--- a/src/qemu_conf.c Thu Apr 30 14:49:27 2009 +0100
|
||||||
|
+++ b/src/qemu_conf.c Thu Apr 30 15:08:45 2009 +0100
|
||||||
|
@@ -473,16 +473,13 @@ int qemudExtractVersionInfo(const char *
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Handling of -incoming arg with varying features
|
||||||
|
- * -incoming tcp (kvm >= 79)
|
||||||
|
- * -incoming exec (kvm >= 80)
|
||||||
|
+ * -incoming tcp (kvm >= 79, qemu >= 0.10.0)
|
||||||
|
+ * -incoming exec (kvm >= 80, qemu >= 0.10.0)
|
||||||
|
* -incoming stdio (all earlier kvm)
|
||||||
|
*
|
||||||
|
* NB, there was a pre-kvm-79 'tcp' support, but it
|
||||||
|
* was broken, because it blocked the monitor console
|
||||||
|
* while waiting for data, so pretend it doesn't exist
|
||||||
|
- *
|
||||||
|
- * XXX when next QEMU release after 0.9.1 arrives,
|
||||||
|
- * we'll need to add MIGRATE_QEMU_TCP/EXEC here too
|
||||||
|
*/
|
||||||
|
if (kvm_version >= 79) {
|
||||||
|
flags |= QEMUD_CMD_FLAG_MIGRATE_QEMU_TCP;
|
||||||
|
@@ -490,6 +487,9 @@ int qemudExtractVersionInfo(const char *
|
||||||
|
flags |= QEMUD_CMD_FLAG_MIGRATE_QEMU_EXEC;
|
||||||
|
} else if (kvm_version > 0) {
|
||||||
|
flags |= QEMUD_CMD_FLAG_MIGRATE_KVM_STDIO;
|
||||||
|
+ } else if (version >= 10000) {
|
||||||
|
+ flags |= QEMUD_CMD_FLAG_MIGRATE_QEMU_TCP;
|
||||||
|
+ flags |= QEMUD_CMD_FLAG_MIGRATE_QEMU_EXEC;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (retversion)
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
82
libvirt-0.6.3-fix-qemu-argv-detection-with-kvm-85.patch
Normal file
82
libvirt-0.6.3-fix-qemu-argv-detection-with-kvm-85.patch
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
From 2b3fcdc378e7bec5c1a78b81632756e92930fd24 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
Date: Mon, 11 May 2009 15:14:24 +0000
|
||||||
|
Subject: [PATCH 1/1] Fix QEMU ARGV detection with kvm >= 85
|
||||||
|
|
||||||
|
---
|
||||||
|
src/qemu_conf.c | 18 ++++++++++++++----
|
||||||
|
src/qemu_driver.c | 12 ++----------
|
||||||
|
2 files changed, 16 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu_conf.c b/src/qemu_conf.c
|
||||||
|
index 9cb71eb..a57d3ab 100644
|
||||||
|
--- a/src/qemu_conf.c
|
||||||
|
+++ b/src/qemu_conf.c
|
||||||
|
@@ -431,18 +431,28 @@ int qemudExtractVersionInfo(const char *qemu,
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
char *help = NULL;
|
||||||
|
- enum { MAX_HELP_OUTPUT_SIZE = 8192 };
|
||||||
|
+ enum { MAX_HELP_OUTPUT_SIZE = 1024*64 };
|
||||||
|
int len = virFileReadLimFD(newstdout, MAX_HELP_OUTPUT_SIZE, &help);
|
||||||
|
- if (len < 0)
|
||||||
|
+ if (len < 0) {
|
||||||
|
+ virReportSystemError(NULL, errno, "%s",
|
||||||
|
+ _("Unable to read QEMU help output"));
|
||||||
|
goto cleanup2;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if (sscanf(help, "QEMU PC emulator version %u.%u.%u (kvm-%u)",
|
||||||
|
&major, &minor, µ, &kvm_version) != 4)
|
||||||
|
kvm_version = 0;
|
||||||
|
|
||||||
|
- if (!kvm_version && sscanf(help, "QEMU PC emulator version %u.%u.%u",
|
||||||
|
- &major, &minor, µ) != 3)
|
||||||
|
+ if (!kvm_version &&
|
||||||
|
+ sscanf(help, "QEMU PC emulator version %u.%u.%u",
|
||||||
|
+ &major, &minor, µ) != 3) {
|
||||||
|
+ char *eol = strchr(help, '\n');
|
||||||
|
+ if (eol) *eol = '\0';
|
||||||
|
+ qemudReportError(NULL, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
|
||||||
|
+ _("cannot parse QEMU version number in '%s'"),
|
||||||
|
+ help);
|
||||||
|
goto cleanup2;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
version = (major * 1000 * 1000) + (minor * 1000) + micro;
|
||||||
|
|
||||||
|
diff --git a/src/qemu_driver.c b/src/qemu_driver.c
|
||||||
|
index 30642d5..bd60b29 100644
|
||||||
|
--- a/src/qemu_driver.c
|
||||||
|
+++ b/src/qemu_driver.c
|
||||||
|
@@ -1391,12 +1391,8 @@ static int qemudStartVMDaemon(virConnectPtr conn,
|
||||||
|
|
||||||
|
if (qemudExtractVersionInfo(emulator,
|
||||||
|
NULL,
|
||||||
|
- &qemuCmdFlags) < 0) {
|
||||||
|
- qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
|
||||||
|
- _("Cannot determine QEMU argv syntax %s"),
|
||||||
|
- emulator);
|
||||||
|
+ &qemuCmdFlags) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
- }
|
||||||
|
|
||||||
|
if (qemuPrepareHostDevices(conn, vm->def) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
@@ -3715,12 +3711,8 @@ static int qemudDomainChangeEjectableMedia(virConnectPtr conn,
|
||||||
|
|
||||||
|
if (qemudExtractVersionInfo(vm->def->emulator,
|
||||||
|
NULL,
|
||||||
|
- &qemuCmdFlags) < 0) {
|
||||||
|
- qemudReportError(conn, dom, NULL, VIR_ERR_INTERNAL_ERROR,
|
||||||
|
- _("Cannot determine QEMU argv syntax %s"),
|
||||||
|
- vm->def->emulator);
|
||||||
|
+ &qemuCmdFlags) < 0)
|
||||||
|
return -1;
|
||||||
|
- }
|
||||||
|
|
||||||
|
if (qemuCmdFlags & QEMUD_CMD_FLAG_DRIVE) {
|
||||||
|
if (!(devname = qemudDiskDeviceName(conn, newdisk)))
|
||||||
|
--
|
||||||
|
1.6.0.6
|
||||||
|
|
||||||
45
libvirt-0.6.3-hostdev-managed.patch
Normal file
45
libvirt-0.6.3-hostdev-managed.patch
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
From 3d7771e0570e09096ad9391a857dad48b150bc0c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mark McLoughlin <markmc@redhat.com>
|
||||||
|
Date: Wed, 6 May 2009 16:33:28 +0100
|
||||||
|
Subject: [PATCH] Fix qemu driver's interpretation of <hostdev managed='yes'/>
|
||||||
|
|
||||||
|
This change:
|
||||||
|
|
||||||
|
Tue Mar 3 08:55:13 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
|
||||||
|
|
||||||
|
Don't try to detach & reset PCI devices while running test
|
||||||
|
suite for XML-> ARGV conversion.
|
||||||
|
* src/qemu_driver.c: Add qemuPrepareHostDevices() helper to
|
||||||
|
detach and reset PCI devices.
|
||||||
|
* src/qemu_conf.c: Don't detach & reset PCI devices while
|
||||||
|
building the command line argv
|
||||||
|
|
||||||
|
accidentally did this:
|
||||||
|
|
||||||
|
- if (hostdev->managed) {
|
||||||
|
+ if (!hostdev->managed) {
|
||||||
|
|
||||||
|
Which results in managed='yes' not causing the device to be
|
||||||
|
detached when the guest is starting.
|
||||||
|
|
||||||
|
Signed-off-by: Mark McLoughlin <markmc@redhat.com>
|
||||||
|
---
|
||||||
|
src/qemu_driver.c | 2 +-
|
||||||
|
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/qemu_driver.c b/src/qemu_driver.c
|
||||||
|
index 5898026..59312c0 100644
|
||||||
|
--- a/src/qemu_driver.c
|
||||||
|
+++ b/src/qemu_driver.c
|
||||||
|
@@ -1215,7 +1215,7 @@ static int qemuPrepareHostDevices(virConnectPtr conn,
|
||||||
|
if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
- if (!hostdev->managed) {
|
||||||
|
+ if (hostdev->managed) {
|
||||||
|
pciDevice *dev = pciGetDevice(conn,
|
||||||
|
hostdev->source.subsys.u.pci.domain,
|
||||||
|
hostdev->source.subsys.u.pci.bus,
|
||||||
|
--
|
||||||
|
1.6.0.6
|
||||||
|
|
||||||
76
libvirt-0.6.3-refresh-qemu-caps.patch
Normal file
76
libvirt-0.6.3-refresh-qemu-caps.patch
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
commit 0e51348cb9aeafe5e2fd6469a4bde0baa1eb8720
|
||||||
|
Author: Cole Robinson <crobinso@redhat.com>
|
||||||
|
Date: Mon May 4 15:06:03 2009 -0400
|
||||||
|
|
||||||
|
Refresh QEMU driver capabilities for each getCapabilities call.
|
||||||
|
|
||||||
|
Also fix up a couple issues where caps are accessed without locking
|
||||||
|
the driver structure.
|
||||||
|
|
||||||
|
diff --git a/src/qemu_driver.c b/src/qemu_driver.c
|
||||||
|
index 23ea961..790dac6 100644
|
||||||
|
--- a/src/qemu_driver.c
|
||||||
|
+++ b/src/qemu_driver.c
|
||||||
|
@@ -1885,10 +1885,12 @@ static int qemudGetNodeInfo(virConnectPtr conn,
|
||||||
|
|
||||||
|
static char *qemudGetCapabilities(virConnectPtr conn) {
|
||||||
|
struct qemud_driver *driver = conn->privateData;
|
||||||
|
- char *xml;
|
||||||
|
+ char *xml = NULL;
|
||||||
|
|
||||||
|
qemuDriverLock(driver);
|
||||||
|
- if ((xml = virCapabilitiesFormatXML(driver->caps)) == NULL)
|
||||||
|
+ virCapabilitiesFree(qemu_driver->caps);
|
||||||
|
+ if ((qemu_driver->caps = qemudCapsInit()) == NULL ||
|
||||||
|
+ (xml = virCapabilitiesFormatXML(driver->caps)) == NULL)
|
||||||
|
virReportOOMError(conn);
|
||||||
|
qemuDriverUnlock(driver);
|
||||||
|
|
||||||
|
@@ -3169,20 +3171,26 @@ cleanup:
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int qemudNodeGetSecurityModel(virConnectPtr conn, virSecurityModelPtr secmodel)
|
||||||
|
+static int qemudNodeGetSecurityModel(virConnectPtr conn,
|
||||||
|
+ virSecurityModelPtr secmodel)
|
||||||
|
{
|
||||||
|
struct qemud_driver *driver = (struct qemud_driver *)conn->privateData;
|
||||||
|
char *p;
|
||||||
|
+ int ret = 0;
|
||||||
|
|
||||||
|
- if (!driver->securityDriver)
|
||||||
|
- return -2;
|
||||||
|
+ qemuDriverLock(driver);
|
||||||
|
+ if (!driver->securityDriver) {
|
||||||
|
+ ret = -2;
|
||||||
|
+ goto cleanup;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
p = driver->caps->host.secModel.model;
|
||||||
|
if (strlen(p) >= VIR_SECURITY_MODEL_BUFLEN-1) {
|
||||||
|
qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("security model string exceeds max %d bytes"),
|
||||||
|
VIR_SECURITY_MODEL_BUFLEN-1);
|
||||||
|
- return -1;
|
||||||
|
+ ret = -1;
|
||||||
|
+ goto cleanup;
|
||||||
|
}
|
||||||
|
strcpy(secmodel->model, p);
|
||||||
|
|
||||||
|
@@ -3191,10 +3199,14 @@ static int qemudNodeGetSecurityModel(virConnectPtr conn, virSecurityModelPtr sec
|
||||||
|
qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("security DOI string exceeds max %d bytes"),
|
||||||
|
VIR_SECURITY_DOI_BUFLEN-1);
|
||||||
|
- return -1;
|
||||||
|
+ ret = -1;
|
||||||
|
+ goto cleanup;
|
||||||
|
}
|
||||||
|
strcpy(secmodel->doi, p);
|
||||||
|
- return 0;
|
||||||
|
+
|
||||||
|
+cleanup:
|
||||||
|
+ qemuDriverUnlock(driver);
|
||||||
|
+ return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TODO: check seclabel restore */
|
||||||
76
libvirt-0.6.3-shared-readonly-label.patch
Normal file
76
libvirt-0.6.3-shared-readonly-label.patch
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
diff -rup libvirt-0.6.2/src/security_selinux.c libvirt-0.6.2.new/src/security_selinux.c
|
||||||
|
--- libvirt-0.6.2/src/security_selinux.c 2009-04-03 15:36:56.000000000 +0100
|
||||||
|
+++ libvirt-0.6.2.new/src/security_selinux.c 2009-05-05 13:39:42.000000000 +0100
|
||||||
|
@@ -24,11 +24,12 @@
|
||||||
|
#include "virterror_internal.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include "memory.h"
|
||||||
|
-
|
||||||
|
+#include "logging.h"
|
||||||
|
|
||||||
|
#define VIR_FROM_THIS VIR_FROM_SECURITY
|
||||||
|
|
||||||
|
static char default_domain_context[1024];
|
||||||
|
+static char default_content_context[1024];
|
||||||
|
static char default_image_context[1024];
|
||||||
|
#define SECURITY_SELINUX_VOID_DOI "0"
|
||||||
|
#define SECURITY_SELINUX_NAME "selinux"
|
||||||
|
@@ -148,8 +149,13 @@ SELinuxInitialize(virConnectPtr conn)
|
||||||
|
close(fd);
|
||||||
|
|
||||||
|
ptr = strchrnul(default_image_context, '\n');
|
||||||
|
- *ptr = '\0';
|
||||||
|
-
|
||||||
|
+ if (*ptr == '\n') {
|
||||||
|
+ *ptr = '\0';
|
||||||
|
+ strcpy(default_content_context, ptr+1);
|
||||||
|
+ ptr = strchrnul(default_content_context, '\n');
|
||||||
|
+ if (*ptr == '\n')
|
||||||
|
+ *ptr = '\0';
|
||||||
|
+ }
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -275,6 +281,8 @@ SELinuxSetFilecon(virConnectPtr conn, co
|
||||||
|
{
|
||||||
|
char ebuf[1024];
|
||||||
|
|
||||||
|
+ VIR_INFO("Setting SELinux context on '%s' to '%s'", path, tcon);
|
||||||
|
+
|
||||||
|
if(setfilecon(path, tcon) < 0) {
|
||||||
|
virSecurityReportError(conn, VIR_ERR_ERROR,
|
||||||
|
_("%s: unable to set security context "
|
||||||
|
@@ -299,6 +307,8 @@ SELinuxRestoreSecurityImageLabel(virConn
|
||||||
|
char *newpath = NULL;
|
||||||
|
const char *path = disk->src;
|
||||||
|
|
||||||
|
+ /* Don't restore labels on readoly/shared disks, because
|
||||||
|
+ * other VMs may still be accessing these */
|
||||||
|
if (disk->readonly || disk->shared)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
@@ -328,8 +338,13 @@ SELinuxSetSecurityImageLabel(virConnectP
|
||||||
|
{
|
||||||
|
const virSecurityLabelDefPtr secdef = &vm->def->seclabel;
|
||||||
|
|
||||||
|
- if (secdef->imagelabel)
|
||||||
|
+ if (disk->shared) {
|
||||||
|
+ return SELinuxSetFilecon(conn, disk->src, default_image_context);
|
||||||
|
+ } else if (disk->readonly) {
|
||||||
|
+ return SELinuxSetFilecon(conn, disk->src, default_content_context);
|
||||||
|
+ } else if (secdef->imagelabel) {
|
||||||
|
return SELinuxSetFilecon(conn, disk->src, secdef->imagelabel);
|
||||||
|
+ }
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@@ -403,9 +418,6 @@ SELinuxSetSecurityLabel(virConnectPtr co
|
||||||
|
|
||||||
|
if (secdef->imagelabel) {
|
||||||
|
for (i = 0 ; i < vm->def->ndisks ; i++) {
|
||||||
|
- if (vm->def->disks[i]->readonly ||
|
||||||
|
- vm->def->disks[i]->shared) continue;
|
||||||
|
-
|
||||||
|
if (SELinuxSetSecurityImageLabel(conn, vm, vm->def->disks[i]) < 0)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
33
libvirt-0.6.3-svirt-sound.patch
Normal file
33
libvirt-0.6.3-svirt-sound.patch
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
--- src/qemu_conf.c.orig 2009-04-02 11:50:10.000000000 +0200
|
||||||
|
+++ src/qemu_conf.c 2009-04-03 17:46:59.000000000 +0200
|
||||||
|
@@ -779,6 +779,20 @@ int qemudBuildCommandLine(virConnectPtr
|
||||||
|
char domid[50];
|
||||||
|
char *pidfile;
|
||||||
|
const char *cpu = NULL;
|
||||||
|
+ int skipSound = 0;
|
||||||
|
+
|
||||||
|
+ if (driver->securityDriver &&
|
||||||
|
+ driver->securityDriver->name &&
|
||||||
|
+ STREQ(driver->securityDriver->name, "selinux") &&
|
||||||
|
+ getuid() == 0) {
|
||||||
|
+ static int soundWarned = 0;
|
||||||
|
+ skipSound = 1;
|
||||||
|
+ if (def->nsounds &&
|
||||||
|
+ !soundWarned) {
|
||||||
|
+ soundWarned = 1;
|
||||||
|
+ VIR_WARN0("Sound cards for VMs are disabled while SELinux security model is active");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
|
||||||
|
uname_normalize(&ut);
|
||||||
|
|
||||||
|
@@ -1425,7 +1439,8 @@ int qemudBuildCommandLine(virConnectPtr
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Add sound hardware */
|
||||||
|
- if (def->nsounds) {
|
||||||
|
+ if (def->nsounds &&
|
||||||
|
+ !skipSound) {
|
||||||
|
int size = 100;
|
||||||
|
char *modstr;
|
||||||
|
if (VIR_ALLOC_N(modstr, size+1) < 0)
|
||||||
956
libvirt.spec
956
libvirt.spec
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user