- bnc#564406 - Make the new PV drivers work with older hosts that

do not understand the new PV driver protocol. 

- Upstream Xen version renamed to 4.0.0 in changeset 20624 & 20625. 

- fate#307594: HP-MCBS: XEN: support NR_CPUS=256 
  This is a spec file change (xen.spec)

- bnc#555152 - "NAME" column in xentop (SLES11) output limited to
  10 characters unlike SLES10
  The update to c/s 20572 includes this fix (at c/s 20567).

- Modify xen-paths.diff 

- Merge xend-tap-fix.patch to xen-domUloader.diff
  remove part of it which accepted by upstream

- Load gntdev module in xend init script similar to blkbk,
  netbk, etc.

- Backport dmmd from sles11/xen
  block-dmmd
  xen-qemu-iscsi-fix.patch
  xen.spec 

- Fix regression when create_vbd for tap
  xend-tap-fix.patch

- Temporarily disable libxl because of libconfig dependency. 

- fate#302864 domUloader support lvm in disk
  domUloader.py
  Note: for test in Beta1, if not good, remove it

- fate#302864 domUloader support fs on whole disk
  domUloader.py

- Turn KMPs back on now that kernel side fix is checked in. 

- fate#304415 VMM: ability to switch networking mode
  Add vif-route-ifup to handle routed configurations using
  sysconfig scripts.
  vif-route-ifup.patch

- fate#307540 USB for Xen VMs
  usb-add.patch

- fate#305545 XEN extra descriptive field within xenstore
  add_des.patch

- Update to Xen version 3.5.0 for the following features. 
  fate#304226 XEN: FlexMigration feature of VT-x2 support
  fate#305004 Add SR-IOV PF and VF drivers to Vt-d enabled Xen
  fate#306830 T states in Xen controlling by MSR
  fate#306832 Fix for xen panic on new processors
  fate#306833 Westmere and Nehalem-EX: Add support for Pause Loop exiting feature for Xen
  fate#306835 Xen: server virtual power management enhacement
  fate#306837 VT-d2 - PCI SIG ATS support
  fate#306872 Xen: Node manager support P/T-states change when Vt-d enable
  fate#306873 Xen: SMP guest live migration may fail with hap=1 on NHM
  fate#306875 Westmere: LT-SX (Xen)
  fate#306891 RAS features for Xen: Add support for Machine Check and CPU/Memory online/offline features
  fate#307322 1GB page support in Xen
  fate#307324 Xen IOMMU support

OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=26
This commit is contained in:
Charles Arnold
2010-01-16 00:12:54 +00:00
committed by Git OBS Bridge
parent e6b6844bcf
commit fe31f9be81
117 changed files with 1894 additions and 3557 deletions

View File

@@ -87,6 +87,7 @@ class Wholedisk:
self.mapped = 0
self.partitions = []
self.pcount = 0
self.lvm = False
# Finish initialization; may raise:
self.is_blk = (S_ISBLK(os.stat(pdev)[ST_MODE]))
self.pcount = self.scanpartitions()
@@ -104,6 +105,8 @@ class Wholedisk:
for part in self.partitions:
if vdev == part.vdev:
return part
if len(self.partitions):
return self.partitions[0]
return None
def loopsetup(self):
@@ -152,6 +155,31 @@ class Wholedisk:
os.system("kpartx %s -d '%s'" % (kpartx_args, self.physdev()))
time.sleep(0.1)
retries -= 1
def scanlvmpartitions(self):
pcount = 0
verbose_print("vgchange -ay '%s'" % (self.vdev))
ret = os.system("vgchange -ay '%s' > /dev/null 2>&1" % (self.vdev)) >> 8
if not ret:
self.lvm = True
verbose_print("lvscan | grep '/dev/%s'" % (self.vdev))
fd = os.popen("lvscan | grep '/dev/%s'" % (self.vdev))
for line in fd.readlines():
line = line.strip()
(t1, lvname, t2) = line.split('\'')
pname = lvname[lvname.rfind('/')+1:]
pname = pname.strip()
pname = "/dev/mapper/" + self.vdev + "-" + pname
verbose_print("Found partition: vdev %s, pdev %s" % (self.vdev, pname))
self.partitions.append(Partition(self, self.vdev, pname))
pcount += 1
fd.close()
verbose_print("vgchange -an '%s'" % (self.vdev))
os.system("vgchange -an '%s' > /dev/null 2>&1" % (self.vdev))
else:
verbose_print("vgchange -ay %s ... failed: -%d" % (self.vdev, ret))
return pcount
def scanpartitions(self):
"""Scan device for partitions (kpartx -l) and set up data structures,
@@ -159,6 +187,7 @@ class Wholedisk:
self.loopsetup()
# TODO: We could use fdisk -l instead and look at the type of
# partitions; this way we could also detect LVM and support it.
verbose_print("kpartx %s -l '%s'" % (kpartx_args, self.physdev()))
fd = os.popen("kpartx %s -l '%s'" % (kpartx_args, self.physdev()))
pcount = 0
for line in fd.readlines():
@@ -175,6 +204,12 @@ class Wholedisk:
self.partitions.append(Partition(self, '%s%i' % (self.vdev, pno), pname))
pcount += 1
fd.close()
# Try lvm
if not pcount:
pcount = self.scanlvmpartitions()
# Add self to partition table
if not pcount:
if self.ldev:
ref = self
@@ -185,12 +220,19 @@ class Wholedisk:
def activatepartitions(self):
"Set up loop mapping and device-mapper mappings"
verbose_print("activatepartitions")
if not self.mapped:
self.loopsetup()
if self.pcount:
verbose_print("kpartx %s -a '%s'" % (kpartx_args, self.physdev()))
fd = os.popen("kpartx %s -a '%s'" % (kpartx_args, self.physdev()))
fd.close()
if self.pcount and self.lvm:
verbose_print("vgchange -ay '%s'" % (self.vdev))
ret = os.system("vgchange -ay '%s' > /dev/null 2>&1" % (self.vdev)) >> 8
if not ret:
verbose_print("lvchange -ay '%s'" % (self.vdev))
os.system("lvchange -ay '%s' > /dev/null 2>&1" % (self.vdev))
self.mapped += 1
def deactivatepartitions(self):
@@ -198,6 +240,7 @@ class Wholedisk:
Will never raise.
"""
verbose_print("deactivatepartitions")
if not self.mapped:
return
self.mapped -= 1
@@ -206,6 +249,17 @@ class Wholedisk:
verbose_print("kpartx %s -d '%s'" % (kpartx_args, self.physdev()))
fd = os.popen("kpartx %s -d '%s'" % (kpartx_args, self.physdev()))
fd.close()
if self.pcount and self.lvm:
verbose_print("lvchange -an '%s'" % (self.vdev))
ret = os.system("lvchange -an '%s' > /dev/null 2>&1" % (self.vdev)) >> 8
if ret:
time.sleep(0.3)
os.system("lvchange -an '/dev/%s' > /dev/null 2>&1" % (self.vdev))
verbose_print("vgchange -an '%s'" % (self.vdev))
ret = os.system("vgchange -an '%s' > /dev/null 2>&1" % (self.vdev)) >> 8
if ret:
time.sleep(0.3)
os.system("vgchange -an '%s' > /dev/null 2>&1" % (self.vdev))
self.loopclean()
def __del__(self):
@@ -375,7 +429,9 @@ def main(argv):
"Help output (usage info)"
global verbose, quiet, dryrun
print >> sys.stderr, "domUloader usage: domUloader [--output=fd] [--quiet] [--dryrun] [--verbose]\n" +\
"[--args] [--help] --entry=dev:kernel[,ramdisk] physdisk [virtdisk]\n"
"[--args] [--help] --entry=dev:kernel[,ramdisk] physdisk [virtdisk]\n" +\
"\n" +\
"dev format: hd[a-p][0-9]*, xvd[a-p][0-9]*, LVM-vgname-lvname\n"
print >> sys.stderr, __doc__
try:
@@ -432,6 +488,8 @@ def main(argv):
os.chmod(tmpdir, 0750)
vdev, kernel, ramdisk = parseEntry(entry)
if vdev[:vdev.find('-')] == "LVM":
vdev = vdev.split('-')[1]
if not vdisk:
vdisk = getWholedisk(vdev)
verbose_print("vdisk not specified; guessing '%s' based on '%s'" % (vdisk, vdev))