- 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:
committed by
Git OBS Bridge
parent
e6b6844bcf
commit
fe31f9be81
@@ -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))
|
||||
|
Reference in New Issue
Block a user