[virt-tools-list] [virt-manager] Disk target generation for new machines

Martin Kletzander mkletzan at redhat.com
Tue Jul 9 12:51:57 UTC 2013


Sorry for the chaos, I've found out already, it's few lines, I'm sending
them in a while.

Martin

On 07/09/2013 12:18 PM, Martin Kletzander wrote:
> Hi,
> 
> I'm trying to fix one problem in VMM and after several hours, I came to
> a conclusion that I'll ask on a list for hints.  When creating new
> machine, we create a disk without bus/target and thus there is a
> conflict in case user adds one more disk with the default bus.  The
> problem is that the new disk gets generates target like 'vda' (neither
> target nor bus are known for the default disk, so the targets that
> should be skipped contain only '[None, None]').
> 
> I managed to "fix" it simply by the following patch (which should be
> applied anyway, since it fixes one apparent problem itself), but the
> problem with the approach is that the default disk gets generated after
> all the other disks ('vdb' if you add one disk).  Removing all the
> targets is obviously not a choice.
> 
> But when the additional disk gets added, all the data for the default
> disk is already visible in the guest XML.  So I'm wondering where the
> problem is.  Either we should be calling redefine_cached() somewhere to
> get the data back into structures or something.  I can't seem to find
> where the disk gets its 'bus' property set.
> 
> Thanks for any hints,
> Martin
> 
> The patch mentioned:
> 
> diff --git a/virtinst/Guest.py b/virtinst/Guest.py
> index ffcddca..8a3cf3d 100644
> --- a/virtinst/Guest.py
> +++ b/virtinst/Guest.py
> @@ -1351,6 +1351,7 @@ class Guest(XMLBuilderDomain.XMLBuilderDomain):
> 
>          # Generate disk targets, and set preferred disk bus
>          used_targets = []
> +        to_generate = []
>          for disk in devlist_func(VirtualDevice.VIRTUAL_DEV_DISK):
>              if not disk.bus:
>                  if disk.device == disk.DEVICE_FLOPPY:
> @@ -1367,7 +1368,10 @@ class Guest(XMLBuilderDomain.XMLBuilderDomain):
>              if disk.target:
>                  used_targets.append(disk.target)
>              else:
> -                used_targets.append(disk.generate_target(used_targets))
> +                to_generate.append(disk)
> +
> +        for disk in to_generate:
> +            used_targets.append(disk.generate_target(used_targets))
> 
>          # Set sound device model
>          sound_model  = self._lookup_device_param(soundtype, "model")
> 
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
> 




More information about the virt-tools-list mailing list