Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 31970c6c2a | |||
| 131bf1e834 | |||
| 0da9851d5d | |||
| 257e13d238 | |||
| 016a6dcd0e | |||
| b610e1c718 | |||
| caa81cd8d7 | |||
| eca45f4a3f | |||
| d475deef60 |
@@ -1,31 +0,0 @@
|
||||
[suppress_function]
|
||||
symbol_version_regexp = LIBVIRT_PRIVATE.*
|
||||
soname_regexp = libvirt\\.so.*
|
||||
|
||||
[suppress_function]
|
||||
symbol_version_regexp = LIBVIRT_ADMIN_PRIVATE.*
|
||||
soname_regexp = libvirt-admin\\.so.*
|
||||
|
||||
[suppress_variable]
|
||||
symbol_version_regexp = LIBVIRT_PRIVATE.*
|
||||
soname_regexp = libvirt\\.so.*
|
||||
|
||||
[suppress_variable]
|
||||
symbol_version_regexp = LIBVIRT_ADMIN_PRIVATE.*
|
||||
soname_regexp = libvirt-admin\\.so.*
|
||||
|
||||
[suppress_function]
|
||||
symbol_version_regexp = .*
|
||||
soname_regexp = libvirt_storage_.*\\.so.*
|
||||
|
||||
[suppress_variable]
|
||||
symbol_version_regexp = .*
|
||||
soname_regexp = libvirt_storage_.*\\.so.*
|
||||
|
||||
[suppress_function]
|
||||
symbol_version_regexp = .*
|
||||
soname_regexp = libvirt_driver_.*\\.so.*
|
||||
|
||||
[suppress_variable]
|
||||
symbol_version_regexp = .*
|
||||
soname_regexp = libvirt_driver_.*\\.so.*
|
||||
@@ -0,0 +1,6 @@
|
||||
.build*.log
|
||||
*.rpm
|
||||
i686
|
||||
x86_64
|
||||
libvirt-*.tar.gz
|
||||
libvirt-0.4.6.tar.gz
|
||||
@@ -1,5 +0,0 @@
|
||||
.build*.log
|
||||
*.rpm
|
||||
i686
|
||||
x86_64
|
||||
libvirt-*.tar.xz
|
||||
@@ -1,35 +0,0 @@
|
||||
From 9493c9b79dc541ec9e0fd73c6d87bdf8d30aaa90 Mon Sep 17 00:00:00 2001
|
||||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Mon, 1 Aug 2022 15:20:38 -0400
|
||||
Subject: [PATCH] lxc: containter: fix build with glibc 2.36
|
||||
Content-type: text/plain
|
||||
|
||||
With glibc 2.36, sys/mount.h and linux/mount.h conflict:
|
||||
https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E
|
||||
|
||||
lxc_container.c imports sys/mount.h and linux/fs.h, which pulls in
|
||||
linux/mount.h.
|
||||
|
||||
linux/fs.h isn't required here though. glibc sys/mount.h has had
|
||||
MS_MOVE since 2.12 in 2010
|
||||
|
||||
Reviewed-by: Erik Skultety <eskultet@redhat.com>
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
---
|
||||
src/lxc/lxc_container.c | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
|
||||
index b5278831da..a5401c2186 100644
|
||||
--- a/src/lxc/lxc_container.c
|
||||
+++ b/src/lxc/lxc_container.c
|
||||
@@ -33,9 +33,6 @@
|
||||
/* Yes, we want linux private one, for _syscall2() macro */
|
||||
#include <linux/unistd.h>
|
||||
|
||||
-/* For MS_MOVE */
|
||||
-#include <linux/fs.h>
|
||||
-
|
||||
#if WITH_CAPNG
|
||||
# include <cap-ng.h>
|
||||
#endif
|
||||
@@ -1,239 +0,0 @@
|
||||
From 99b40587e8cd83a136d94e208d32a80be76dc22a Mon Sep 17 00:00:00 2001
|
||||
Message-Id: <99b40587e8cd83a136d94e208d32a80be76dc22a.1666875466.git.crobinso@redhat.com>
|
||||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Thu, 27 Oct 2022 08:51:25 -0400
|
||||
Subject: [PATCH] tests: Fix libxlxml2domconfigtest with latest xen
|
||||
Content-type: text/plain
|
||||
|
||||
shadow_memkb is populated from a libxl API call, and the value can
|
||||
change. For example:
|
||||
https://xenbits.xen.org/gitweb/?p=xen.git;a=commit;h=2c992810854a15b41be920519ce83a4a328d5168
|
||||
|
||||
Mock libxl_get_required_shadow_memory to give consistent output
|
||||
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
---
|
||||
tests/libxlmock.c | 11 +++++++++++
|
||||
tests/libxlxml2domconfigdata/basic-hvm.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/basic-pv.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/basic-pvh.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/cpu-shares-hvm.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json | 2 +-
|
||||
.../fullvirt-cpuid-legacy-nest.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/fullvirt-cpuid.json | 2 +-
|
||||
.../libxlxml2domconfigdata/max-eventchannels-hvm.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/max-gntframes-hvm.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/moredevs-hvm.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/multiple-ip.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/variable-clock-hvm.json | 2 +-
|
||||
.../libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json | 2 +-
|
||||
tests/libxlxml2domconfigdata/vnuma-hvm.json | 2 +-
|
||||
15 files changed, 25 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/tests/libxlmock.c b/tests/libxlmock.c
|
||||
index 0e4bf7df52..4754597e5b 100644
|
||||
--- a/tests/libxlmock.c
|
||||
+++ b/tests/libxlmock.c
|
||||
@@ -109,6 +109,17 @@ VIR_MOCK_STUB_RET_ARGS(bind,
|
||||
const struct sockaddr *, addr,
|
||||
socklen_t, addrlen)
|
||||
|
||||
+VIR_MOCK_IMPL_RET_ARGS(libxl_get_required_shadow_memory,
|
||||
+ unsigned long,
|
||||
+ unsigned long, maxmem_kb,
|
||||
+ unsigned int, smp_cpus)
|
||||
+{
|
||||
+ /* silence gcc warning about unused function */
|
||||
+ if (0)
|
||||
+ real_libxl_get_required_shadow_memory(maxmem_kb, smp_cpus);
|
||||
+ return 1234;
|
||||
+}
|
||||
+
|
||||
VIR_MOCK_IMPL_RET_ARGS(__xstat, int,
|
||||
int, ver,
|
||||
const char *, path,
|
||||
diff --git a/tests/libxlxml2domconfigdata/basic-hvm.json b/tests/libxlxml2domconfigdata/basic-hvm.json
|
||||
index 87f8cb7d8a..d30875420d 100644
|
||||
--- a/tests/libxlxml2domconfigdata/basic-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/basic-hvm.json
|
||||
@@ -15,7 +15,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 12288,
|
||||
+ "shadow_memkb": 1234,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
"sched_params": {
|
||||
diff --git a/tests/libxlxml2domconfigdata/basic-pv.json b/tests/libxlxml2domconfigdata/basic-pv.json
|
||||
index b71c3b0f49..32d188fabd 100644
|
||||
--- a/tests/libxlxml2domconfigdata/basic-pv.json
|
||||
+++ b/tests/libxlxml2domconfigdata/basic-pv.json
|
||||
@@ -14,7 +14,7 @@
|
||||
],
|
||||
"max_memkb": 524288,
|
||||
"target_memkb": 524288,
|
||||
- "shadow_memkb": 8192,
|
||||
+ "shadow_memkb": 1234,
|
||||
"sched_params": {
|
||||
|
||||
},
|
||||
diff --git a/tests/libxlxml2domconfigdata/basic-pvh.json b/tests/libxlxml2domconfigdata/basic-pvh.json
|
||||
index 48365c9026..f51957aa85 100644
|
||||
--- a/tests/libxlxml2domconfigdata/basic-pvh.json
|
||||
+++ b/tests/libxlxml2domconfigdata/basic-pvh.json
|
||||
@@ -14,7 +14,7 @@
|
||||
],
|
||||
"max_memkb": 524288,
|
||||
"target_memkb": 524288,
|
||||
- "shadow_memkb": 8192,
|
||||
+ "shadow_memkb": 1234,
|
||||
"sched_params": {
|
||||
|
||||
},
|
||||
diff --git a/tests/libxlxml2domconfigdata/cpu-shares-hvm.json b/tests/libxlxml2domconfigdata/cpu-shares-hvm.json
|
||||
index 2aa97e88c5..15105c83ad 100644
|
||||
--- a/tests/libxlxml2domconfigdata/cpu-shares-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/cpu-shares-hvm.json
|
||||
@@ -15,7 +15,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 12288,
|
||||
+ "shadow_memkb": 1234,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
"sched_params": {
|
||||
diff --git a/tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json b/tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json
|
||||
index a2d46797aa..26f5abefee 100644
|
||||
--- a/tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json
|
||||
+++ b/tests/libxlxml2domconfigdata/fullvirt-acpi-slic.json
|
||||
@@ -11,7 +11,7 @@
|
||||
],
|
||||
"max_memkb": 592896,
|
||||
"target_memkb": 403456,
|
||||
- "shadow_memkb": 5656,
|
||||
+ "shadow_memkb": 1234,
|
||||
"sched_params": {
|
||||
},
|
||||
"apic": "True",
|
||||
diff --git a/tests/libxlxml2domconfigdata/fullvirt-cpuid-legacy-nest.json b/tests/libxlxml2domconfigdata/fullvirt-cpuid-legacy-nest.json
|
||||
index 6290655c20..740b82d2e6 100644
|
||||
--- a/tests/libxlxml2domconfigdata/fullvirt-cpuid-legacy-nest.json
|
||||
+++ b/tests/libxlxml2domconfigdata/fullvirt-cpuid-legacy-nest.json
|
||||
@@ -11,7 +11,7 @@
|
||||
],
|
||||
"max_memkb": 592896,
|
||||
"target_memkb": 403456,
|
||||
- "shadow_memkb": 5656,
|
||||
+ "shadow_memkb": 1234,
|
||||
"cpuid": [
|
||||
{
|
||||
"leaf": 1,
|
||||
diff --git a/tests/libxlxml2domconfigdata/fullvirt-cpuid.json b/tests/libxlxml2domconfigdata/fullvirt-cpuid.json
|
||||
index 811a4f0ac7..8bf41894a5 100644
|
||||
--- a/tests/libxlxml2domconfigdata/fullvirt-cpuid.json
|
||||
+++ b/tests/libxlxml2domconfigdata/fullvirt-cpuid.json
|
||||
@@ -11,7 +11,7 @@
|
||||
],
|
||||
"max_memkb": 592896,
|
||||
"target_memkb": 403456,
|
||||
- "shadow_memkb": 5656,
|
||||
+ "shadow_memkb": 1234,
|
||||
"cpuid": [
|
||||
{
|
||||
"leaf": 1,
|
||||
diff --git a/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json b/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json
|
||||
index 4a5b0ca65f..6f0daa065f 100644
|
||||
--- a/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/max-eventchannels-hvm.json
|
||||
@@ -15,7 +15,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 12288,
|
||||
+ "shadow_memkb": 1234,
|
||||
"event_channels": 2047,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
diff --git a/tests/libxlxml2domconfigdata/max-gntframes-hvm.json b/tests/libxlxml2domconfigdata/max-gntframes-hvm.json
|
||||
index 2883d057ff..35de588abc 100644
|
||||
--- a/tests/libxlxml2domconfigdata/max-gntframes-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/max-gntframes-hvm.json
|
||||
@@ -15,7 +15,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 12288,
|
||||
+ "shadow_memkb": 1234,
|
||||
"max_grant_frames": 64,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
diff --git a/tests/libxlxml2domconfigdata/moredevs-hvm.json b/tests/libxlxml2domconfigdata/moredevs-hvm.json
|
||||
index 58cf32a8d4..bdc9afc29b 100644
|
||||
--- a/tests/libxlxml2domconfigdata/moredevs-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/moredevs-hvm.json
|
||||
@@ -17,7 +17,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 12288,
|
||||
+ "shadow_memkb": 1234,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
"sched_params": {
|
||||
diff --git a/tests/libxlxml2domconfigdata/multiple-ip.json b/tests/libxlxml2domconfigdata/multiple-ip.json
|
||||
index 2db98b82f6..e0b37aa795 100644
|
||||
--- a/tests/libxlxml2domconfigdata/multiple-ip.json
|
||||
+++ b/tests/libxlxml2domconfigdata/multiple-ip.json
|
||||
@@ -14,7 +14,7 @@
|
||||
],
|
||||
"max_memkb": 524288,
|
||||
"target_memkb": 524288,
|
||||
- "shadow_memkb": 8192,
|
||||
+ "shadow_memkb": 1234,
|
||||
"sched_params": {
|
||||
|
||||
},
|
||||
diff --git a/tests/libxlxml2domconfigdata/variable-clock-hvm.json b/tests/libxlxml2domconfigdata/variable-clock-hvm.json
|
||||
index 9a25d51da2..3c131c603c 100644
|
||||
--- a/tests/libxlxml2domconfigdata/variable-clock-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/variable-clock-hvm.json
|
||||
@@ -15,7 +15,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 12288,
|
||||
+ "shadow_memkb": 1234,
|
||||
"rtc_timeoffset": 3600,
|
||||
"localtime": "True",
|
||||
"device_model_version": "qemu_xen",
|
||||
diff --git a/tests/libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json b/tests/libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json
|
||||
index 6cda8d0252..6725df9112 100644
|
||||
--- a/tests/libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json
|
||||
+++ b/tests/libxlxml2domconfigdata/vnuma-hvm-legacy-nest.json
|
||||
@@ -103,7 +103,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 14336,
|
||||
+ "shadow_memkb": 1234,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
"sched_params": {
|
||||
diff --git a/tests/libxlxml2domconfigdata/vnuma-hvm.json b/tests/libxlxml2domconfigdata/vnuma-hvm.json
|
||||
index f578ccd3d3..2556c82d5f 100644
|
||||
--- a/tests/libxlxml2domconfigdata/vnuma-hvm.json
|
||||
+++ b/tests/libxlxml2domconfigdata/vnuma-hvm.json
|
||||
@@ -103,7 +103,7 @@
|
||||
"max_memkb": 1048576,
|
||||
"target_memkb": 1048576,
|
||||
"video_memkb": 8192,
|
||||
- "shadow_memkb": 14336,
|
||||
+ "shadow_memkb": 1234,
|
||||
"device_model_version": "qemu_xen",
|
||||
"device_model": "/bin/true",
|
||||
"sched_params": {
|
||||
--
|
||||
2.37.3
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
From c0d9adf220dc0d223330a7bac37b174132d330ba Mon Sep 17 00:00:00 2001
|
||||
From: Cole Robinson <crobinso@redhat.com>
|
||||
Date: Mon, 1 Aug 2022 15:24:01 -0400
|
||||
Subject: [PATCH] virfile: Fix build with glibc 2.36
|
||||
Content-type: text/plain
|
||||
|
||||
With glibc 2.36, sys/mount.h and linux/mount.h conflict:
|
||||
https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E
|
||||
|
||||
virfile.c imports sys/mount.h and linux/fs.h, which pulls in
|
||||
linux/mount.h.
|
||||
|
||||
Manually define the constants we need from linux/fs.h, like was
|
||||
done in llvm:
|
||||
|
||||
https://reviews.llvm.org/rGb379129c4beb3f26223288627a1291739f33af02
|
||||
|
||||
Reviewed-by: Erik Skultety <eskultet@redhat.com>
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
---
|
||||
src/util/virfile.c | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/util/virfile.c b/src/util/virfile.c
|
||||
index 99da058db3..ce541b8946 100644
|
||||
--- a/src/util/virfile.c
|
||||
+++ b/src/util/virfile.c
|
||||
@@ -71,7 +71,11 @@
|
||||
# endif
|
||||
# include <sys/ioctl.h>
|
||||
# include <linux/cdrom.h>
|
||||
-# include <linux/fs.h>
|
||||
+/* These come from linux/fs.h, but that header conflicts with
|
||||
+ * sys/mount.h on glibc 2.36+ */
|
||||
+# define FS_IOC_GETFLAGS _IOR('f', 1, long)
|
||||
+# define FS_IOC_SETFLAGS _IOW('f', 2, long)
|
||||
+# define FS_NOCOW_FL 0x00800000
|
||||
#endif
|
||||
|
||||
#if WITH_LIBATTR
|
||||
@@ -0,0 +1,21 @@
|
||||
# Makefile for source rpm: libvirt
|
||||
# $Id$
|
||||
NAME := libvirt
|
||||
SPECFILE = $(firstword $(wildcard *.spec))
|
||||
|
||||
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)
|
||||
@@ -0,0 +1,21 @@
|
||||
diff -rup libvirt-0.6.0.orig/src/remote_internal.c libvirt-0.6.0.new/src/remote_internal.c
|
||||
--- libvirt-0.6.0.orig/src/remote_internal.c 2009-02-18 10:56:34.000000000 +0000
|
||||
+++ libvirt-0.6.0.new/src/remote_internal.c 2009-02-18 13:35:26.000000000 +0000
|
||||
@@ -654,12 +654,13 @@ doRemoteOpen (virConnectPtr conn,
|
||||
*/
|
||||
if (errno == ECONNREFUSED &&
|
||||
flags & VIR_DRV_OPEN_REMOTE_AUTOSTART &&
|
||||
- trials < 5) {
|
||||
+ trials < 20) {
|
||||
close(priv->sock);
|
||||
priv->sock = -1;
|
||||
- if (remoteForkDaemon(conn) == 0) {
|
||||
+ if (trials > 0 ||
|
||||
+ remoteForkDaemon(conn) == 0) {
|
||||
trials++;
|
||||
- usleep(5000 * trials * trials);
|
||||
+ usleep(1000 * 100 * trials);
|
||||
goto autostart_retry;
|
||||
}
|
||||
}
|
||||
Only in libvirt-0.6.0.new/src: remote_internal.c~
|
||||
@@ -0,0 +1,44 @@
|
||||
diff -rup libvirt-0.6.0.orig/qemud/qemud.c libvirt-0.6.0.new/qemud/qemud.c
|
||||
--- libvirt-0.6.0.orig/qemud/qemud.c 2009-02-18 10:56:34.000000000 +0000
|
||||
+++ libvirt-0.6.0.new/qemud/qemud.c 2009-02-18 12:52:18.000000000 +0000
|
||||
@@ -860,6 +860,10 @@ static struct qemud_server *qemudNetwork
|
||||
if (auth_unix_rw == REMOTE_AUTH_POLKIT ||
|
||||
auth_unix_ro == REMOTE_AUTH_POLKIT) {
|
||||
DBusError derr;
|
||||
+
|
||||
+ dbus_connection_set_change_sigpipe(FALSE);
|
||||
+ dbus_threads_init_default();
|
||||
+
|
||||
dbus_error_init(&derr);
|
||||
server->sysbus = dbus_bus_get(DBUS_BUS_SYSTEM, &derr);
|
||||
if (!(server->sysbus)) {
|
||||
@@ -868,6 +872,7 @@ static struct qemud_server *qemudNetwork
|
||||
dbus_error_free(&derr);
|
||||
goto cleanup;
|
||||
}
|
||||
+ dbus_connection_set_exit_on_disconnect(server->sysbus, FALSE);
|
||||
}
|
||||
#endif
|
||||
|
||||
diff -rup libvirt-0.6.0.orig/src/node_device_hal.c libvirt-0.6.0.new/src/node_device_hal.c
|
||||
--- libvirt-0.6.0.orig/src/node_device_hal.c 2009-01-16 12:44:22.000000000 +0000
|
||||
+++ libvirt-0.6.0.new/src/node_device_hal.c 2009-02-18 12:52:48.000000000 +0000
|
||||
@@ -685,6 +685,9 @@ static int halDeviceMonitorStartup(void)
|
||||
nodeDeviceLock(driverState);
|
||||
|
||||
/* Allocate and initialize a new HAL context */
|
||||
+ dbus_connection_set_change_sigpipe(FALSE);
|
||||
+ dbus_threads_init_default();
|
||||
+
|
||||
dbus_error_init(&err);
|
||||
hal_ctx = libhal_ctx_new();
|
||||
if (hal_ctx == NULL) {
|
||||
@@ -696,6 +699,8 @@ static int halDeviceMonitorStartup(void)
|
||||
fprintf(stderr, "%s: dbus_bus_get failed\n", __FUNCTION__);
|
||||
goto failure;
|
||||
}
|
||||
+ dbus_connection_set_exit_on_disconnect(dbus_conn, FALSE);
|
||||
+
|
||||
if (!libhal_ctx_set_dbus_connection(hal_ctx, dbus_conn)) {
|
||||
fprintf(stderr, "%s: libhal_ctx_set_dbus_connection failed\n",
|
||||
__FUNCTION__);
|
||||
@@ -0,0 +1,109 @@
|
||||
diff -rup libvirt-0.6.0.orig/src/qemu_driver.c libvirt-0.6.0.new/src/qemu_driver.c
|
||||
--- libvirt-0.6.0.orig/src/qemu_driver.c 2009-01-31 09:04:18.000000000 +0000
|
||||
+++ libvirt-0.6.0.new/src/qemu_driver.c 2009-02-18 11:15:37.000000000 +0000
|
||||
@@ -633,6 +633,7 @@ qemudReadMonitorOutput(virConnectPtr con
|
||||
{
|
||||
int got = 0;
|
||||
buf[0] = '\0';
|
||||
+ timeout *= 1000; /* poll wants milli seconds */
|
||||
|
||||
/* Consume & discard the initial greeting */
|
||||
while (got < (buflen-1)) {
|
||||
@@ -694,6 +695,56 @@ qemudReadMonitorOutput(virConnectPtr con
|
||||
|
||||
}
|
||||
|
||||
+
|
||||
+/*
|
||||
+ * Returns -1 for error, 0 on success
|
||||
+ */
|
||||
+static int
|
||||
+qemudReadLogOutput(virConnectPtr conn,
|
||||
+ virDomainObjPtr vm,
|
||||
+ int fd,
|
||||
+ char *buf,
|
||||
+ int buflen,
|
||||
+ qemudHandlerMonitorOutput func,
|
||||
+ const char *what,
|
||||
+ int timeout)
|
||||
+{
|
||||
+ int got = 0;
|
||||
+ int ret;
|
||||
+ int retries = timeout*10;
|
||||
+ buf[0] = '\0';
|
||||
+
|
||||
+ while (retries) {
|
||||
+ while((ret = read(fd, buf+got, buflen-got-1)) > 0) {
|
||||
+ got += ret;
|
||||
+ buf[got] = '\0';
|
||||
+ if ((buflen-got-1) == 0) {
|
||||
+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
|
||||
+ _("Out of space while reading %s log output"), what);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (ret < 0 && errno != EINTR) {
|
||||
+ virReportSystemError(conn, errno,
|
||||
+ _("Failure while reading %s log output"),
|
||||
+ what);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ ret = func(conn, vm, buf, fd);
|
||||
+ if (ret <= 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ usleep(100*1000);
|
||||
+ retries--;
|
||||
+ }
|
||||
+ if (retries == 0)
|
||||
+ qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
|
||||
+ _("Timed out while reading %s log output"), what);
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
static int
|
||||
qemudCheckMonitorPrompt(virConnectPtr conn ATTRIBUTE_UNUSED,
|
||||
virDomainObjPtr vm,
|
||||
@@ -738,7 +789,7 @@ static int qemudOpenMonitor(virConnectPt
|
||||
vm, monfd,
|
||||
buf, sizeof(buf),
|
||||
qemudCheckMonitorPrompt,
|
||||
- "monitor", 10000) <= 0)
|
||||
+ "monitor", 10) <= 0)
|
||||
ret = -1;
|
||||
else
|
||||
ret = 0;
|
||||
@@ -770,6 +821,7 @@ static int qemudOpenMonitor(virConnectPt
|
||||
return ret;
|
||||
}
|
||||
|
||||
+/* Returns -1 for error, 0 success, 1 continue reading */
|
||||
static int qemudExtractMonitorPath(virConnectPtr conn,
|
||||
const char *haystack,
|
||||
size_t *offset,
|
||||
@@ -873,19 +925,16 @@ static int qemudWaitForMonitor(virConnec
|
||||
< 0)
|
||||
return -1;
|
||||
|
||||
- ret = qemudReadMonitorOutput(conn, vm, logfd, buf, sizeof(buf),
|
||||
- qemudFindCharDevicePTYs,
|
||||
- "console", 3000);
|
||||
+ ret = qemudReadLogOutput(conn, vm, logfd, buf, sizeof(buf),
|
||||
+ qemudFindCharDevicePTYs,
|
||||
+ "console", 3);
|
||||
if (close(logfd) < 0)
|
||||
qemudLog(QEMUD_WARN, _("Unable to close logfile: %s\n"),
|
||||
strerror(errno));
|
||||
|
||||
- if (ret == 1) /* Success */
|
||||
+ if (ret == 0) /* success */
|
||||
return 0;
|
||||
|
||||
- if (ret == -1)
|
||||
- return -1;
|
||||
-
|
||||
/* Unexpected end of file - inform user of QEMU log data */
|
||||
qemudReportError(conn, NULL, NULL, VIR_ERR_INTERNAL_ERROR,
|
||||
_("unable to start guest: %s"), buf);
|
||||
@@ -0,0 +1,124 @@
|
||||
diff -rup libvirt-0.6.0.orig/qemud/event.c libvirt-0.6.0.new/qemud/event.c
|
||||
--- libvirt-0.6.0.orig/qemud/event.c 2008-12-22 13:02:54.000000000 +0000
|
||||
+++ libvirt-0.6.0.new/qemud/event.c 2009-02-06 19:29:28.000000000 +0000
|
||||
@@ -68,6 +68,7 @@ struct virEventTimeout {
|
||||
/* State for the main event loop */
|
||||
struct virEventLoop {
|
||||
pthread_mutex_t lock;
|
||||
+ int running;
|
||||
pthread_t leader;
|
||||
int wakeupfd[2];
|
||||
int handlesCount;
|
||||
@@ -521,6 +522,7 @@ int virEventRunOnce(void) {
|
||||
int ret, timeout, nfds;
|
||||
|
||||
virEventLock();
|
||||
+ eventLoop.running = 1;
|
||||
eventLoop.leader = pthread_self();
|
||||
if ((nfds = virEventMakePollFDs(&fds)) < 0) {
|
||||
virEventUnlock();
|
||||
@@ -572,7 +574,7 @@ int virEventRunOnce(void) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
- eventLoop.leader = 0;
|
||||
+ eventLoop.running = 0;
|
||||
virEventUnlock();
|
||||
return 0;
|
||||
}
|
||||
@@ -611,7 +613,9 @@ int virEventInit(void)
|
||||
static int virEventInterruptLocked(void)
|
||||
{
|
||||
char c = '\0';
|
||||
- if (pthread_self() == eventLoop.leader)
|
||||
+
|
||||
+ if (!eventLoop.running ||
|
||||
+ pthread_self() == eventLoop.leader)
|
||||
return 0;
|
||||
|
||||
if (safewrite(eventLoop.wakeupfd[1], &c, sizeof(c)) != sizeof(c))
|
||||
diff -rup libvirt-0.6.0.orig/qemud/qemud.c libvirt-0.6.0.new/qemud/qemud.c
|
||||
--- libvirt-0.6.0.orig/qemud/qemud.c 2009-01-31 09:04:17.000000000 +0000
|
||||
+++ libvirt-0.6.0.new/qemud/qemud.c 2009-02-06 19:29:28.000000000 +0000
|
||||
@@ -2013,11 +2013,15 @@ static int qemudOneLoop(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static void qemudInactiveTimer(int timer ATTRIBUTE_UNUSED, void *data) {
|
||||
+static void qemudInactiveTimer(int timerid, void *data) {
|
||||
struct qemud_server *server = (struct qemud_server *)data;
|
||||
- DEBUG0("Got inactive timer expiry");
|
||||
- if (!virStateActive()) {
|
||||
- DEBUG0("No state active, shutting down");
|
||||
+
|
||||
+ if (virStateActive() ||
|
||||
+ server->clients) {
|
||||
+ DEBUG0("Timer expired but still active, not shutting down");
|
||||
+ virEventUpdateTimeoutImpl(timerid, -1);
|
||||
+ } else {
|
||||
+ DEBUG0("Timer expired and inactive, shutting down");
|
||||
server->shutdown = 1;
|
||||
}
|
||||
}
|
||||
@@ -2048,9 +2052,18 @@ static void qemudFreeClient(struct qemud
|
||||
static int qemudRunLoop(struct qemud_server *server) {
|
||||
int timerid = -1;
|
||||
int ret = -1, i;
|
||||
+ int timerActive = 0;
|
||||
|
||||
virMutexLock(&server->lock);
|
||||
|
||||
+ if (timeout > 0 &&
|
||||
+ (timerid = virEventAddTimeoutImpl(-1,
|
||||
+ qemudInactiveTimer,
|
||||
+ server, NULL)) < 0) {
|
||||
+ VIR_ERROR0(_("Failed to register shutdown timeout"));
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
if (min_workers > max_workers)
|
||||
max_workers = min_workers;
|
||||
|
||||
@@ -2071,11 +2084,21 @@ static int qemudRunLoop(struct qemud_ser
|
||||
* if any drivers have active state, if not
|
||||
* shutdown after timeout seconds
|
||||
*/
|
||||
- if (timeout > 0 && !virStateActive() && !server->clients) {
|
||||
- timerid = virEventAddTimeoutImpl(timeout*1000,
|
||||
- qemudInactiveTimer,
|
||||
- server, NULL);
|
||||
- DEBUG("Scheduling shutdown timer %d", timerid);
|
||||
+ if (timeout > 0) {
|
||||
+ if (timerActive) {
|
||||
+ if (server->clients) {
|
||||
+ DEBUG("Deactivating shutdown timer %d", timerid);
|
||||
+ virEventUpdateTimeoutImpl(timerid, -1);
|
||||
+ timerActive = 0;
|
||||
+ }
|
||||
+ } else {
|
||||
+ if (!virStateActive() &&
|
||||
+ !server->clients) {
|
||||
+ DEBUG("Activating shutdown timer %d", timerid);
|
||||
+ virEventUpdateTimeoutImpl(timerid, timeout * 1000);
|
||||
+ timerActive = 1;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
virMutexUnlock(&server->lock);
|
||||
@@ -2129,15 +2152,6 @@ static int qemudRunLoop(struct qemud_ser
|
||||
}
|
||||
}
|
||||
|
||||
- /* Unregister any timeout that's active, since we
|
||||
- * just had an event processed
|
||||
- */
|
||||
- if (timerid != -1) {
|
||||
- DEBUG("Removing shutdown timer %d", timerid);
|
||||
- virEventRemoveTimeoutImpl(timerid);
|
||||
- timerid = -1;
|
||||
- }
|
||||
-
|
||||
if (server->shutdown) {
|
||||
ret = 0;
|
||||
break;
|
||||
+653
-2421
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user