- bnc#573881 - /usr/lib64/xen/bin/qemu-dm is a broken link - Update to changeset 20840 RC1+ for sle11-sp1 beta3. - bnc#569581 - SuSEfirewall2 should handle rules. Disable handle_iptable in vif-bridge script vif-bridge-no-iptables.patch - bnc#569577 - /etc/modprove.d/xen_pvdrivers, installed by xen-kmp-default, to ../xen_pvdrivers.conf - bnc#536176 - Xen panic when using iommu after updating hypervisor 19380-vtd-feature-check.patch - bnc#530959 - virsh autostart doesn't work Fixing this libvirt bug also required fixing xend's op_pincpu method with upstream c/s 19580 19580-xend-pincpu.patch - bnc#534146 - Xen: Fix SRAT check for discontig memory 20120-x86-srat-check-discontig.patch - bnc#491081 - Xen time goes backwards x3950M2 - disable module build for ec2 correctly to fix build (at the suse_kernel_module_package macro) runs - Upstream bugfixes from Jan. 19896-32on64-arg-xlat.patch 19960-show-page-walk.patch 19945-pae-xen-l2-entries.patch 19953-x86-fsgs-base.patch 19931-gnttblop-preempt.patch 19885-kexec-gdt-switch.patch 19894-shadow-resync-fastpath-race.patch - hvperv shim patches no longer require being applied conditionally - bnc#520234 - npiv does not work with XEN in SLE11 Update block-npiv - bnc#496033 - Support for creating NPIV ports without starting vm block-npiv-common.sh block-npiv-vport Update block-npiv - bnc#500043 - Fix access to NPIV disk from HVM vm Update xen-qemu-iscsi-fix.patch - Don't build the KMPs for the ec2 kernel. - Upstream fixes from Jan Beulich 19606-hvm-x2apic-cpuid.patch 19734-vtd-gcmd-submit.patch 19752-vtd-srtp-sirtp-flush.patch 19753-vtd-reg-write-lock.patch 19764-hvm-domain-lock-leak.patch 19765-hvm-post-restore-vcpu-state.patch 19767-hvm-port80-inhibit.patch 19768-x86-dom0-stack-dump.patch 19770-x86-amd-s3-resume.patch 19801-x86-p2m-2mb-hap-only.patch 19815-vtd-kill-correct-timer.patch - Patch from Jan Beulich to aid in debugging bnc#509911 gnttblop-preempt.patch - bnc#515220 - qemu-img-xen snapshot Segmentation fault qemu-img-snapshot.patch update - Upstream fixes from Jan Beulich. 19474-32on64-S3.patch 19490-log-dirty.patch 19492-sched-timer-non-idle.patch 19493-hvm-io-intercept-count.patch 19505-x86_64-clear-cr1.patch 19519-domctl-deadlock.patch 19523-32on64-restore-p2m.patch 19555-ept-live-migration.patch 19557-amd-iommu-ioapic-remap.patch 19560-x86-flush-tlb-empty-mask.patch 19571-x86-numa-shift.patch 19578-hvm-load-ldt-first.patch 19592-vmx-exit-reason-perfc-size.patch 19595-hvm-set-callback-irq-level.patch 19597-x86-ioport-quirks-BL2xx.patch 19602-vtd-multi-ioapic-remap.patch 19631-x86-frametable-map.patch 19653-hvm-vcpuid-range-checks.patch - bnc#382112 - Caps lock not being passed to vm correctly. capslock_enable.patch - bnc#506833 - Use pidof in xend and xendomains init scripts - bnc#484778 - XEN: PXE boot of FV domU using non-Realtek NIC fails enable_more_nic_pxe.patch cross-migrate.patch - bnc#390961 - cross-migration of a VM causes it to become unresponsive (remains paused after migration) - Patches taken to fix the xenctx tool. The fixed version of this tool is needed to debug bnc#502735. 18962-xc_translate_foreign_address.patch 18963-xenctx.patch 19168-hvm-domctl.patch 19169-remove-declare-bitmap.patch 19170-libxc.patch 19171-xenctx.patch 19450-xc_translate_foreign_address.patch -bnc#503782 - Using converted vmdk image does not work ioemu-tapdisk-compat-QEMU_IMG.patch - bnc#474738 - adding CD drive to VM guest makes it unbootable. parse_boot_disk.patch - bnc#495300 - L3: Xen unable to PXE boot Windows based DomU's 18545-hvm-gpxe-rom.patch, 18548-hvm-gpxe-rom.patch - bnc#459836 - Fix rtc_timeoffset when localtime=0 xend-timeoffset.patch - bnc#497440 - xmclone.sh script incorrectly handles networking for SLE11. - bnc#477890 - VM becomes unresponsive after applying snapshot - bnc#494892 - Update xend-domain-lock.patch to flock the lock file. - bnc#439639 - SVVP Test 273 System - Sleep Stress With IO" fails Turned off s3/s4 sleep states for HVM guests. - bnc#468169 - fix domUloader to umount the mounted device mapper target in dom0 when install a sles10 guest with disk = /dev/disk/by_path - bnc#488490 - domUloader can't handle block device names with ':' - bnc#486244 - vms fail to start after reboot when using qcow2 - bnc#490835 - VTd errata on Cantiga chipset 19230-vtd-mobile-series4-chipset.patch - bnc#482515 - Missing dependency in xen.spec - Additional upstream bug fix patches from Jan Beulich. 19132-page-list-mfn-links.patch 19134-fold-shadow-page-info.patch 19135-next-shadow-mfn.patch 19136-page-info-rearrange.patch 19156-page-list-simplify.patch 19161-pv-ldt-handling.patch 19162-page-info-no-cpumask.patch 19216-msix-fixmap.patch 19268-page-get-owner.patch 19293-vcpu-migration-delay.patch 19391-vpmu-double-free.patch 19415-vtd-dom0-s3.patch - Imported numerous upstream bug fix patches. 19083-memory-is-conventional-fix.patch 19097-M2P-table-1G-page-mappings.patch 19137-lock-domain-page-list.patch 19140-init-heap-pages-max-order.patch 19167-recover-pat-value-s3-resume.patch 19172-irq-to-vector.patch 19173-pci-passthrough-fix.patch 19176-free-irq-shutdown-fix.patch 19190-pciif-typo-fix.patch 19204-allow-old-images-restore.patch 19232-xend-exception-fix.patch 19239-ioapic-s3-suspend-fix.patch 19240-ioapic-s3-suspend-fix.patch 19242-xenstored-use-after-free-fix.patch 19259-ignore-shutdown-deferrals.patch 19266-19365-event-channel-access-fix.patch 19275-19296-schedular-deadlock-fixes.patch 19276-cpu-selection-allocation-fix.patch 19302-passthrough-pt-irq-time-out.patch 19313-hvmemul-read-msr-fix.patch 19317-vram-tracking-fix.patch 19335-apic-s3-resume-error-fix.patch 19353-amd-migration-fix.patch 19354-amd-migration-fix.patch 19371-in-sync-L1s-writable.patch 19372-2-on-3-shadow-mode-fix.patch 19377-xend-vnclisten.patch 19400-ensure-ltr-execute.patch 19410-virt-to-maddr-fix.patch - bnc#483565 - Fix block-iscsi script. Updated block-iscsi and xen-domUloader.diff - bnc#465814 - Mouse stops responding when wheel is used in Windows VM. mouse-wheel-roll.patch (James Song) - bnc#470704 - save/restore of windows VM throws off the mouse tracking. usb-save-restore.patch (James Song) - bnc#436629 - Use global vnc-listen setting specified in xend configuration file. xend-vnclisten.patch - bnc#482623 - Fix pygrub to append user-supplied 'extra' args to kernel args. 19234_pygrub.patch - bnc#481161 upgrade - sles10sp2 to sles11 upgrade keeps xen-tools-ioemu OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=28
189 lines
7.3 KiB
Diff
189 lines
7.3 KiB
Diff
Index: xen-4.0.0-testing/tools/python/xen/util/blkif.py
|
|
===================================================================
|
|
--- xen-4.0.0-testing.orig/tools/python/xen/util/blkif.py
|
|
+++ xen-4.0.0-testing/tools/python/xen/util/blkif.py
|
|
@@ -71,8 +71,8 @@ def blkdev_segment(name):
|
|
'type' : 'Disk' }
|
|
return val
|
|
|
|
-def _parse_uname(uname):
|
|
- fn = taptype = None
|
|
+def parse_uname(uname):
|
|
+ fn = typ = taptype = None
|
|
if uname.find(":") != -1:
|
|
(typ, fn) = uname.split(":", 1)
|
|
|
|
@@ -88,15 +88,16 @@ def _parse_uname(uname):
|
|
|
|
if typ == "tap":
|
|
(taptype, fn) = fn.split(":", 1)
|
|
- return (fn, taptype)
|
|
+ return (fn, (typ, taptype))
|
|
+ return (fn, (typ,taptype))
|
|
|
|
def blkdev_uname_to_file(uname):
|
|
"""Take a blkdev uname and return the corresponding filename."""
|
|
- return _parse_uname(uname)[0]
|
|
+ return parse_uname(uname)[0]
|
|
|
|
def blkdev_uname_to_taptype(uname):
|
|
"""Take a blkdev uname and return the blktap type."""
|
|
- return _parse_uname(uname)[1]
|
|
+ return parse_uname(uname)[1]
|
|
|
|
def mount_mode(name):
|
|
mode = None
|
|
Index: xen-4.0.0-testing/tools/python/xen/xend/server/DevController.py
|
|
===================================================================
|
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/server/DevController.py
|
|
+++ xen-4.0.0-testing/tools/python/xen/xend/server/DevController.py
|
|
@@ -592,6 +592,31 @@ class DevController:
|
|
return (Missing, None)
|
|
|
|
|
|
+ def waitForFrontend(self, devid):
|
|
+ def frontendStatusCallback(statusPath, ev, result):
|
|
+ status = xstransact.Read(statusPath)
|
|
+ log.debug("frontendStatusCallback %s = %s" % (statusPath, status))
|
|
+ try:
|
|
+ status = int(status)
|
|
+ if status == xenbusState['Connected']:
|
|
+ result['status'] = Connected
|
|
+ elif status == xenbusState['Closed']:
|
|
+ result['status'] = Error
|
|
+ else:
|
|
+ raise
|
|
+ except:
|
|
+ return 1
|
|
+ ev.set()
|
|
+ return 0
|
|
+ frontpath = self.frontendPath(devid)
|
|
+ statusPath = frontpath + '/state'
|
|
+ ev = Event()
|
|
+ result = { 'status': Timeout }
|
|
+ xswatch(statusPath, frontendStatusCallback, ev, result)
|
|
+ ev.wait(5)
|
|
+ return result['status']
|
|
+
|
|
+
|
|
def backendPath(self, backdom, devid):
|
|
"""Construct backend path given the backend domain and device id.
|
|
|
|
Index: xen-4.0.0-testing/tools/python/xen/xend/XendBootloader.py
|
|
===================================================================
|
|
--- xen-4.0.0-testing.orig/tools/python/xen/xend/XendBootloader.py
|
|
+++ xen-4.0.0-testing/tools/python/xen/xend/XendBootloader.py
|
|
@@ -12,7 +12,7 @@
|
|
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
#
|
|
|
|
-import os, select, errno, stat, signal, tty
|
|
+import os, select, errno, stat, signal, tty, time
|
|
import random
|
|
import shlex
|
|
from xen.xend import sxp
|
|
@@ -38,8 +38,25 @@ def bootloader(blexec, disk, dom, quiet
|
|
msg = "Bootloader isn't executable"
|
|
log.error(msg)
|
|
raise VmError(msg)
|
|
- if not os.access(disk, os.R_OK):
|
|
- msg = "Disk isn't accessible"
|
|
+
|
|
+ # domUloader requires '--entry=foo' in blargs, which is derived from
|
|
+ # 'bootargs' entry in domain configuration file. Ensure it exists
|
|
+ # here so a reasonable error message can be returned.
|
|
+ if blexec.find('domUloader.py') != -1:
|
|
+ if blargs.find('entry') == -1:
|
|
+ msg = "domUloader requires specification of bootargs"
|
|
+ log.error(msg)
|
|
+ raise VmError(msg)
|
|
+
|
|
+ avail = False
|
|
+ for i in xrange(1, 20):
|
|
+ avail = os.access(disk, os.R_OK)
|
|
+ if avail:
|
|
+ break
|
|
+ time.sleep(.05)
|
|
+
|
|
+ if not avail:
|
|
+ msg = "Disk '%s' isn't accessible" % disk
|
|
log.error(msg)
|
|
raise VmError(msg)
|
|
|
|
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
|
|
@@ -37,7 +37,7 @@ from types import StringTypes
|
|
|
|
import xen.lowlevel.xc
|
|
from xen.util import asserts, auxbin
|
|
-from xen.util.blkif import blkdev_uname_to_file, blkdev_uname_to_taptype
|
|
+from xen.util.blkif import parse_uname
|
|
import xen.util.xsm.xsm as security
|
|
from xen.util import xsconstants
|
|
from xen.util import mkdir
|
|
@@ -2337,6 +2337,10 @@ class XendDomainInfo:
|
|
deviceClass, config = self.info['devices'].get(dev_uuid)
|
|
self._waitForDevice(deviceClass, config['devid'])
|
|
|
|
+ def _waitForDeviceFrontUUID(self, dev_uuid):
|
|
+ deviceClass, config = self.info['devices'].get(dev_uuid)
|
|
+ self.getDeviceController(deviceClass).waitForFrontend(config['devid'])
|
|
+
|
|
def _waitForDevice_destroy(self, deviceClass, devid, backpath):
|
|
return self.getDeviceController(deviceClass).waitForDevice_destroy(
|
|
devid, backpath)
|
|
@@ -3226,7 +3230,7 @@ class XendDomainInfo:
|
|
devtype = devinfo[0]
|
|
disk = devinfo[1]['uname']
|
|
|
|
- fn = blkdev_uname_to_file(disk)
|
|
+ (fn, types) = parse_uname(disk)
|
|
|
|
# If this is a drbd volume, check if we need to activate it
|
|
if disk.find(":") != -1:
|
|
@@ -3237,8 +3241,17 @@ class XendDomainInfo:
|
|
if state == 'Secondary':
|
|
os.system('/sbin/drbdadm primary ' + diskname)
|
|
|
|
- taptype = blkdev_uname_to_taptype(disk)
|
|
- mounted = devtype in ['tap', 'tap2'] and taptype != 'aio' and taptype != 'sync' and not os.stat(fn).st_rdev
|
|
+ def _shouldMount(types):
|
|
+ if types[0] in ('file', 'phy'):
|
|
+ return False
|
|
+ if types[0] == 'tap' or types[0] == 'tap2':
|
|
+ if types[1] in ('aio', 'sync'):
|
|
+ return False
|
|
+ else:
|
|
+ return True
|
|
+ return os.access('/etc/xen/scripts/block-%s' % types[0], os.X_OK)
|
|
+
|
|
+ mounted = _shouldMount(types)
|
|
if mounted:
|
|
# This is a file, not a device. pygrub can cope with a
|
|
# file if it's raw, but if it's QCOW or other such formats
|
|
@@ -3254,7 +3267,8 @@ class XendDomainInfo:
|
|
|
|
from xen.xend import XendDomain
|
|
dom0 = XendDomain.instance().privilegedDomain()
|
|
- dom0._waitForDeviceUUID(dom0.create_vbd(vbd, disk))
|
|
+ vbd_uuid = dom0.create_vbd(vbd, disk)
|
|
+ dom0._waitForDeviceFrontUUID(vbd_uuid)
|
|
fn = BOOTLOADER_LOOPBACK_DEVICE
|
|
|
|
try:
|
|
@@ -3264,8 +3278,10 @@ class XendDomainInfo:
|
|
if mounted:
|
|
log.info("Unmounting %s from %s." %
|
|
(fn, BOOTLOADER_LOOPBACK_DEVICE))
|
|
-
|
|
- dom0.destroyDevice('tap', BOOTLOADER_LOOPBACK_DEVICE)
|
|
+ if devtype in ['tap', 'tap2']:
|
|
+ dom0.destroyDevice('tap', BOOTLOADER_LOOPBACK_DEVICE, rm_cfg = True)
|
|
+ else:
|
|
+ dom0.destroyDevice('vbd', BOOTLOADER_LOOPBACK_DEVICE, rm_cfg = True)
|
|
|
|
if blcfg is None:
|
|
msg = "Had a bootloader specified, but can't find disk"
|