Update to libvirt 0.8.8 RC1

OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=96
This commit is contained in:
James Fehlig 2011-02-11 18:46:10 +00:00 committed by Git OBS Bridge
parent 8c2cf66f24
commit 02626c868f
16 changed files with 64 additions and 429 deletions

View File

@ -1,89 +0,0 @@
commit 041973504f715bcff7de3b17cd258617244b79c4
Author: Jim Fehlig <jfehlig@novell.com>
Date: Wed Jan 5 15:16:57 2011 -0700
Add support for HAP feature to xen drivers
xen-unstable c/s 16931 introduced a per-domain setting for hvm
guests to enable/disable hardware assisted paging. If disabled,
software techniques such as shadow page tables are used. If enabled,
and the feature exists in underlying hardware, hardware support for
paging is used.
This provides implementation for mapping HAP setting to/from
domxml/native formats in xen drivers.
diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c
index 6ce0c3f..d3633ee 100644
--- a/src/xen/xend_internal.c
+++ b/src/xen/xend_internal.c
@@ -2210,6 +2210,8 @@ xenDaemonParseSxpr(virConnectPtr conn,
def->features |= (1 << VIR_DOMAIN_FEATURE_APIC);
if (sexpr_int(root, "domain/image/hvm/pae"))
def->features |= (1 << VIR_DOMAIN_FEATURE_PAE);
+ if (sexpr_int(root, "domain/image/hvm/hap"))
+ def->features |= (1 << VIR_DOMAIN_FEATURE_HAP);
/* Old XenD only allows localtime here for HVM */
if (sexpr_int(root, "domain/image/hvm/localtime"))
@@ -5923,6 +5925,8 @@ xenDaemonFormatSxpr(virConnectPtr conn,
virBufferAddLit(&buf, "(apic 1)");
if (def->features & (1 << VIR_DOMAIN_FEATURE_PAE))
virBufferAddLit(&buf, "(pae 1)");
+ if (def->features & (1 << VIR_DOMAIN_FEATURE_HAP))
+ virBufferAddLit(&buf, "(hap 1)");
virBufferAddLit(&buf, "(usb 1)");
diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c
index 4d6b41b..ec618aa 100644
--- a/src/xen/xm_internal.c
+++ b/src/xen/xm_internal.c
@@ -830,6 +830,10 @@ xenXMDomainConfigParse(virConnectPtr conn, virConfPtr conf) {
goto cleanup;
else if (val)
def->features |= (1 << VIR_DOMAIN_FEATURE_APIC);
+ if (xenXMConfigGetBool(conf, "hap", &val, 0) < 0)
+ goto cleanup;
+ else if (val)
+ def->features |= (1 << VIR_DOMAIN_FEATURE_HAP);
}
if (xenXMConfigGetBool(conf, "localtime", &vmlocaltime, 0) < 0)
goto cleanup;
@@ -2409,6 +2413,10 @@ virConfPtr xenXMDomainConfigFormat(virConnectPtr conn,
(1 << VIR_DOMAIN_FEATURE_APIC)) ? 1 : 0) < 0)
goto no_memory;
+ if (xenXMConfigSetInt(conf, "hap",
+ (def->features &
+ (1 << VIR_DOMAIN_FEATURE_HAP)) ? 1 : 0) < 0)
+ goto no_memory;
if (def->clock.offset == VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME) {
if (def->clock.data.timezone) {
diff --git a/src/xenapi/xenapi_driver.c b/src/xenapi/xenapi_driver.c
index 6fff276..fffa617 100644
--- a/src/xenapi/xenapi_driver.c
+++ b/src/xenapi/xenapi_driver.c
@@ -1358,6 +1358,8 @@ xenapiDomainDumpXML (virDomainPtr dom, int flags ATTRIBUTE_UNUSED)
defPtr->features = defPtr->features | (1<<VIR_DOMAIN_FEATURE_APIC);
else if (STREQ(result->contents[i].key, "pae"))
defPtr->features = defPtr->features | (1<<VIR_DOMAIN_FEATURE_PAE);
+ else if (STREQ(result->contents[i].key, "hap"))
+ defPtr->features = defPtr->features | (1<<VIR_DOMAIN_FEATURE_HAP);
}
}
xen_string_string_map_free(result);
diff --git a/src/xenapi/xenapi_utils.c b/src/xenapi/xenapi_utils.c
index a7e2a4b..2ec5f9e 100644
--- a/src/xenapi/xenapi_utils.c
+++ b/src/xenapi/xenapi_utils.c
@@ -529,6 +529,8 @@ createVMRecordFromXml (virConnectPtr conn, virDomainDefPtr def,
allocStringMap(&strings, (char *)"apic", (char *)"true");
if (def->features & (1 << VIR_DOMAIN_FEATURE_PAE))
allocStringMap(&strings, (char *)"pae", (char *)"true");
+ if (def->features & (1 << VIR_DOMAIN_FEATURE_HAP))
+ allocStringMap(&strings, (char *)"hap", (char *)"true");
}
if (strings != NULL)
(*record)->platform = strings;

View File

@ -1,32 +0,0 @@
commit 094c6f4a24165d2d07f64bbd70243b3306a34d5b
Author: Jim Fehlig <jfehlig@novell.com>
Date: Fri Jan 14 11:12:46 2011 -0700
Fix 'make check' after commit 04197350
I broke 'make check' with commit 04197350 by unconditionally
emitting 'hap=' in xen xm driver. Only emit 'hap=' if
xendConfigVersion >= 3. I've tested sending 'hap=' to a Xen 3.2
machine without support for hap setting and verified that xend
silently drops the unrecognized setting.
diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c
index ec618aa..bfb6698 100644
--- a/src/xen/xm_internal.c
+++ b/src/xen/xm_internal.c
@@ -2413,10 +2413,11 @@ virConfPtr xenXMDomainConfigFormat(virConnectPtr conn,
(1 << VIR_DOMAIN_FEATURE_APIC)) ? 1 : 0) < 0)
goto no_memory;
- if (xenXMConfigSetInt(conf, "hap",
- (def->features &
- (1 << VIR_DOMAIN_FEATURE_HAP)) ? 1 : 0) < 0)
- goto no_memory;
+ if (priv->xendConfigVersion >= 3)
+ if (xenXMConfigSetInt(conf, "hap",
+ (def->features &
+ (1 << VIR_DOMAIN_FEATURE_HAP)) ? 1 : 0) < 0)
+ goto no_memory;
if (def->clock.offset == VIR_DOMAIN_CLOCK_OFFSET_LOCALTIME) {
if (def->clock.data.timezone) {

View File

@ -1,54 +0,0 @@
commit 4301b95af7f554700de8e69ecf3f3bb3148b1d44
Author: Jim Fehlig <jfehlig@novell.com>
Date: Thu Jan 13 12:52:23 2011 -0700
[v2] qemu: Retry JSON monitor cont cmd on MigrationExpected error
When restoring a saved qemu instance via JSON monitor, the vm is
left in a paused state. Turns out the 'cont' cmd was failing with
"MigrationExpected" error class and "An incoming migration is
expected before this command can be executed" error description
due to migration (restore) not yet complete.
Detect if 'cont' cmd fails with "MigrationExpecte" error class and
retry 'cont' cmd.
V2: Fix potential double-free noted by Laine Stump
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 2e159c7..ca06e7e 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -702,13 +702,29 @@ qemuMonitorJSONStartCPUs(qemuMonitorPtr mon,
int ret;
virJSONValuePtr cmd = qemuMonitorJSONMakeCommand("cont", NULL);
virJSONValuePtr reply = NULL;
+ int i = 0, timeout = 3;
if (!cmd)
return -1;
- ret = qemuMonitorJSONCommand(mon, cmd, &reply);
+ do {
+ ret = qemuMonitorJSONCommand(mon, cmd, &reply);
- if (ret == 0)
- ret = qemuMonitorJSONCheckError(cmd, reply);
+ if (ret != 0)
+ break;
+
+ /* If no error, we're done */
+ if ((ret = qemuMonitorJSONCheckError(cmd, reply)) == 0)
+ break;
+
+ /* If error class is not MigrationExpected, we're done.
+ * Otherwise try 'cont' cmd again */
+ if (!qemuMonitorJSONHasError(reply, "MigrationExpected"))
+ break;
+
+ virJSONValueFree(reply);
+ reply = NULL;
+ usleep(250000);
+ } while (++i <= timeout);
virJSONValueFree(cmd);
virJSONValueFree(reply);

View File

@ -1,41 +0,0 @@
commit 48a5dccda905b5c6e8a02a37c093c42a9ef4e350
Author: Jim Fehlig <jfehlig@novell.com>
Date: Wed Jan 5 14:56:48 2011 -0700
Add HAP to virDomainFeature enum
Extend the virDomainFeature enumeration to include HAP (hardware
assisted paging) feature.
Hardware features such as Extended Page Table and Nested Page
Table augment hypervisor software techniques such as shadow
page table. Adding HAP to the virDomainFeature enumeration
allows users to select between hardware and software memory
management mechanisms for their guests.
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index b4df38c..2c54683 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -75,7 +75,8 @@ VIR_ENUM_IMPL(virDomainBoot, VIR_DOMAIN_BOOT_LAST,
VIR_ENUM_IMPL(virDomainFeature, VIR_DOMAIN_FEATURE_LAST,
"acpi",
"apic",
- "pae")
+ "pae",
+ "hap")
VIR_ENUM_IMPL(virDomainLifecycle, VIR_DOMAIN_LIFECYCLE_LAST,
"destroy",
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index a459a22..6a8ec64 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -730,6 +730,7 @@ enum virDomainFeature {
VIR_DOMAIN_FEATURE_ACPI,
VIR_DOMAIN_FEATURE_APIC,
VIR_DOMAIN_FEATURE_PAE,
+ VIR_DOMAIN_FEATURE_HAP,
VIR_DOMAIN_FEATURE_LAST
};

View File

@ -1,56 +0,0 @@
commit 79f56c669f0f4d554cec3137d0a6aadf7c5f2bec
Author: Jim Fehlig <jfehlig@novell.com>
Date: Wed Jan 5 16:07:54 2011 -0700
Document HAP domain feature
Add HAP feature to schema and documentation.
Index: libvirt-0.8.7/docs/formatdomain.html.in
===================================================================
--- libvirt-0.8.7.orig/docs/formatdomain.html.in
+++ libvirt-0.8.7/docs/formatdomain.html.in
@@ -437,6 +437,7 @@
&lt;pae/&gt;
&lt;acpi/&gt;
&lt;apic/&gt;
+ &lt;hap/&gt;
&lt;/features&gt;
...</pre>
@@ -456,6 +457,10 @@
<dd>ACPI is useful for power management, for example, with
KVM guests it is required for graceful shutdown to work.
</dd>
+ <dt><code>hap</code></dt>
+ <dd>Enable use of Hardware Assisted Paging if available in
+ the hardware.
+ </dd>
</dl>
<h3><a name="elementsTime">Time keeping</a></h3>
Index: libvirt-0.8.7/docs/schemas/domain.rng
===================================================================
--- libvirt-0.8.7.orig/docs/schemas/domain.rng
+++ libvirt-0.8.7/docs/schemas/domain.rng
@@ -1741,7 +1741,7 @@
</element>
</define>
<!--
- A set of optional features: PAE, APIC and ACPI support
+ A set of optional features: PAE, APIC, ACPI, and HAP support
-->
<define name="features">
<optional>
@@ -1762,6 +1762,11 @@
<empty/>
</element>
</optional>
+ <optional>
+ <element name="hap">
+ <empty/>
+ </element>
+ </optional>
</interleave>
</element>
</optional>

View File

@ -1,48 +0,0 @@
commit a43c7338d8772aa3a5bc0ec5914d3c28c20447c3
Author: Kay Schubert <kayegypt@web.de>
Date: Thu Jan 6 09:14:58 2011 +0100
bridge: Fix generation of dnsmasq's --dhcp-hostsfile option
I added a host definition to a network definition:
<network>
<name>Lokal</name>
<uuid>2074f379-b82c-423f-9ada-305d8088daaa</uuid>
<bridge name='virbr1' stp='on' delay='0' />
<ip address='192.168.180.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.180.128' end='192.168.180.254' />
<host mac='23:74:00:03:42:02' name='somevm' ip='192.168.180.10' />
</dhcp>
</ip>
</network>
But due to the wrong if-statement the argument --dhcp-hostsfile doesn't get
added to the dnsmasq command. The patch below fixes it for me.
diff --git a/AUTHORS b/AUTHORS
index b204bd6..721b8f8 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -142,6 +142,7 @@ Patches have also been contributed by:
Josh Durgin <joshd@hq.newdream.net>
Roopa Prabhu <roprabhu@cisco.com>
Paweł Krześniak <pawel.krzesniak@gmail.com>
+ Kay Schubert <kayegypt@web.de>
[....send patches to get your name here....]
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 7d43ef5..4c64a74 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -524,7 +524,7 @@ networkBuildDnsmasqArgv(virNetworkObjPtr network,
goto cleanup;
}
- if (networkSaveDnsmasqHostsfile(ipdef, dctx, false) < 0) {
+ if (networkSaveDnsmasqHostsfile(ipdef, dctx, false) == 0) {
virCommandAddArgPair(cmd, "--dhcp-hostsfile",
dctx->hostsfile->path);
}

View File

@ -1,36 +0,0 @@
commit af521a0182a0d6867796c65b1b0cd83fb14032a9
Author: Jim Fehlig <jfehlig@novell.com>
Date: Wed Jan 5 15:20:01 2011 -0700
Add HAP to xen hypervisor capabilities
xen-unstable c/s 16931 introduced a per-domain setting for hvm
guests to enable/disable hardware assisted paging. If disabled,
software techniques such as shadow page tables are used. If enabled,
and the feature exists in underlying hardware, hardware support for
paging is used.
Xen does not provide a mechanism to discover the HAP capability, so
we advertise its availability for hvm guests on Xen >= 3.3.
diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c
index ead8ee9..229ef3d 100644
--- a/src/xen/xen_hypervisor.c
+++ b/src/xen/xen_hypervisor.c
@@ -2321,6 +2321,16 @@ xenHypervisorBuildCapabilities(virConnectPtr conn,
hv_minor > 0 ?
0 : 1)) == NULL)
goto no_memory;
+
+ /* Xen 3.3.x and beyond supports enabling/disabling
+ * hardware assisted paging. Default is off.
+ */
+ if ((hv_major == 3 && hv_minor >= 3) || (hv_major > 3))
+ if (virCapabilitiesAddGuestFeature(guest,
+ "hap",
+ 0,
+ 1) == NULL)
+ goto no_memory;
}
}

View File

@ -2,7 +2,7 @@ Index: src/lxc/lxc_container.c
===================================================================
--- src/lxc/lxc_container.c.orig
+++ src/lxc/lxc_container.c
@@ -838,6 +838,9 @@ int lxcContainerStart(virDomainDefPtr de
@@ -845,6 +845,9 @@ int lxcContainerStart(virDomainDefPtr de
lxc_child_argv_t args = { def, nveths, veths, control, ttyPath };
/* allocate a stack for the container */
@ -12,7 +12,7 @@ Index: src/lxc/lxc_container.c
if (VIR_ALLOC_N(stack, stacksize) < 0) {
virReportOOMError();
return -1;
@@ -856,7 +859,11 @@ int lxcContainerStart(virDomainDefPtr de
@@ -863,7 +866,11 @@ int lxcContainerStart(virDomainDefPtr de
flags |= CLONE_NEWNET;
}
@ -24,7 +24,7 @@ Index: src/lxc/lxc_container.c
VIR_FREE(stack);
DEBUG("clone() completed, new container PID is %d", pid);
@@ -882,6 +889,7 @@ int lxcContainerAvailable(int features)
@@ -889,6 +896,7 @@ int lxcContainerAvailable(int features)
char *childStack;
char *stack;
int childStatus;
@ -32,7 +32,7 @@ Index: src/lxc/lxc_container.c
if (features & LXC_CONTAINER_FEATURE_USER)
flags |= CLONE_NEWUSER;
@@ -889,14 +897,21 @@ int lxcContainerAvailable(int features)
@@ -896,14 +904,21 @@ int lxcContainerAvailable(int features)
if (features & LXC_CONTAINER_FEATURE_NET)
flags |= CLONE_NEWNET;

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:98d76f1aa9ce28e887271969f67f7a470b554cfb1a22c4e9d2f2ae6db45e6135
size 9205470

3
libvirt-0.8.8.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a63182fc0c19d08f8996ba74fb4bf852b4f8be9b894a7503e7a0fe2b8993f6dd
size 9358764

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Fri Feb 11 11:43:16 MST 2011 - jfehlig@novell.com
- Update to libvirt 0.8.8 RC1
-------------------------------------------------------------------
Mon Jan 31 09:14:37 MST 2011 - jfehlig@novell.com

View File

@ -144,8 +144,8 @@ Url: http://libvirt.org/
License: LGPLv2.1+
Group: Development/Libraries/C and C++
AutoReqProv: yes
Version: 0.8.7
Release: 3
Version: 0.8.8
Release: 1
Summary: A C toolkit to interract with the virtualization capabilities of Linux
# The client side, i.e. shared libs and virsh are in a subpackage
Requires: %{name}-client = %{version}-%{release}
@ -169,13 +169,6 @@ Recommends: PolicyKit >= 0.6
Source0: %{name}-%{version}.tar.bz2
Source1: libvirtd.init
# Upstream patches
Patch0: a43c7338-dnsmasq-hostfile-fix.patch
Patch1: 48a5dccd-hap1.patch
Patch2: 04197350-hap2.patch
Patch3: af521a01-hap3.patch
Patch4: 79f56c66-hap4.patch
Patch5: 094c6f4a-hap-fix.patch
Patch6: 4301b95a-json-cont-cmd.patch
# Need to go upstream
Patch100: xen-name-for-devid.patch
Patch102: clone.patch
@ -288,13 +281,6 @@ Authors:
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch100 -p1
%patch102
%patch103 -p1

View File

@ -1,7 +1,7 @@
Index: libvirt-0.8.7/tools/Makefile.am
Index: libvirt-0.8.8/tools/Makefile.am
===================================================================
--- libvirt-0.8.7.orig/tools/Makefile.am
+++ libvirt-0.8.7/tools/Makefile.am
--- libvirt-0.8.8.orig/tools/Makefile.am
+++ libvirt-0.8.8/tools/Makefile.am
@@ -129,18 +129,18 @@ install-data-local: install-init
uninstall-local: uninstall-init
@ -28,7 +28,7 @@ Index: libvirt-0.8.7/tools/Makefile.am
BUILT_SOURCES += libvirt-guests.init
@@ -152,11 +152,6 @@ libvirt-guests.init: libvirt-guests.init
@@ -155,11 +155,6 @@ libvirt-guests.init: libvirt-guests.init
< $< > $@-t && \
chmod a+x $@-t && \
mv $@-t $@
@ -40,10 +40,10 @@ Index: libvirt-0.8.7/tools/Makefile.am
CLEANFILES = $(bin_SCRIPTS) $(man1_MANS)
Index: libvirt-0.8.7/tools/libvirt-guests.sysconf
Index: libvirt-0.8.8/tools/libvirt-guests.sysconf
===================================================================
--- libvirt-0.8.7.orig/tools/libvirt-guests.sysconf
+++ libvirt-0.8.7/tools/libvirt-guests.sysconf
--- libvirt-0.8.8.orig/tools/libvirt-guests.sysconf
+++ libvirt-0.8.8/tools/libvirt-guests.sysconf
@@ -1,15 +1,23 @@
+## Path: System/Virtualization/libvirt
+
@ -82,10 +82,10 @@ Index: libvirt-0.8.7/tools/libvirt-guests.sysconf
# number of seconds we're willing to wait for a guest to shut down
-#SHUTDOWN_TIMEOUT=0
+SHUTDOWN_TIMEOUT=120
Index: libvirt-0.8.7/tools/libvirt-guests.init.in
Index: libvirt-0.8.8/tools/libvirt-guests.init.sh
===================================================================
--- libvirt-0.8.7.orig/tools/libvirt-guests.init.in
+++ libvirt-0.8.7/tools/libvirt-guests.init.in
--- libvirt-0.8.8.orig/tools/libvirt-guests.init.sh
+++ libvirt-0.8.8/tools/libvirt-guests.init.sh
@@ -4,10 +4,10 @@
#
### BEGIN INIT INFO
@ -108,18 +108,18 @@ Index: libvirt-0.8.7/tools/libvirt-guests.init.in
+. /etc/rc.status
+rc_reset
+
sysconfdir=@sysconfdir@
localstatedir=@localstatedir@
libvirtd=@sbindir@/libvirtd
sysconfdir="@sysconfdir@"
localstatedir="@localstatedir@"
libvirtd="@sbindir@"/libvirtd
-# Source function library.
-test ! -r "$sysconfdir"/rc.d/init.d/functions ||
- . "$sysconfdir"/rc.d/init.d/functions
- . "$sysconfdir"/rc.d/init.d/functions
-
URIS=default
ON_BOOT=start
ON_SHUTDOWN=suspend
@@ -42,12 +41,10 @@ test -f "$sysconfdir"/sysconfig/libvirt-
# Source gettext library.
# Make sure this file is recognized as having translations: _("dummy")
. "@bindir@"/gettext.sh
@@ -49,12 +48,10 @@ test -f "$sysconfdir"/sysconfig/libvirt-
LISTFILE="$localstatedir"/lib/libvirt/libvirt-guests
VAR_SUBSYS_LIBVIRT_GUESTS="$localstatedir"/lock/subsys/libvirt-guests
@ -133,7 +133,7 @@ Index: libvirt-0.8.7/tools/libvirt-guests.init.in
return 1
else
return 0
@@ -71,12 +68,31 @@ run_virsh_c() {
@@ -78,12 +75,31 @@ run_virsh_c() {
( export LC_ALL=C; run_virsh "$@" )
}
@ -166,7 +166,7 @@ Index: libvirt-0.8.7/tools/libvirt-guests.init.in
return 1
fi
@@ -84,7 +100,7 @@ list_guests() {
@@ -91,7 +107,7 @@ list_guests() {
for id in $(echo "$list" | awk 'NR > 2 {print $1}'); do
uuid=$(run_virsh_c $uri dominfo $id | awk '/^UUID:/{print $2}')
if [ -z "$uuid" ]; then
@ -175,7 +175,7 @@ Index: libvirt-0.8.7/tools/libvirt-guests.init.in
return 1
fi
uuids="$uuids $uuid"
@@ -111,7 +127,7 @@ guest_is_on() {
@@ -118,7 +134,7 @@ guest_is_on() {
guest_running=false
info=$(run_virsh_c $uri dominfo $uuid)
if [ $? -ne 0 ]; then
@ -184,7 +184,7 @@ Index: libvirt-0.8.7/tools/libvirt-guests.init.in
return 1
fi
@@ -148,6 +164,12 @@ start() {
@@ -156,6 +172,12 @@ start() {
continue
fi
@ -194,35 +194,35 @@ Index: libvirt-0.8.7/tools/libvirt-guests.init.in
+ continue
+ fi
+
echo $"Resuming guests on $uri URI..."
eval_gettext "Resuming guests on \$uri URI..."; echo
for guest in $list; do
name=$(guest_name $uri $guest)
@@ -227,7 +249,7 @@ stop() {
suspending=false
@@ -237,7 +259,7 @@ stop() {
if [ $SHUTDOWN_TIMEOUT -le 0 ]; then
echo $"Shutdown action requested but SHUTDOWN_TIMEOUT was not set"
gettext "Shutdown action requested but SHUTDOWN_TIMEOUT was not set"
echo
- RETVAL=6
+ rc_failed 6
return
fi
fi
@@ -291,14 +313,13 @@ gueststatus() {
@@ -301,14 +323,13 @@ gueststatus() {
rh_status() {
if [ -f "$LISTFILE" ]; then
echo $"stopped, with saved guests"
gettext "stopped, with saved guests"; echo
- RETVAL=3
+ rc_failed 3
else
if [ -f "$VAR_SUBSYS_LIBVIRT_GUESTS" ]; then
echo $"started"
gettext "started"; echo
else
echo $"stopped, with no saved guests"
gettext "stopped, with no saved guests"; echo
fi
- RETVAL=0
fi
}
@@ -340,4 +361,4 @@ case "$1" in
@@ -352,4 +373,4 @@ case "$1" in
usage
;;
esac

View File

@ -13,10 +13,10 @@ Date: Wed Jan 27 16:11:41 2010 -0700
This approach allows removing a disk when domain is inactive. We
obviously can't search xenstore when the domain is inactive.
Index: libvirt-0.8.7/src/xen/xend_internal.c
Index: libvirt-0.8.8/src/xen/xend_internal.c
===================================================================
--- libvirt-0.8.7.orig/src/xen/xend_internal.c
+++ libvirt-0.8.7/src/xen/xend_internal.c
--- libvirt-0.8.8.orig/src/xen/xend_internal.c
+++ libvirt-0.8.8/src/xen/xend_internal.c
@@ -89,6 +89,7 @@ xenDaemonFormatSxprOnePCI(virDomainHostd
static int
@ -25,7 +25,7 @@ Index: libvirt-0.8.7/src/xen/xend_internal.c
virDomainDeviceDefPtr dev,
char *class,
char *ref,
@@ -4054,7 +4055,7 @@ xenDaemonAttachDeviceFlags(virDomainPtr
@@ -4061,7 +4062,7 @@ xenDaemonAttachDeviceFlags(virDomainPtr
sexpr = virBufferContentAndReset(&buf);
@ -34,7 +34,7 @@ Index: libvirt-0.8.7/src/xen/xend_internal.c
/* device doesn't exist, define it */
ret = xend_op(domain->conn, domain->name, "op", "device_create",
"config", sexpr, NULL);
@@ -4172,7 +4173,7 @@ xenDaemonUpdateDeviceFlags(virDomainPtr
@@ -4179,7 +4180,7 @@ xenDaemonUpdateDeviceFlags(virDomainPtr
sexpr = virBufferContentAndReset(&buf);
@ -43,7 +43,7 @@ Index: libvirt-0.8.7/src/xen/xend_internal.c
virXendError(VIR_ERR_OPERATION_INVALID, "%s",
_("requested device does not exist"));
goto cleanup;
@@ -4265,7 +4266,7 @@ xenDaemonDetachDeviceFlags(virDomainPtr
@@ -4272,7 +4273,7 @@ xenDaemonDetachDeviceFlags(virDomainPtr
def, xml, VIR_DOMAIN_XML_INACTIVE)))
goto cleanup;
@ -52,7 +52,7 @@ Index: libvirt-0.8.7/src/xen/xend_internal.c
goto cleanup;
if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) {
@@ -6037,6 +6038,7 @@ error:
@@ -6053,6 +6054,7 @@ error:
*/
static int
virDomainXMLDevID(virDomainPtr domain,
@ -60,7 +60,7 @@ Index: libvirt-0.8.7/src/xen/xend_internal.c
virDomainDeviceDefPtr dev,
char *class,
char *ref,
@@ -6045,8 +6047,12 @@ virDomainXMLDevID(virDomainPtr domain,
@@ -6061,8 +6063,12 @@ virDomainXMLDevID(virDomainPtr domain,
xenUnifiedPrivatePtr priv = domain->conn->privateData;
char *xref;
char *tmp;
@ -73,7 +73,7 @@ Index: libvirt-0.8.7/src/xen/xend_internal.c
if (dev->data.disk->driverName &&
STREQ(dev->data.disk->driverName, "tap"))
strcpy(class, "tap");
@@ -6056,19 +6062,21 @@ virDomainXMLDevID(virDomainPtr domain,
@@ -6072,19 +6078,21 @@ virDomainXMLDevID(virDomainPtr domain,
else
strcpy(class, "vbd");

View File

@ -1,8 +1,8 @@
Index: libvirt-0.8.6/src/xen/xend_internal.c
Index: libvirt-0.8.8/src/xen/xend_internal.c
===================================================================
--- libvirt-0.8.6.orig/src/xen/xend_internal.c
+++ libvirt-0.8.6/src/xen/xend_internal.c
@@ -1358,7 +1358,7 @@ error:
--- libvirt-0.8.8.orig/src/xen/xend_internal.c
+++ libvirt-0.8.8/src/xen/xend_internal.c
@@ -1365,7 +1365,7 @@ error:
static int
xenDaemonParseSxprDisks(virDomainDefPtr def,
const struct sexpr *root,
@ -11,7 +11,7 @@ Index: libvirt-0.8.6/src/xen/xend_internal.c
int xendConfigVersion)
{
const struct sexpr *cur, *node;
@@ -1405,7 +1405,6 @@ xenDaemonParseSxprDisks(virDomainDefPtr
@@ -1412,7 +1412,6 @@ xenDaemonParseSxprDisks(virDomainDefPtr
/* There is a case without the uname to the CD-ROM device */
offset = strchr(dst, ':');
if (!offset ||

View File

@ -1,8 +1,8 @@
Index: libvirt-0.8.6/src/xen/xend_internal.c
Index: libvirt-0.8.8/src/xen/xend_internal.c
===================================================================
--- libvirt-0.8.6.orig/src/xen/xend_internal.c
+++ libvirt-0.8.6/src/xen/xend_internal.c
@@ -1376,20 +1376,24 @@ xenDaemonParseSxprDisks(virDomainDefPtr
--- libvirt-0.8.8.orig/src/xen/xend_internal.c
+++ libvirt-0.8.8/src/xen/xend_internal.c
@@ -1383,20 +1383,24 @@ xenDaemonParseSxprDisks(virDomainDefPtr
const char *src = NULL;
const char *dst = NULL;
const char *mode = NULL;
@ -27,7 +27,7 @@ Index: libvirt-0.8.6/src/xen/xend_internal.c
}
if (VIR_ALLOC(disk) < 0)
@@ -1514,7 +1518,12 @@ xenDaemonParseSxprDisks(virDomainDefPtr
@@ -1521,7 +1525,12 @@ xenDaemonParseSxprDisks(virDomainDefPtr
if (VIR_REALLOC_N(def->disks, def->ndisks+1) < 0)
goto no_memory;