Hello community,
here is the log from the commit of package xen for openSUSE:Factory
checked in at Mon Apr 26 23:23:40 CEST 2010.
--------
--- xen/xen.changes 2010-04-16 23:40:18.000000000 +0200
+++ xen/xen.changes 2010-04-26 21:37:50.000000000 +0200
@@ -1,0 +2,12 @@
+Wed Apr 21 21:15:04 MDT 2010 - jfehlig@novell.com
+
+- bnc#596442 - Preserve device config on domain start failure
+ xend-preserve-devs.patch
+
+-------------------------------------------------------------------
+Tue Apr 20 15:18:31 MDT 2010 - jfehlig@novell.com
+
+- bnc#597770 - insserv reports a loop between xendomains and
+ openais. Remove openais from Should-Start in xendomains script.
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
Old:
----
blktap-script.patch
cpu-pools-fixes.patch
ioemu-subtype.patch
New:
----
21189-x86-emulate-clflush.patch
21193-blktap-script.patch
21194-ioemu-subtype.patch
21225-conring-iommu.patch
xend-preserve-devs.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xen.spec ++++++
--- /var/tmp/diff_new_pack.fZw4wA/_old 2010-04-26 23:19:12.000000000 +0200
+++ /var/tmp/diff_new_pack.fZw4wA/_new 2010-04-26 23:19:12.000000000 +0200
@@ -26,11 +26,7 @@
%define xen_build_dir xen-4.0.0-testing
%define with_kmp 1
BuildRequires: LibVNCServer-devel SDL-devel acpica automake bin86 curl-devel dev86 graphviz latex2html libjpeg-devel libxml2-devel ncurses-devel openssl openssl-devel pciutils-devel python-devel texinfo transfig
-%if %suse_version >= 1030
BuildRequires: texlive texlive-latex
-%else
-BuildRequires: te_ams te_latex tetex
-%endif
%ifarch x86_64
BuildRequires: glibc-32bit glibc-devel-32bit
%define max_cpus 256
@@ -43,7 +39,7 @@
BuildRequires: kernel-source kernel-syms module-init-tools xorg-x11
%endif
Version: 4.0.0_21091_01
-Release: 1
+Release: 2
License: GPLv2+
Group: System/Kernel
AutoReqProv: on
@@ -83,8 +79,11 @@
Patch2: 21128-domain-save-flush.patch
Patch3: 21150-shadow-race.patch
Patch4: 21160-sysctl-debug-keys.patch
-Patch5: blktap-script.patch
-Patch6: ioemu-subtype.patch
+Patch5: 21189-x86-emulate-clflush.patch
+Patch6: 21193-blktap-script.patch
+Patch7: 21194-ioemu-subtype.patch
+Patch8: 21225-conring-iommu.patch
+Patch9: xend-preserve-devs.patch
# Our patches
Patch300: xen-config.diff
Patch301: xend-config.diff
@@ -145,7 +144,6 @@
Patch367: cpu-pools-libxen.patch
Patch368: cpu-pools-xmtest.patch
Patch369: cpu-pools-docs.patch
-Patch370: cpu-pools-fixes.patch
# Patches for snapshot support
Patch400: snapshot-ioemu-save.patch
Patch401: snapshot-ioemu-restore.patch
@@ -161,14 +159,14 @@
Patch420: blktapctrl-default-to-ioemu.patch
Patch421: ioemu-blktap-barriers.patch
# Other bug fixes or features
-Patch422: bdrv_open2_fix_flags.patch
-Patch423: bdrv_open2_flags_2.patch
-Patch424: ioemu-7615-qcow2-fix-alloc_cluster_link_l2.patch
-Patch425: ioemu-bdrv-open-CACHE_WB.patch
-Patch426: xen-ioemu-hvm-pv-support.diff
-Patch427: qemu-dm-segfault.patch
-Patch428: hibernate.patch
-Patch429: del_usb_xend_entry.patch
+Patch423: bdrv_open2_fix_flags.patch
+Patch424: bdrv_open2_flags_2.patch
+Patch425: ioemu-7615-qcow2-fix-alloc_cluster_link_l2.patch
+Patch426: ioemu-bdrv-open-CACHE_WB.patch
+Patch427: xen-ioemu-hvm-pv-support.diff
+Patch428: qemu-dm-segfault.patch
+Patch429: hibernate.patch
+Patch430: del_usb_xend_entry.patch
# Jim's domain lock patch
Patch450: xend-domain-lock.patch
# Hypervisor and PV driver Patches
@@ -534,6 +532,9 @@
%patch4 -p1
%patch5 -p1
%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
%patch300 -p1
%patch301 -p1
%patch302 -p1
@@ -592,7 +593,6 @@
%patch367 -p1
%patch368 -p1
%patch369 -p1
-%patch370 -p1
%patch400 -p1
%patch401 -p1
%patch402 -p1
@@ -605,7 +605,6 @@
%patch415 -p1
%patch420 -p1
%patch421 -p1
-%patch422 -p1
%patch423 -p1
%patch424 -p1
%patch425 -p1
@@ -613,6 +612,7 @@
%patch427 -p1
%patch428 -p1
%patch429 -p1
+%patch430 -p1
%patch450 -p1
%patch500 -p1
%patch501 -p1
++++++ 21189-x86-emulate-clflush.patch ++++++
# HG changeset patch
# User Keir Fraser
# Date 1271353678 -3600
# Node ID d18e6a6c618af4f25a9e1a57c9e3eac55921678c
# Parent ffffddc4b1e030cce6bd4d12c4409c94599c1abf
x86_emulate: Emulate CLFLUSH instruction
We recently found that FreeBSD 8.0 guest failed to install and boot on
Xen. The reason was that FreeBSD detected clflush feature and invoked
this instruction to flush MMIO space. This caused a page fault; but
x86_emulate.c failed to emulate this instruction (not supported). As a
result, a page fault was detected inside FreeBSD. A similar issue was
reported earlier.
http://lists.xensource.com/archives/html/xen-devel/2010-03/msg00362.html
From: Wei Huang
Signed-off-by: Keir Fraser
Index: xen-4.0.0-testing/xen/arch/x86/x86_emulate/x86_emulate.c
===================================================================
--- xen-4.0.0-testing.orig/xen/arch/x86/x86_emulate/x86_emulate.c
+++ xen-4.0.0-testing/xen/arch/x86/x86_emulate/x86_emulate.c
@@ -227,7 +227,8 @@ static uint8_t twobyte_table[256] = {
DstMem|SrcReg|ModRM, DstMem|SrcReg|ModRM, 0, 0,
/* 0xA8 - 0xAF */
ImplicitOps, ImplicitOps, 0, DstBitBase|SrcReg|ModRM,
- DstMem|SrcReg|ModRM, DstMem|SrcReg|ModRM, 0, DstReg|SrcMem|ModRM,
+ DstMem|SrcReg|ModRM, DstMem|SrcReg|ModRM,
+ ImplicitOps|ModRM, DstReg|SrcMem|ModRM,
/* 0xB0 - 0xB7 */
ByteOp|DstMem|SrcReg|ModRM, DstMem|SrcReg|ModRM,
DstReg|SrcMem|ModRM|Mov, DstBitBase|SrcReg|ModRM,
@@ -4008,6 +4009,19 @@ x86_emulate(
emulate_2op_SrcV_nobyte("bts", src, dst, _regs.eflags);
break;
+ case 0xae: /* Grp15 */
+ switch ( modrm_reg & 7 )
+ {
+ case 7: /* clflush */
+ fail_if(ops->wbinvd == NULL);
+ if ( (rc = ops->wbinvd(ctxt)) != 0 )
+ goto done;
+ break;
+ default:
+ goto cannot_emulate;
+ }
+ break;
+
case 0xaf: /* imul */
_regs.eflags &= ~(EFLG_OF|EFLG_CF);
switch ( dst.bytes )
++++++ 21193-blktap-script.patch ++++++
# HG changeset patch
# User Keir Fraser
# Date 1271663923 -3600
# Node ID ae1abcdd4a670e34509e39d5280834a75afc0f6a
# Parent 6860c523d2daf1d110b130a9596469a0957b4032
tools/hotplug/Linux/blktap: remove optional tapdisk: prefix
Perhaps this should even be further generalized (e.g. to remove any
"[!/]*:" pattern prefixes) to be more forward compatible?
Signed-off-by: Jan Beulich
diff -r 6860c523d2da -r ae1abcdd4a67 tools/hotplug/Linux/blktap
--- a/tools/hotplug/Linux/blktap Mon Apr 19 08:55:33 2010 +0100
+++ b/tools/hotplug/Linux/blktap Mon Apr 19 08:58:43 2010 +0100
@@ -59,6 +59,7 @@
if [ -n "$t" ]
then
p=$(xenstore_read "$XENBUS_PATH/params")
+ p=${p#tapdisk:}
# if we have a ':', chew from head including :
if echo $p | grep -q \:
then
++++++ 21194-ioemu-subtype.patch ++++++
diff -r c02cc832cb2d tools/python/xen/xend/server/BlktapController.py
--- a/tools/python/xen/xend/server/BlktapController.py Tue Apr 13 18:19:33 2010 +0100
+++ b/tools/python/xen/xend/server/BlktapController.py Fri Apr 16 12:05:39 2010 -0600
@@ -189,7 +189,7 @@
blktap2_installed=1;
if typ in ('tap'):
- if subtyp in ('tapdisk'):
+ if subtyp in ('tapdisk', 'ioemu'):
if params not in blktap2_disk_types or not blktap2_installed:
# pass this device off to BlktapController
log.warn('WARNING: using deprecated blktap module')
++++++ 21225-conring-iommu.patch ++++++
# HG changeset patch
# User Keir Fraser
# Date 1271954636 -3600
# Node ID 2b97855a629f1d79e1d075a6d2a8b569018b2094
# Parent a7947fd90328287dd097294b241753063c858597
console: Make initial static console buffer __initdata.
The previous scheme --- freeing an area of BSS --- did not interact
nicely with device passthrough as IOMMU will not have any Xen BSS area
in guest device pagetables. Hence if the freed BSS space gets
allocated to a guest, DMAs to guest's own memory can fail.
The simple solution here is to always free the static buffer at end of
boot (initmem is specially handled for IOMMUs) and require a
dynamically-allocated buffer always to be created.
Signed-off-by: Keir Fraser
--- a/xen/drivers/char/console.c
+++ b/xen/drivers/char/console.c
@@ -65,11 +65,7 @@ size_param("conring_size", opt_conring_s
#define _CONRING_SIZE 16384
#define CONRING_IDX_MASK(i) ((i)&(conring_size-1))
-static char
-#if _CONRING_SIZE >= PAGE_SIZE
- __attribute__((__section__(".bss.page_aligned"), __aligned__(PAGE_SIZE)))
-#endif
- _conring[_CONRING_SIZE];
+static char __initdata _conring[_CONRING_SIZE];
static char *__read_mostly conring = _conring;
static uint32_t __read_mostly conring_size = _CONRING_SIZE;
static uint32_t conringc, conringp;
@@ -596,25 +592,20 @@ void __init console_init_preirq(void)
void __init console_init_postirq(void)
{
char *ring;
- unsigned int i;
+ unsigned int i, order;
serial_init_postirq();
if ( !opt_conring_size )
opt_conring_size = num_present_cpus() << (9 + xenlog_lower_thresh);
- /* Round size down to a power of two. */
- while ( opt_conring_size & (opt_conring_size - 1) )
- opt_conring_size &= opt_conring_size - 1;
- if ( opt_conring_size < conring_size )
- return;
-
- ring = alloc_xenheap_pages(get_order_from_bytes(opt_conring_size), 0);
- if ( ring == NULL )
+
+ order = get_order_from_bytes(max(opt_conring_size, conring_size));
+ while ( (ring = alloc_xenheap_pages(order, 0)) == NULL )
{
- printk("Unable to allocate console ring of %u bytes.\n",
- opt_conring_size);
- return;
+ BUG_ON(order == 0);
+ order--;
}
+ opt_conring_size = PAGE_SIZE << order;
spin_lock_irq(&console_lock);
for ( i = conringc ; i != conringp; i++ )
@@ -625,8 +616,6 @@ void __init console_init_postirq(void)
spin_unlock_irq(&console_lock);
printk("Allocated console ring of %u KiB.\n", opt_conring_size >> 10);
-
- init_xenheap_pages(__pa(_conring), __pa(_conring + _CONRING_SIZE));
}
void __init console_endboot(void)
++++++ 32on64-extra-mem.patch ++++++
--- /var/tmp/diff_new_pack.fZw4wA/_old 2010-04-26 23:19:12.000000000 +0200
+++ /var/tmp/diff_new_pack.fZw4wA/_new 2010-04-26 23:19:12.000000000 +0200
@@ -2,7 +2,7 @@
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendDomainInfo.py
-@@ -2909,7 +2909,7 @@ class XendDomainInfo:
+@@ -2913,7 +2913,7 @@ class XendDomainInfo:
self.guest_bitsize = self.image.getBitSize()
# Make sure there's enough RAM available for the domain
++++++ cpu-pools-docs.patch ++++++
--- /var/tmp/diff_new_pack.fZw4wA/_old 2010-04-26 23:19:13.000000000 +0200
+++ /var/tmp/diff_new_pack.fZw4wA/_new 2010-04-26 23:19:13.000000000 +0200
@@ -1,7 +1,5 @@
-Index: xen-4.0.0-testing/docs/xen-api/coversheet.tex
-===================================================================
---- xen-4.0.0-testing.orig/docs/xen-api/coversheet.tex
-+++ xen-4.0.0-testing/docs/xen-api/coversheet.tex
+--- a/docs/xen-api/coversheet.tex
++++ b/docs/xen-api/coversheet.tex
@@ -52,6 +52,7 @@ Mike Day, IBM & Daniel Veillard, Red Hat
Jim Fehlig, Novell & Tom Wilkie, University of Cambridge \\
Jon Harrop, XenSource & Yosuke Iwamatsu, NEC \\
@@ -10,10 +8,8 @@
\end{tabular}
\end{large}
-Index: xen-4.0.0-testing/docs/xen-api/revision-history.tex
-===================================================================
---- xen-4.0.0-testing.orig/docs/xen-api/revision-history.tex
-+++ xen-4.0.0-testing/docs/xen-api/revision-history.tex
+--- a/docs/xen-api/revision-history.tex
++++ b/docs/xen-api/revision-history.tex
@@ -50,6 +50,12 @@
between classes. Added host.PSCSI\_HBAs and VM.DSCSI\_HBAs
fields.\tabularnewline
@@ -22,15 +18,13 @@
+ Added definitions of new classes cpu\_pool. Updated the table
+ and the diagram representing relationships between classes.
+ Added fields host.resident\_cpu\_pools, VM.cpu\_pool and
-+ host\_cpu.cpu\_pool.
++ host\_cpu.cpu\_pool.\tabularnewline
+ \hline
\end{tabular}
\end{center}
\end{flushleft}
-Index: xen-4.0.0-testing/docs/xen-api/xenapi-coversheet.tex
-===================================================================
---- xen-4.0.0-testing.orig/docs/xen-api/xenapi-coversheet.tex
-+++ xen-4.0.0-testing/docs/xen-api/xenapi-coversheet.tex
+--- a/docs/xen-api/xenapi-coversheet.tex
++++ b/docs/xen-api/xenapi-coversheet.tex
@@ -17,12 +17,12 @@
\newcommand{\coversheetlogo}{xen.eps}
@@ -46,10 +40,8 @@
%% Document authors
\newcommand{\docauthors}{
-Index: xen-4.0.0-testing/docs/xen-api/xenapi-datamodel-graph.dot
-===================================================================
---- xen-4.0.0-testing.orig/docs/xen-api/xenapi-datamodel-graph.dot
-+++ xen-4.0.0-testing/docs/xen-api/xenapi-datamodel-graph.dot
+--- a/docs/xen-api/xenapi-datamodel-graph.dot
++++ b/docs/xen-api/xenapi-datamodel-graph.dot
@@ -14,7 +14,7 @@ fontname="Verdana";
node [ shape=box ]; session VM host network VIF PIF SR VDI VBD PBD user;
@@ -67,10 +59,8 @@
+cpu_pool -> VM [ arrowhead="crow", arrowtail="none" ]
+host -> cpu_pool [ arrowhead="crow", arrowtail="none" ]
}
-Index: xen-4.0.0-testing/docs/xen-api/xenapi-datamodel.tex
-===================================================================
---- xen-4.0.0-testing.orig/docs/xen-api/xenapi-datamodel.tex
-+++ xen-4.0.0-testing/docs/xen-api/xenapi-datamodel.tex
+--- a/docs/xen-api/xenapi-datamodel.tex
++++ b/docs/xen-api/xenapi-datamodel.tex
@@ -56,6 +56,7 @@ Name & Description \\
{\tt debug} & A basic class for testing \\
{\tt XSPolicy} & A class for handling Xen Security Policies \\
@@ -89,7 +79,7 @@
\hline
\end{tabular}\end{center}
-@@ -499,6 +503,56 @@ error code and a message describing the
+@@ -499,6 +503,56 @@ error code and a message describing the
\begin{verbatim}SECURITY_ERROR(xserr, message)\end{verbatim}
\begin{center}\rule{10em}{0.1pt}\end{center}
++++++ cpu-pools-libxc.patch ++++++
--- /var/tmp/diff_new_pack.fZw4wA/_old 2010-04-26 23:19:13.000000000 +0200
+++ /var/tmp/diff_new_pack.fZw4wA/_new 2010-04-26 23:19:13.000000000 +0200
@@ -1,7 +1,5 @@
-Index: xen-4.0.0-testing/tools/libxc/Makefile
-===================================================================
---- xen-4.0.0-testing.orig/tools/libxc/Makefile
-+++ xen-4.0.0-testing/tools/libxc/Makefile
+--- a/tools/libxc/Makefile
++++ b/tools/libxc/Makefile
@@ -8,6 +8,7 @@ CTRL_SRCS-y :=
CTRL_SRCS-y += xc_core.c
CTRL_SRCS-$(CONFIG_X86) += xc_core_x86.c
@@ -10,10 +8,8 @@
CTRL_SRCS-y += xc_domain.c
CTRL_SRCS-y += xc_evtchn.c
CTRL_SRCS-y += xc_misc.c
-Index: xen-4.0.0-testing/tools/libxc/xc_cpupool.c
-===================================================================
--- /dev/null
-+++ xen-4.0.0-testing/tools/libxc/xc_cpupool.c
++++ b/tools/libxc/xc_cpupool.c
@@ -0,0 +1,154 @@
+/******************************************************************************
+ * xc_cpupool.c
@@ -56,9 +52,9 @@
+ return do_domctl_save(xc_handle, &domctl);
+}
+
-+int xc_cpupool_getinfo(int xc_handle,
++int xc_cpupool_getinfo(int xc_handle,
+ uint32_t first_poolid,
-+ uint32_t n_max,
++ uint32_t n_max,
+ xc_cpupoolinfo_t *info)
+{
+ int err = 0;
@@ -169,42 +165,9 @@
+
+ return 0;
+}
-Index: xen-4.0.0-testing/tools/libxc/xc_domain.c
-===================================================================
---- xen-4.0.0-testing.orig/tools/libxc/xc_domain.c
-+++ xen-4.0.0-testing/tools/libxc/xc_domain.c
-@@ -6,6 +6,7 @@
- * Copyright (c) 2003, K A Fraser.
- */
-
-+#include
- #include "xc_private.h"
- #include "xg_save_restore.h"
- #include
-@@ -15,15 +16,21 @@ int xc_domain_create(int xc_handle,
- uint32_t ssidref,
- xen_domain_handle_t handle,
- uint32_t flags,
-- uint32_t *pdomid)
-+ uint32_t *pdomid, ...)
- {
- int err;
-+ va_list ap;
- DECLARE_DOMCTL;
-
- domctl.cmd = XEN_DOMCTL_createdomain;
- domctl.domain = (domid_t)*pdomid;
- domctl.u.createdomain.ssidref = ssidref;
- domctl.u.createdomain.flags = flags;
-+ if ( flags & XEN_DOMCTL_CDF_pool ) {
-+ va_start(ap, pdomid);
-+ domctl.u.createdomain.cpupool = va_arg(ap, uint32_t);
-+ va_end(ap);
-+ }
- memcpy(domctl.u.createdomain.handle, handle, sizeof(xen_domain_handle_t));
- if ( (err = do_domctl(xc_handle, &domctl)) != 0 )
- return err;
-@@ -220,6 +227,7 @@ int xc_domain_getinfo(int xc_handle,
+--- a/tools/libxc/xc_domain.c
++++ b/tools/libxc/xc_domain.c
+@@ -220,6 +220,7 @@ int xc_domain_getinfo(int xc_handle,
info->cpu_time = domctl.u.getdomaininfo.cpu_time;
info->nr_online_vcpus = domctl.u.getdomaininfo.nr_online_vcpus;
info->max_vcpu_id = domctl.u.getdomaininfo.max_vcpu_id;
@@ -212,10 +175,8 @@
memcpy(info->handle, domctl.u.getdomaininfo.handle,
sizeof(xen_domain_handle_t));
-Index: xen-4.0.0-testing/tools/libxc/xc_private.h
-===================================================================
---- xen-4.0.0-testing.orig/tools/libxc/xc_private.h
-+++ xen-4.0.0-testing/tools/libxc/xc_private.h
+--- a/tools/libxc/xc_private.h
++++ b/tools/libxc/xc_private.h
@@ -164,6 +164,19 @@ static inline int do_domctl(int xc_handl
return ret;
}
@@ -236,10 +197,8 @@
static inline int do_sysctl(int xc_handle, struct xen_sysctl *sysctl)
{
int ret = -1;
-Index: xen-4.0.0-testing/tools/libxc/xenctrl.h
-===================================================================
---- xen-4.0.0-testing.orig/tools/libxc/xenctrl.h
-+++ xen-4.0.0-testing/tools/libxc/xenctrl.h
+--- a/tools/libxc/xenctrl.h
++++ b/tools/libxc/xenctrl.h
@@ -171,6 +171,7 @@ typedef struct xc_dominfo {
unsigned int nr_online_vcpus;
unsigned int max_vcpu_id;
@@ -248,15 +207,6 @@
} xc_dominfo_t;
typedef xen_domctl_getdomaininfo_t xc_domaininfo_t;
-@@ -207,7 +208,7 @@ int xc_domain_create(int xc_handle,
- uint32_t ssidref,
- xen_domain_handle_t handle,
- uint32_t flags,
-- uint32_t *pdomid);
-+ uint32_t *pdomid, ...);
-
-
- /* Functions to produce a dump of a given domain
@@ -502,6 +503,100 @@ int xc_domain_setdebugging(int xc_handle
unsigned int enable);
++++++ cpu-pools-python.patch ++++++
--- /var/tmp/diff_new_pack.fZw4wA/_old 2010-04-26 23:19:13.000000000 +0200
+++ /var/tmp/diff_new_pack.fZw4wA/_new 2010-04-26 23:19:13.000000000 +0200
@@ -1,42 +1,17 @@
-Index: xen-4.0.0-testing/tools/python/xen/lowlevel/xc/xc.c
-===================================================================
---- xen-4.0.0-testing.orig/tools/python/xen/lowlevel/xc/xc.c
-+++ xen-4.0.0-testing/tools/python/xen/lowlevel/xc/xc.c
-@@ -97,17 +97,18 @@ static PyObject *pyxc_domain_create(XcOb
- PyObject *args,
- PyObject *kwds)
- {
-- uint32_t dom = 0, ssidref = 0, flags = 0, target = 0;
-+ uint32_t dom = 0, ssidref = 0, flags = 0, target = 0, cpupool = 0;
- int ret, i;
- PyObject *pyhandle = NULL;
- xen_domain_handle_t handle = {
- 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef,
- 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef };
+--- a/tools/python/xen/lowlevel/xc/xc.c
++++ b/tools/python/xen/lowlevel/xc/xc.c
+@@ -106,8 +106,8 @@ static PyObject *pyxc_domain_create(XcOb
-- static char *kwd_list[] = { "domid", "ssidref", "handle", "flags", "target", NULL };
-+ static char *kwd_list[] = { "domid", "ssidref", "handle", "flags", "target", "cpupool", NULL };
+ static char *kwd_list[] = { "domid", "ssidref", "handle", "flags", "target", NULL };
- if ( !PyArg_ParseTupleAndKeywords(args, kwds, "|iiOii", kwd_list,
- &dom, &ssidref, &pyhandle, &flags, &target))
-+ if ( !PyArg_ParseTupleAndKeywords(args, kwds, "|iiOiii", kwd_list, &dom,
-+ &ssidref, &pyhandle, &flags, &target,
-+ &cpupool))
++ if ( !PyArg_ParseTupleAndKeywords(args, kwds, "|iiOii", kwd_list, &dom,
++ &ssidref, &pyhandle, &flags, &target))
return NULL;
if ( pyhandle != NULL )
{
-@@ -124,8 +125,9 @@ static PyObject *pyxc_domain_create(XcOb
- }
- }
-
-+ flags |= XEN_DOMCTL_CDF_pool;
- if ( (ret = xc_domain_create(self->xc_handle, ssidref,
-- handle, flags, &dom)) < 0 )
-+ handle, flags, &dom, cpupool)) < 0 )
- return pyxc_error_to_exception();
-
- if ( target )
-@@ -329,7 +331,7 @@ static PyObject *pyxc_domain_getinfo(XcO
+@@ -329,7 +329,7 @@ static PyObject *pyxc_domain_getinfo(XcO
{
info_dict = Py_BuildValue(
"{s:i,s:i,s:i,s:i,s:i,s:i,s:i,s:i,s:i,s:i"
@@ -45,7 +20,7 @@
"domid", (int)info[i].domid,
"online_vcpus", info[i].nr_online_vcpus,
"max_vcpu_id", info[i].max_vcpu_id,
-@@ -344,7 +346,8 @@ static PyObject *pyxc_domain_getinfo(XcO
+@@ -344,7 +344,8 @@ static PyObject *pyxc_domain_getinfo(XcO
"cpu_time", (long long)info[i].cpu_time,
"maxmem_kb", (long long)info[i].max_memkb,
"ssidref", (int)info[i].ssidref,
@@ -55,7 +30,7 @@
pyhandle = PyList_New(sizeof(xen_domain_handle_t));
if ( (pyhandle == NULL) || (info_dict == NULL) )
{
-@@ -1751,6 +1754,179 @@ static PyObject *pyxc_dom_set_memshr(XcO
+@@ -1751,6 +1752,179 @@ static PyObject *pyxc_dom_set_memshr(XcO
return zero;
}
@@ -235,7 +210,7 @@
static PyMethodDef pyxc_methods[] = {
{ "handle",
-@@ -1866,7 +2042,8 @@ static PyMethodDef pyxc_methods[] = {
+@@ -1866,7 +2040,8 @@ static PyMethodDef pyxc_methods[] = {
" maxmem_kb [int]: Maximum memory limit, in kilobytes\n"
" cpu_time [long]: CPU time consumed, in nanoseconds\n"
" shutdown_reason [int]: Numeric code from guest OS, explaining "
@@ -245,7 +220,7 @@
{ "vcpu_getinfo",
(PyCFunction)pyxc_vcpu_getinfo,
-@@ -2264,6 +2441,66 @@ static PyMethodDef pyxc_methods[] = {
+@@ -2264,6 +2439,66 @@ static PyMethodDef pyxc_methods[] = {
" enable [int,0|1]: Disable or enable?\n"
"Returns: [int] 0 on success; -1 on error.\n" },
@@ -312,10 +287,8 @@
{ NULL, NULL, 0, NULL }
};
-Index: xen-4.0.0-testing/tools/python/xen/util/sxputils.py
-===================================================================
--- /dev/null
-+++ xen-4.0.0-testing/tools/python/xen/util/sxputils.py
++++ b/tools/python/xen/util/sxputils.py
@@ -0,0 +1,64 @@
+#============================================================================
+# This library is free software; you can redistribute it and/or
@@ -381,10 +354,8 @@
+ return sxphash
+
+
-Index: xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
-===================================================================
---- xen-4.0.0-testing.orig/tools/python/xen/xend/XendAPI.py
-+++ xen-4.0.0-testing/tools/python/xen/xend/XendAPI.py
+--- a/tools/python/xen/xend/XendAPI.py
++++ b/tools/python/xen/xend/XendAPI.py
@@ -51,6 +51,7 @@ from XendDPCI import XendDPCI
from XendPSCSI import XendPSCSI, XendPSCSI_HBA
from XendDSCSI import XendDSCSI, XendDSCSI_HBA
@@ -576,11 +547,9 @@
# Xen API: Class VBD
# ----------------------------------------------------------------
-Index: xen-4.0.0-testing/tools/python/xen/xend/XendCPUPool.py
-===================================================================
--- /dev/null
-+++ xen-4.0.0-testing/tools/python/xen/xend/XendCPUPool.py
-@@ -0,0 +1,896 @@
++++ b/tools/python/xen/xend/XendCPUPool.py
+@@ -0,0 +1,903 @@
+#============================================================================
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of version 2.1 of the GNU Lesser General Public
@@ -1130,7 +1099,7 @@
+ def pool_start(cls, poolname):
+ pool = cls.lookup_pool(poolname)
+ if not pool:
-+ raise VmError('unkown pool %s' % poolname)
++ raise VmError('unknown pool %s' % poolname)
+ try:
+ pool.activate()
+ except XendAPIError, ex:
@@ -1149,8 +1118,12 @@
+ for cpu_ref in pool_vals['host_CPUs'] ]
+ cpus.sort()
+ pool_vals['host_CPU_numbers'] = cpus
-+ vm_names = [ xd.get_vm_by_uuid(uuid).getName()
-+ for uuid in pool_vals['started_VMs'] ]
++ # query VMs names. Take in account, that a VM
++ # returned by get_all_records could be destroy, now
++ vm_names = [ vm.getName()
++ for vm in map(xd.get_vm_by_uuid,
++ pool_vals['started_VMs'])
++ if vm ]
+ pool_vals['started_VM_names'] = vm_names
+ pool_vals['auto_power_on'] = int(pool_vals['auto_power_on'])
+ sxprs += [[pool_uuid] + map2sxp(pool_vals)]
@@ -1161,7 +1134,7 @@
+ def pool_destroy(cls, poolname):
+ pool = cls.lookup_pool(poolname)
+ if not pool:
-+ raise VmError('unkown pool %s' % poolname)
++ raise VmError('unknown pool %s' % poolname)
+ try:
+ pool.deactivate()
+ if not pool.is_managed():
@@ -1172,7 +1145,7 @@
+ def pool_delete(cls, poolname):
+ pool = cls.lookup_pool(poolname)
+ if not pool:
-+ raise VmError('unkown pool %s' % poolname)
++ raise VmError('unknown pool %s' % poolname)
+ try:
+ pool.destroy()
+ except XendAPIError, ex:
@@ -1181,28 +1154,28 @@
+ def pool_cpu_add(cls, poolname, cpu):
+ pool = cls.lookup_pool(poolname)
+ if not pool:
-+ raise VmError('unkown pool %s' % poolname)
++ raise VmError('unknown pool %s' % poolname)
+ try:
+ cpu_ref = cls._cpu_number_to_ref(int(cpu))
+ if cpu_ref:
+ pool.add_host_CPU_live(cpu_ref)
+ else:
+ raise PoolError(XEND_ERROR_INVALID_CPU,
-+ 'CPU unkown')
++ 'CPU unknown')
+ except XendAPIError, ex:
+ raise VmError(ex.get_api_error())
+
+ def pool_cpu_remove(cls, poolname, cpu):
+ pool = cls.lookup_pool(poolname)
+ if not pool:
-+ raise VmError('unkown pool %s' % poolname)
++ raise VmError('unknown pool %s' % poolname)
+ try:
+ cpu_ref = cls._cpu_number_to_ref(int(cpu))
+ if cpu_ref:
+ pool.remove_host_CPU_live(cpu_ref)
+ else:
+ raise PoolError(XEND_ERROR_INVALID_CPU,
-+ 'CPU unkown')
++ 'CPU unknown')
+ except XendAPIError, ex:
+ raise VmError(ex.get_api_error())
+
@@ -1210,10 +1183,10 @@
+ dom = XendDomain.instance()
+ pool = cls.lookup_pool(poolname)
+ if not pool:
-+ raise VmError('unkown pool %s' % poolname)
++ raise VmError('unknown pool %s' % poolname)
+ dominfo = dom.domain_lookup_nr(domname)
+ if not dominfo:
-+ raise VmError('unkown domain %s' % domname)
++ raise VmError('unknown domain %s' % domname)
+ domid = dominfo.getDomid()
+ if domid is not None:
+ if domid == 0:
@@ -1443,8 +1416,11 @@
+ pool_uuid = None
+ try:
+ pool_id = int(id_or_name)
-+ # pool id given
++ # pool id given ?
+ pool_uuid = cls.query_pool_ref(pool_id)
++ if not pool_uuid:
++ # not found -> search name
++ pool_uuid = cls.get_by_name_label(id_or_name)
+ except ValueError:
+ # pool name given
+ pool_uuid = cls.get_by_name_label(id_or_name)
@@ -1477,10 +1453,8 @@
+
+ unbound_cpus = classmethod(unbound_cpus)
+
-Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
-===================================================================
---- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
-+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
+--- a/tools/python/xen/xend/XendConfig.py
++++ b/tools/python/xen/xend/XendConfig.py
@@ -128,6 +128,7 @@ XENAPI_CFG_TO_LEGACY_CFG = {
'PV_bootloader': 'bootloader',
'PV_bootloader_args': 'bootloader_args',
@@ -1521,10 +1495,8 @@
'superpages': 0,
'description': '',
}
-Index: xen-4.0.0-testing/tools/python/xen/xend/XendConstants.py
-===================================================================
---- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConstants.py
-+++ xen-4.0.0-testing/tools/python/xen/xend/XendConstants.py
+--- a/tools/python/xen/xend/XendConstants.py
++++ b/tools/python/xen/xend/XendConstants.py
@@ -133,6 +133,8 @@ VTPM_DELETE_SCRIPT = auxbin.scripts_dir(
XS_VMROOT = "/vm/"
@@ -1534,10 +1506,8 @@
NR_PCI_FUNC = 8
NR_PCI_DEV = 32
NR_PCI_DEVFN = NR_PCI_FUNC * NR_PCI_DEV
-Index: xen-4.0.0-testing/tools/python/xen/xend/XendDomainInfo.py
-===================================================================
---- xen-4.0.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py
-+++ xen-4.0.0-testing/tools/python/xen/xend/XendDomainInfo.py
+--- a/tools/python/xen/xend/XendDomainInfo.py
++++ b/tools/python/xen/xend/XendDomainInfo.py
@@ -60,6 +60,7 @@ from xen.xend.xenstore.xsutil import Get
from xen.xend.xenstore.xswatch import xswatch
from xen.xend.XendConstants import *
@@ -1558,7 +1528,7 @@
+ pool = XendCPUPool.lookup_pool(pool_name)
+
+ if pool is None:
-+ raise VmError("unkown pool %s" % pool_name)
++ raise VmError("unknown pool %s" % pool_name)
+ pool_id = pool.query_pool_id()
+ if pool_id is None:
+ raise VmError("pool %s not activated" % pool_name)
@@ -1566,15 +1536,19 @@
flags = (int(hvm) << 0) | (int(hap) << 1) | (int(s3_integrity) << 2) | (int(oos_off) << 3)
try:
-@@ -2573,6 +2587,7 @@ class XendDomainInfo:
- ssidref = ssidref,
- handle = uuid.fromString(self.info['uuid']),
- flags = flags,
-+ cpupool = pool_id,
- target = self.info.target())
- except Exception, e:
- # may get here if due to ACM the operation is not permitted
-@@ -3613,6 +3628,11 @@ class XendDomainInfo:
+@@ -2586,6 +2600,11 @@ class XendDomainInfo:
+ failmsg += ', error=%i' % int(self.domid)
+ raise VmError(failmsg)
+
++ try:
++ xc.cpupool_movedomain(pool_id, self.domid)
++ except Exception, e:
++ raise VmError('Moving domain to target pool failed')
++
+ self.dompath = GetDomainPath(self.domid)
+
+ self._recreateDom()
+@@ -3613,6 +3632,11 @@ class XendDomainInfo:
retval = xc.sched_credit_domain_get(self.getDomid())
return retval
@@ -1586,10 +1560,8 @@
def get_power_state(self):
return XEN_API_VM_POWER_STATE[self._stateGet()]
def get_platform(self):
-Index: xen-4.0.0-testing/tools/python/xen/xend/XendError.py
-===================================================================
---- xen-4.0.0-testing.orig/tools/python/xen/xend/XendError.py
-+++ xen-4.0.0-testing/tools/python/xen/xend/XendError.py
+--- a/tools/python/xen/xend/XendError.py
++++ b/tools/python/xen/xend/XendError.py
@@ -18,6 +18,7 @@
from xmlrpclib import Fault
@@ -1625,10 +1597,8 @@
class VDIError(XendAPIError):
def __init__(self, error, vdi):
XendAPIError.__init__(self)
-Index: xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
-===================================================================
---- xen-4.0.0-testing.orig/tools/python/xen/xend/XendNode.py
-+++ xen-4.0.0-testing/tools/python/xen/xend/XendNode.py
+--- a/tools/python/xen/xend/XendNode.py
++++ b/tools/python/xen/xend/XendNode.py
@@ -43,6 +43,7 @@ from XendStateStore import XendStateStor
from XendMonitor import XendMonitor
from XendPPCI import XendPPCI
@@ -1702,10 +1672,8 @@
'max_free_memory',
'max_para_memory',
'max_hvm_memory',
-Index: xen-4.0.0-testing/tools/python/xen/xend/server/SrvServer.py
-===================================================================
---- xen-4.0.0-testing.orig/tools/python/xen/xend/server/SrvServer.py
-+++ xen-4.0.0-testing/tools/python/xen/xend/server/SrvServer.py
+--- a/tools/python/xen/xend/server/SrvServer.py
++++ b/tools/python/xen/xend/server/SrvServer.py
@@ -52,6 +52,7 @@ from xen.xend import XendNode, XendOptio
from xen.xend.XendLogging import log
from xen.xend.XendClient import XEN_API_SOCKET
@@ -1727,10 +1695,8 @@
# Reaching this point means we can auto start domains
try:
xenddomain().autostart_domains()
-Index: xen-4.0.0-testing/tools/python/xen/xend/server/XMLRPCServer.py
-===================================================================
---- xen-4.0.0-testing.orig/tools/python/xen/xend/server/XMLRPCServer.py
-+++ xen-4.0.0-testing/tools/python/xen/xend/server/XMLRPCServer.py
+--- a/tools/python/xen/xend/server/XMLRPCServer.py
++++ b/tools/python/xen/xend/server/XMLRPCServer.py
@@ -33,6 +33,7 @@ from xen.xend.XendClient import XML_RPC_
from xen.xend.XendConstants import DOM_STATE_RUNNING
from xen.xend.XendLogging import log
@@ -1762,10 +1728,8 @@
# Functions in XendNode and XendDmesg
for type, lst, n in [(XendNode,
['info', 'pciinfo', 'send_debug_keys',
-Index: xen-4.0.0-testing/tools/python/xen/xm/create.dtd
-===================================================================
---- xen-4.0.0-testing.orig/tools/python/xen/xm/create.dtd
-+++ xen-4.0.0-testing/tools/python/xen/xm/create.dtd
+--- a/tools/python/xen/xm/create.dtd
++++ b/tools/python/xen/xm/create.dtd
@@ -50,6 +50,7 @@
s3_integrity CDATA #REQUIRED
vcpus_max CDATA #REQUIRED
@@ -1774,10 +1738,8 @@
actions_after_shutdown %NORMAL_EXIT; #REQUIRED
actions_after_reboot %NORMAL_EXIT; #REQUIRED
actions_after_crash %CRASH_BEHAVIOUR; #REQUIRED
-Index: xen-4.0.0-testing/tools/python/xen/xm/create.py
-===================================================================
---- xen-4.0.0-testing.orig/tools/python/xen/xm/create.py
-+++ xen-4.0.0-testing/tools/python/xen/xm/create.py
+--- a/tools/python/xen/xm/create.py
++++ b/tools/python/xen/xm/create.py
@@ -659,6 +659,10 @@ gopts.var('suppress_spurious_page_faults
fn=set_bool, default=None,
use="""Do not inject spurious page faults into this guest""")
@@ -1798,10 +1760,8 @@
config_image = configure_image(vals)
if vals.bootloader:
-Index: xen-4.0.0-testing/tools/python/xen/xm/main.py
-===================================================================
---- xen-4.0.0-testing.orig/tools/python/xen/xm/main.py
-+++ xen-4.0.0-testing/tools/python/xen/xm/main.py
+--- a/tools/python/xen/xm/main.py
++++ b/tools/python/xen/xm/main.py
@@ -56,6 +56,7 @@ from xen.util.xmlrpcclient import Server
import xen.util.xsm.xsm as security
from xen.util.xsm.xsm import XSMError
@@ -1982,7 +1942,7 @@
+ if len(refs) > 0:
+ return refs[0]
+ else:
-+ err('unkown pool name')
++ err('unknown pool name')
+ sys.exit(1)
+
+def xm_pool_start(args):
@@ -2110,7 +2070,7 @@
+ cpu_ref = [ c_rec['uuid'] for c_rec in cpu_ref_list.values()
+ if c_rec['number'] == args[1] ]
+ if len(cpu_ref) == 0:
-+ err('cpu number unkown')
++ err('cpu number unknown')
+ else:
+ server.xenapi.cpu_pool.add_host_CPU_live(ref, cpu_ref[0])
+ else:
@@ -2124,7 +2084,7 @@
+ cpu_ref = [ c_rec['uuid'] for c_rec in cpu_ref_list.values()
+ if c_rec['number'] == args[1] ]
+ if len(cpu_ref) == 0:
-+ err('cpu number unkown')
++ err('cpu number unknown')
+ else:
+ server.xenapi.cpu_pool.remove_host_CPU_live(ref, cpu_ref[0])
+ else:
@@ -2167,10 +2127,8 @@
]
for c in IMPORTED_COMMANDS:
-Index: xen-4.0.0-testing/tools/python/xen/xm/pool-create.py
-===================================================================
--- /dev/null
-+++ xen-4.0.0-testing/tools/python/xen/xm/pool-create.py
++++ b/tools/python/xen/xm/pool-create.py
@@ -0,0 +1,51 @@
+#============================================================================
+# This library is free software; you can redistribute it and/or
@@ -2223,10 +2181,8 @@
+if __name__ == '__main__':
+ main(sys.argv)
+
-Index: xen-4.0.0-testing/tools/python/xen/xm/pool-new.py
-===================================================================
--- /dev/null
-+++ xen-4.0.0-testing/tools/python/xen/xm/pool-new.py
++++ b/tools/python/xen/xm/pool-new.py
@@ -0,0 +1,50 @@
+#============================================================================
+# This library is free software; you can redistribute it and/or
@@ -2278,10 +2234,8 @@
+if __name__ == '__main__':
+ main(sys.argv)
+
-Index: xen-4.0.0-testing/tools/python/xen/xm/pool.py
-===================================================================
--- /dev/null
-+++ xen-4.0.0-testing/tools/python/xen/xm/pool.py
++++ b/tools/python/xen/xm/pool.py
@@ -0,0 +1,236 @@
+#============================================================================
+# This library is free software; you can redistribute it and/or
@@ -2519,10 +2473,8 @@
+def help():
+ return str(GOPTS)
+
-Index: xen-4.0.0-testing/tools/python/xen/xm/xenapi_create.py
-===================================================================
---- xen-4.0.0-testing.orig/tools/python/xen/xm/xenapi_create.py
-+++ xen-4.0.0-testing/tools/python/xen/xm/xenapi_create.py
+--- a/tools/python/xen/xm/xenapi_create.py
++++ b/tools/python/xen/xm/xenapi_create.py
@@ -310,6 +310,8 @@ class xenapi_create:
get_child_nodes_as_dict(vm, "platform", "key", "value"),
"other_config":
++++++ cpupools-core-fixup.patch ++++++
--- /var/tmp/diff_new_pack.fZw4wA/_old 2010-04-26 23:19:13.000000000 +0200
+++ /var/tmp/diff_new_pack.fZw4wA/_new 2010-04-26 23:19:13.000000000 +0200
@@ -36,7 +36,7 @@
static struct csched_private *csched_priv0 = NULL;
static void csched_tick(void *_cpu);
-@@ -1524,11 +1523,13 @@ static void csched_tick_resume(struct sc
+@@ -1517,11 +1516,13 @@ static void csched_tick_resume(struct sc
}
}
++++++ cpupools-core.patch ++++++
++++ 1295 lines (skipped)
++++ between xen/cpupools-core.patch
++++ and xen/cpupools-core.patch
++++++ hv_tools.patch ++++++
--- /var/tmp/diff_new_pack.fZw4wA/_old 2010-04-26 23:19:13.000000000 +0200
+++ /var/tmp/diff_new_pack.fZw4wA/_new 2010-04-26 23:19:13.000000000 +0200
@@ -2,7 +2,7 @@
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/lowlevel/xc/xc.c
+++ xen-4.0.0-testing/tools/python/xen/lowlevel/xc/xc.c
-@@ -946,16 +946,16 @@ static PyObject *pyxc_hvm_build(XcObject
+@@ -944,16 +944,16 @@ static PyObject *pyxc_hvm_build(XcObject
#endif
int i;
char *image;
@@ -24,7 +24,7 @@
return NULL;
memset(vcpu_avail, 0, sizeof(vcpu_avail));
-@@ -1007,6 +1007,7 @@ static PyObject *pyxc_hvm_build(XcObject
+@@ -1005,6 +1005,7 @@ static PyObject *pyxc_hvm_build(XcObject
va_hvm->checksum -= sum;
munmap(va_map, XC_PAGE_SIZE);
#endif
++++++ init.xendomains ++++++
--- /var/tmp/diff_new_pack.fZw4wA/_old 2010-04-26 23:19:13.000000000 +0200
+++ /var/tmp/diff_new_pack.fZw4wA/_new 2010-04-26 23:19:13.000000000 +0200
@@ -8,7 +8,7 @@
### BEGIN INIT INFO
# Provides: xendomains
# Required-Start: $syslog $remote_fs xend
-# Should-Start: iscsi o2cb ocfs2 openais
+# Should-Start: iscsi o2cb ocfs2
# Required-Stop: $syslog $remote_fs xend
# Should-Stop: iscsi
# Default-Start: 3 5
++++++ xend-domain-lock.patch ++++++
--- /var/tmp/diff_new_pack.fZw4wA/_old 2010-04-26 23:19:14.000000000 +0200
+++ /var/tmp/diff_new_pack.fZw4wA/_new 2010-04-26 23:19:14.000000000 +0200
@@ -23,7 +23,7 @@
+# Lock is placed in /<xend-domain-lock-path>/<domain-uuid>.
+# Default is /var/lib/xen/images/vm_locks/
+#
-+#(xend-domain-lock-path /var/lib/xend/domains)
++#(xend-domain-lock-path /var/lib/images/vm_locks)
+
+# External locking utility called by xend for acquiring/releasing
+# domain lock. By default /etc/xen/scripts/domain-lock will be used
@@ -91,7 +91,7 @@
XendTask.log_progress(0, 30, self._constructDomain)
XendTask.log_progress(31, 60, self._initDomain)
-@@ -2979,6 +2981,11 @@ class XendDomainInfo:
+@@ -2983,6 +2985,11 @@ class XendDomainInfo:
self._stateSet(DOM_STATE_HALTED)
self.domid = None # Do not push into _stateSet()!
@@ -103,7 +103,7 @@
finally:
self.refresh_shutdown_lock.release()
-@@ -4485,6 +4492,74 @@ class XendDomainInfo:
+@@ -4489,6 +4496,74 @@ class XendDomainInfo:
def has_device(self, dev_class, dev_uuid):
return (dev_uuid in self.info['%s_refs' % dev_class.lower()])
++++++ xend-preserve-devs.patch ++++++
Index: xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
===================================================================
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendConfig.py
+++ xen-4.0.0-testing/tools/python/xen/xend/XendConfig.py
@@ -1166,8 +1166,8 @@ class XendConfig(dict):
config.append(['VDI', dev_cfg.get('VDI', '')])
sxpr.append(['device', config])
+ found = True
- found = True
except:
log.exception("dumping sxp from device controllers")
pass
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org