virt-manager/virtinst-xenbus-disk-index-fix.patch
Charles Arnold 8d6890f068 - Update to virt-manager 2.1.0 (fate#326786)
virt-manager-2.1.0.tar.bz2
  virtman-fix-env-script-interpreter.patch
  * Bash autocompletion support (Lin Ma, Cole Robinson)
  * UI and command line –vsock support (Slavomir Kaslev)
  * virt-xml: Add –os-variant option (Andrea Bolognani)
  * virt-install: use libosinfo cpu, mem, disk size defaults (Fabiano Fidencio)
  * virt-install: Better usage of libosinfo -unknown distro IDs (Fabiano Fidencio)
  * virt-install: More usage of libosinfo for ISO –location detection
  * virt-install: Add –location LOCATION,kernel=X,initrd=Y for pointing to kernel/initrd in media that virt-install/libosinfo fails to detect
- Drop
  25b88733-urldetect-Dont-overload-suse_content-variable.patch
  9308bae3-util-Fix-typo-vpcu-vcpu.patch
  b8aff280-virtinst-quickfix-ubuntu-net-preseed-insert-cdrom-error.patch
  c30b3bc6-increase-timeout-for-vm-to-start.patch
  virtinst-use-latest-opensuse-version-when-unknown-media.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=456
2019-02-04 18:46:20 +00:00

45 lines
1.9 KiB
Diff

Reference: bnc#872789
This is an indexing problem created by virt-manager. It knows not
to add two IDE disks of the same name (eg, 'hda' twice) or two Xen
disks of the same name (eg, 'xvda' twice) but with the different bus
types (ide vs xen) it added xvda with hda. These disks were then
passed to qemu where it error'ed out with the disks having the same
index (in this case both are 0).
Index: virt-manager-2.1.0/virtinst/devices/disk.py
===================================================================
--- virt-manager-2.1.0.orig/virtinst/devices/disk.py
+++ virt-manager-2.1.0/virtinst/devices/disk.py
@@ -901,6 +901,17 @@ class DeviceDisk(Device):
:returns: generated target
"""
prefix, maxnode = self.get_target_prefix(skip_targets)
+ postfix_targets = []
+ if self.conn.is_xen():
+ prefixes = [ "hd", "xvd", "vd", "sd", "fd" ]
+ for x in skip_targets:
+ if x is None:
+ continue
+ for p in prefixes:
+ found = x.split(p,1)
+ if found and len(found) == 2:
+ postfix_targets.append(found[1])
+ break
skip_targets = [t for t in skip_targets if t and t.startswith(prefix)]
skip_targets.sort()
@@ -914,7 +925,12 @@ class DeviceDisk(Device):
ran = range(pref_ctrl * 7, (pref_ctrl + 1) * 7)
for i in ran:
- gen_t = prefix + self.num_to_target(i + 1)
+ postfix = self.num_to_target(i + 1)
+ gen_t = prefix + postfix
+ if self.conn.is_xen() and postfix in postfix_targets:
+ if gen_t in skip_targets:
+ skip_targets.remove(gen_t)
+ continue
if gen_t in skip_targets:
skip_targets.remove(gen_t)
continue