[Pkg-libvirt-commits] [SCM] Libvirt debian packaging branch, master, updated. debian/0.4.6-4-10-g4835c3c
Guido Guenther
agx at sigxcpu.org
Fri Nov 28 13:55:07 UTC 2008
The following commit has been merged in the master branch:
commit c07c68f5d297b29f68367b62109e60b9afc3d2bf
Author: Guido Günther <agx at sigxcpu.org>
Date: Thu Nov 27 18:04:16 2008 +0100
prefer xenstoraged driver for listDomains
avoids seeing "ghost domains" due to bugs in several versions of the xen
HV
diff --git a/debian/patches/0006-xen-prefer-xenstoraged-driver-for-listDomains.patch b/debian/patches/0006-xen-prefer-xenstoraged-driver-for-listDomains.patch
new file mode 100644
index 0000000..5db9b71
--- /dev/null
+++ b/debian/patches/0006-xen-prefer-xenstoraged-driver-for-listDomains.patch
@@ -0,0 +1,116 @@
+From 20cd80189d752d5dc630afa8d29a3ebf0ac51649 Mon Sep 17 00:00:00 2001
+From: =?utf-8?q?Guido=20G=C3=BCnther?= <agx at sigxcpu.org>
+Date: Wed, 26 Nov 2008 10:54:51 +0100
+Subject: [PATCH] xen: prefer xenstoraged driver for listDomains
+
+at least Debian's xen 3.2.1 reports ghost ids of already shutdown domains when
+using the HV driver.
+---
+ src/proxy_internal.c | 3 +--
+ src/proxy_internal.h | 2 ++
+ src/xen_unified.c | 29 +++++++++++++++++++++++------
+ src/xend_internal.c | 2 +-
+ src/xend_internal.h | 1 +
+ 5 files changed, 28 insertions(+), 9 deletions(-)
+
+diff --git a/src/proxy_internal.c b/src/proxy_internal.c
+index 1378559..daf1193 100644
+--- a/src/proxy_internal.c
++++ b/src/proxy_internal.c
+@@ -37,7 +37,6 @@ static int xenProxyOpen(virConnectPtr conn, xmlURIPtr uri, virConnectAuthPtr aut
+ static int xenProxyGetVersion(virConnectPtr conn, unsigned long *hvVer);
+ static int xenProxyNodeGetInfo(virConnectPtr conn, virNodeInfoPtr info);
+ static char *xenProxyGetCapabilities(virConnectPtr conn);
+-static int xenProxyListDomains(virConnectPtr conn, int *ids, int maxids);
+ static int xenProxyNumOfDomains(virConnectPtr conn);
+ static unsigned long xenProxyDomainGetMaxMemory(virDomainPtr domain);
+ static int xenProxyDomainGetInfo(virDomainPtr domain, virDomainInfoPtr info);
+@@ -581,7 +580,7 @@ xenProxyGetVersion(virConnectPtr conn, unsigned long *hvVer)
+ *
+ * Returns the number of domain found or -1 in case of error
+ */
+-static int
++int
+ xenProxyListDomains(virConnectPtr conn, int *ids, int maxids)
+ {
+ virProxyPacket req;
+diff --git a/src/proxy_internal.h b/src/proxy_internal.h
+index 0e66c1c..693b10b 100644
+--- a/src/proxy_internal.h
++++ b/src/proxy_internal.h
+@@ -94,4 +94,6 @@ extern virDomainPtr xenProxyLookupByName(virConnectPtr conn,
+
+ extern char * xenProxyDomainDumpXML(virDomainPtr domain,
+ int flags);
++extern int xenProxyListDomains(virConnectPtr conn, int *ids,
++ int maxids);
+ #endif /* __LIBVIR_PROXY_H__ */
+diff --git a/src/xen_unified.c b/src/xen_unified.c
+index 5807391..0fb5d73 100644
+--- a/src/xen_unified.c
++++ b/src/xen_unified.c
+@@ -485,14 +485,31 @@ static int
+ xenUnifiedListDomains (virConnectPtr conn, int *ids, int maxids)
+ {
+ GET_PRIVATE(conn);
+- int i, ret;
++ int ret;
+
+- for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
+- if (priv->opened[i] && drivers[i]->listDomains) {
+- ret = drivers[i]->listDomains (conn, ids, maxids);
+- if (ret >= 0) return ret;
+- }
++ /* Try xenstore. */
++ if (priv->opened[XEN_UNIFIED_XS_OFFSET]) {
++ ret = xenStoreListDomains (conn, ids, maxids);
++ if (ret >= 0) return ret;
++ }
+
++ /* Try HV. */
++ if (priv->opened[XEN_UNIFIED_HYPERVISOR_OFFSET]) {
++ ret = xenHypervisorListDomains (conn, ids, maxids);
++ if (ret >= 0) return ret;
++ }
++
++ /* Try xend. */
++ if (priv->opened[XEN_UNIFIED_XEND_OFFSET]) {
++ ret = xenDaemonListDomains (conn, ids, maxids);
++ if (ret >= 0) return ret;
++ }
++
++ /* Try proxy. */
++ if (priv->opened[XEN_UNIFIED_PROXY_OFFSET]) {
++ ret = xenProxyListDomains (conn, ids, maxids);
++ if (ret >= 0) return ret;
++ }
+ return -1;
+ }
+
+diff --git a/src/xend_internal.c b/src/xend_internal.c
+index 2e1a8d1..9f1ad42 100644
+--- a/src/xend_internal.c
++++ b/src/xend_internal.c
+@@ -3455,7 +3455,7 @@ xenDaemonGetVersion(virConnectPtr conn, unsigned long *hvVer)
+ *
+ * Returns the number of domain found or -1 in case of error
+ */
+-static int
++int
+ xenDaemonListDomains(virConnectPtr conn, int *ids, int maxids)
+ {
+ struct sexpr *root = NULL;
+diff --git a/src/xend_internal.h b/src/xend_internal.h
+index 12fa379..af90290 100644
+--- a/src/xend_internal.h
++++ b/src/xend_internal.h
+@@ -178,5 +178,6 @@ int xenDaemonDomainMigratePrepare (virConnectPtr dconn, char **cookie, int *cook
+ int xenDaemonDomainMigratePerform (virDomainPtr domain, const char *cookie, int cookielen, const char *uri, unsigned long flags, const char *dname, unsigned long resource);
+
+ int xenDaemonDomainBlockPeek (virDomainPtr domain, const char *path, unsigned long long offset, size_t size, void *buffer);
++int xenDaemonListDomains(virConnectPtr conn, int *ids, int maxids);
+
+ #endif /* __XEND_INTERNAL_H_ */
+--
+1.6.0.3
+
diff --git a/debian/patches/series b/debian/patches/series
index cb053c4..a950046 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -3,3 +3,4 @@
0003-allow-libvirt-group-to-access-the-socket.patch
0004-support-virtio-and-scsi-disks-in-qemudDomainBlockSta.patch
0005-fix-define-vs.-defined-typos.patch
+0006-xen-prefer-xenstoraged-driver-for-listDomains.patch
--
Libvirt debian packaging
More information about the Pkg-libvirt-commits
mailing list