diff --git a/04197350-hap2.patch b/04197350-hap2.patch deleted file mode 100644 index 8b202d4..0000000 --- a/04197350-hap2.patch +++ /dev/null @@ -1,89 +0,0 @@ -commit 041973504f715bcff7de3b17cd258617244b79c4 -Author: Jim Fehlig -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<contents[i].key, "pae")) - defPtr->features = defPtr->features | (1<contents[i].key, "hap")) -+ defPtr->features = defPtr->features | (1<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; diff --git a/094c6f4a-hap-fix.patch b/094c6f4a-hap-fix.patch deleted file mode 100644 index 70bcf68..0000000 --- a/094c6f4a-hap-fix.patch +++ /dev/null @@ -1,32 +0,0 @@ -commit 094c6f4a24165d2d07f64bbd70243b3306a34d5b -Author: Jim Fehlig -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) { diff --git a/4301b95a-json-cont-cmd.patch b/4301b95a-json-cont-cmd.patch deleted file mode 100644 index 002929a..0000000 --- a/4301b95a-json-cont-cmd.patch +++ /dev/null @@ -1,54 +0,0 @@ -commit 4301b95af7f554700de8e69ecf3f3bb3148b1d44 -Author: Jim Fehlig -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); diff --git a/48a5dccd-hap1.patch b/48a5dccd-hap1.patch deleted file mode 100644 index 2127da2..0000000 --- a/48a5dccd-hap1.patch +++ /dev/null @@ -1,41 +0,0 @@ -commit 48a5dccda905b5c6e8a02a37c093c42a9ef4e350 -Author: Jim Fehlig -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 - }; diff --git a/79f56c66-hap4.patch b/79f56c66-hap4.patch deleted file mode 100644 index 6f47596..0000000 --- a/79f56c66-hap4.patch +++ /dev/null @@ -1,56 +0,0 @@ -commit 79f56c669f0f4d554cec3137d0a6aadf7c5f2bec -Author: Jim Fehlig -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 @@ - <pae/> - <acpi/> - <apic/> -+ <hap/> - </features> - ... - -@@ -456,6 +457,10 @@ -
ACPI is useful for power management, for example, with - KVM guests it is required for graceful shutdown to work. -
-+
hap
-+
Enable use of Hardware Assisted Paging if available in -+ the hardware. -+
- - -

Time keeping

-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 @@ - - - - - -@@ -1762,6 +1762,11 @@ - - - -+ -+ -+ -+ -+ - - - diff --git a/a43c7338-dnsmasq-hostfile-fix.patch b/a43c7338-dnsmasq-hostfile-fix.patch deleted file mode 100644 index 0336bf2..0000000 --- a/a43c7338-dnsmasq-hostfile-fix.patch +++ /dev/null @@ -1,48 +0,0 @@ -commit a43c7338d8772aa3a5bc0ec5914d3c28c20447c3 -Author: Kay Schubert -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: - - - Lokal - 2074f379-b82c-423f-9ada-305d8088daaa - - - - - - - - - - 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 - Roopa Prabhu - Paweł Krześniak -+ Kay Schubert - - [....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); - } diff --git a/af521a01-hap3.patch b/af521a01-hap3.patch deleted file mode 100644 index 740f4fd..0000000 --- a/af521a01-hap3.patch +++ /dev/null @@ -1,36 +0,0 @@ -commit af521a0182a0d6867796c65b1b0cd83fb14032a9 -Author: Jim Fehlig -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; - } - } - diff --git a/clone.patch b/clone.patch index 8437409..71365c4 100644 --- a/clone.patch +++ b/clone.patch @@ -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; diff --git a/efc2594b-boot-param.patch b/efc2594b-boot-param.patch new file mode 100644 index 0000000..2644da0 --- /dev/null +++ b/efc2594b-boot-param.patch @@ -0,0 +1,27 @@ +commit efc2594b4e0cbcdd6947fafeeed41accd5b611e0 +Author: Jim Fehlig +Date: Thu Feb 17 14:22:55 2011 -0700 + + Do not add drive 'boot=on' param when a kernel is specified + + libvirt-tck was failing several domain tests [1] with qemu 0.14, which + is now less tolerable of specifying 2 bootroms with the same boot index [2]. + + Drop the 'boot=on' param if kernel has been specfied. + + [1] https://www.redhat.com/archives/libvir-list/2011-February/msg00559.html + [2] http://lists.nongnu.org/archive/html/qemu-devel/2011-02/msg01892.html + +Index: libvirt-0.8.8/src/qemu/qemu_command.c +=================================================================== +--- libvirt-0.8.8.orig/src/qemu/qemu_command.c ++++ libvirt-0.8.8/src/qemu/qemu_command.c +@@ -3116,7 +3116,7 @@ qemuBuildCommandLine(virConnectPtr conn, + int bootCD = 0, bootFloppy = 0, bootDisk = 0; + + /* If QEMU supports boot=on for -drive param... */ +- if (qemuCmdFlags & QEMUD_CMD_FLAG_DRIVE_BOOT) { ++ if (qemuCmdFlags & QEMUD_CMD_FLAG_DRIVE_BOOT && !def->os.kernel) { + for (i = 0 ; i < def->os.nBootDevs ; i++) { + switch (def->os.bootDevs[i]) { + case VIR_DOMAIN_BOOT_CDROM: diff --git a/libvirt-0.8.7.tar.bz2 b/libvirt-0.8.7.tar.bz2 deleted file mode 100644 index 38cfd5d..0000000 --- a/libvirt-0.8.7.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:98d76f1aa9ce28e887271969f67f7a470b554cfb1a22c4e9d2f2ae6db45e6135 -size 9205470 diff --git a/libvirt-0.8.8.tar.bz2 b/libvirt-0.8.8.tar.bz2 new file mode 100644 index 0000000..fe8d7d3 --- /dev/null +++ b/libvirt-0.8.8.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b055afdea9df8d502b7572ea4c81a9aa5fa0f8688d3a58cf63abcef6e84b807 +size 9569079 diff --git a/libvirt.changes b/libvirt.changes index 61f9062..4eca534 100644 --- a/libvirt.changes +++ b/libvirt.changes @@ -1,3 +1,28 @@ +------------------------------------------------------------------- +Thu Feb 17 20:39:22 MST 2011 - jfehlig@novell.com + +- Do not add drive 'boot=on' param when a kernel is specified + efc2594b-boot-param.patch + +------------------------------------------------------------------- +Thu Feb 17 10:26:11 MST 2011 - jfehlig@novell.com + +- Update to libvirt 0.8.8 final + - sysinfo: expose new API + - cgroup blkio weight support + - smartcard device support + - qemu: Support per-device boot ordering + +------------------------------------------------------------------- +Tue Feb 15 09:02:30 MST 2011 - jfehlig@novell.com + +- Update to libvirt 0.8.8 RC3 + +------------------------------------------------------------------- +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 diff --git a/libvirt.spec b/libvirt.spec index 347b628..9b47268 100644 --- a/libvirt.spec +++ b/libvirt.spec @@ -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,7 @@ 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 +Patch0: efc2594b-boot-param.patch # Need to go upstream Patch100: xen-name-for-devid.patch Patch102: clone.patch @@ -289,12 +283,6 @@ Authors: %prep %setup -q %patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 %patch100 -p1 %patch102 %patch103 -p1 @@ -361,6 +349,7 @@ Authors: %if ! %{with_virtualport} %define _without_virtualport --without-virtualport %endif + autoreconf -f -i export CFLAGS="$RPM_OPT_FLAGS" %configure --disable-static --with-pic \ diff --git a/use-libvirt-guests-on-suse.patch b/use-libvirt-guests-on-suse.patch index 9e48d9a..245f985 100644 --- a/use-libvirt-guests-on-suse.patch +++ b/use-libvirt-guests-on-suse.patch @@ -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 diff --git a/xen-name-for-devid.patch b/xen-name-for-devid.patch index c66707f..bc3f80c 100644 --- a/xen-name-for-devid.patch +++ b/xen-name-for-devid.patch @@ -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 +@@ -4088,7 +4089,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 +@@ -4211,7 +4212,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 +@@ -4304,7 +4305,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: +@@ -6085,6 +6086,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, +@@ -6093,8 +6095,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, +@@ -6104,19 +6110,21 @@ virDomainXMLDevID(virDomainPtr domain, else strcpy(class, "vbd"); diff --git a/xen-pv-cdrom.patch b/xen-pv-cdrom.patch index efe43b8..2fb9cac 100644 --- a/xen-pv-cdrom.patch +++ b/xen-pv-cdrom.patch @@ -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 || diff --git a/xend-disk-order.patch b/xend-disk-order.patch index 119a23b..3535631 100644 --- a/xend-disk-order.patch +++ b/xend-disk-order.patch @@ -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;