[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