From 7fc7e94f211676b9a958662cb93edf770f23273c Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Wed, 22 Nov 2017 14:58:12 -0500 Subject: [PATCH] addhardware: Fix virtio-scsi controller target calculation More details here: https://www.redhat.com/archives/virt-tools-list/2017-November/msg00014.html Reported-by: Lin Ma --- virtManager/addhardware.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py index cd82cd3e6..4a962e6ff 100644 --- a/virtManager/addhardware.py +++ b/virtManager/addhardware.py @@ -20,7 +20,6 @@ import logging import traceback -import collections from gi.repository import Gtk from gi.repository import Gdk @@ -1455,13 +1454,18 @@ class vmmAddHardware(vmmGObjectUI): if x.model == controller_model] # Save occupied places per controller - occupied = collections.defaultdict(int) + occupied = {} for d in used_disks: if d.get_target_prefix() == disk.get_target_prefix(): num = virtinst.VirtualDisk.target_to_num(d.target) - occupied[num / 7] += 1 + idx = num // 7 + if idx not in occupied: + occupied[idx] = [] + if d.target not in occupied[idx]: + occupied[idx].append(d.target) + for c in ctrls_scsi: - if occupied[c.index] < 7: + if c.index not in occupied or len(occupied[c.index]) < 7: controller = c break else: