virt-manager/virtinst-xenbus-disk-index-fix.patch
Charles Arnold f88a913443 - jsc#SLE-16582, Upgrade virt-manager >= 3.x
* Slim down filesystem device editor UI
  * Fix TOCTTOU virt-install bugs (Martin Pitt)
  * Several other bug fixes
  virt-manager-3.2.0.tar.bz2
- Drop patches contained in new tarball
  1a1e4580-cloner-Explicitly-reject-network-disks-we-dont-know-how-to-clone.patch
  2773bc35-storagepool-cleanup-volumes-on-pool-cleanup.patch
  b1328202-devices-disk-Skip-check_path_search-for-path.patch
  virtman-append-usr-sbin-to-search-path.patch

- Upstream bug fixes (bsc#1027942)
  1a1e4580-cloner-Explicitly-reject-network-disks-we-dont-know-how-to-clone.patch
  2773bc35-storagepool-cleanup-volumes-on-pool-cleanup.patch
  b1328202-devices-disk-Skip-check_path_search-for-path.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=525
2020-11-16 17:09:49 +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-3.2.0/virtinst/devices/disk.py
===================================================================
--- virt-manager-3.2.0.orig/virtinst/devices/disk.py
+++ virt-manager-3.2.0/virtinst/devices/disk.py
@@ -896,6 +896,17 @@ class DeviceDisk(Device):
:returns: generated target
"""
prefix, maxnode = self.get_target_prefix()
+ 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()
@@ -903,7 +914,12 @@ class DeviceDisk(Device):
first_found = None
for i in range(maxnode):
- 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